Ubuntu に Swift をインストールする“やさしい”手順

Windows11にインストールしたWSL（Ubuntu）に Swift をインストールする手順をまとめます。

```terminal
$ uname -a
Linux myPC 5.15.153.1-microsoft-standard-WSL2 #1 SMP Fri Mar 29 23:14:13 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04.3 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04.3 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
```

↑この環境で確認しましたが、ここで説明する手順は、Ubuntu のバージョンに依らないと思います。

_**すべてのコマンドは、ubuntu ターミナルで実行します。**_

# 1. 前提ライブラリをインストール

```terminal
$ sudo apt update
$ sudo apt install -y gcc-multilib
```

# 2. Swiftアーカイブをダウンロード

https://www.swift.org/download/

↑こちらのサイトから、該当するUbuntuバージョンとCPUアーキテクチャに対応するアーカイブURLを確認して、`wget`でダウンロードする。

> 例えば、Ubuntu 22.04.3 LTS、インテルCPUの場合のアーカイブURL：`https://download.swift.org/swift-5.10.1-release/ubuntu2204/swift-5.10.1-RELEASE/swift-5.10.1-RELEASE-ubuntu22.04.tar.gz`

```terminal
$ wget https://download.swift.org/swift-5.10.1-release/ubuntu2204/swift-5.10.1-RELEASE/swift-5.10.1-RELEASE-ubuntu22.04.tar.gz
```

# 3. 解凍（デプロイ）

ダウンロードしたアーカイブファイル名を`ls`で確認して`tar`で解凍する。

```terminal
$ ls
swift-5.10.1-RELEASE-ubuntu22.04.tar.gz

$ tar xzf swift-5.10.1-RELEASE-ubuntu22.04.tar.gz
```

`./swift-5.10.1-RELEASE-ubuntu22.04/usr/`配下に展開される。

# 4. PATHの追加

```terminal
$ export PATH=/path/to/usr/bin:"${PATH}"
```

必要により、`.bashrc`等に追加しておく。

今回は、以下のパスを追加した。

```terminal
$ export PATH=$HOME/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin:"${PATH}"
```

以上で、インストール完了です。
実際に動作確認します。



# 5. 確認

```terminal
$ swift --version
Swift version 5.10.1 (swift-5.10.1-RELEASE)
Target: x86_64-unknown-linux-gnu
```

```terminal
$ cat hello.swift
print("Hello!")

$ swift hello.swift
Hello!
```

```terminal
$ swiftc hello.swift

$ ls
hello  hello.swift

$ ./hello
Hello!
```

```terminal:Swift Package
$ mkdir swift_pj
$ cd swift_pj
$ swift package init --type executable
Creating executable package: swift_pj
Creating Package.swift
Creating .gitignore
Creating Sources/
Creating Sources/main.swift

$ swift run
Building for debugging...
[8/8] Linking swift_pj
Build complete! (2.33s)
Hello, world!
```

Replも確認しておきます。

```terminal:Repl
$ swift repl
Welcome to Swift version 5.10.1 (swift-5.10.1-RELEASE).
Type :help for assistance.
  1> print("hello")
hello
  2> ^D
```

すべて期待通りに動きました。

---

最後に、関連パスを確認しておきます。

```terminal
$ swift -v -print-target-info
Swift version 5.10.1 (swift-5.10.1-RELEASE)
Target: x86_64-unknown-linux-gnu
/home/nak435/swift-5.10.1-RELEASE-ubuntu22.04/usr/bin/swift-frontend -frontend -print-target-info -target x86_64-unknown-linux-gnu
{
  "compilerVersion": "Swift version 5.10.1 (swift-5.10.1-RELEASE)",
  "target": {
    "triple": "x86_64-unknown-linux-gnu",
    "unversionedTriple": "x86_64-unknown-linux-gnu",
    "moduleTriple": "x86_64-unknown-linux-gnu",
    "compatibilityLibraries": [ ],
    "librariesRequireRPath": false
  },
  "paths": {
    "runtimeLibraryPaths": [
      "/home/nak435/swift-5.10.1-RELEASE-ubuntu22.04/usr/lib/swift/linux"
    ],
    "runtimeLibraryImportPaths": [
      "/home/nak435/swift-5.10.1-RELEASE-ubuntu22.04/usr/lib/swift/linux",
      "/home/nak435/swift-5.10.1-RELEASE-ubuntu22.04/usr/lib/swift/linux/x86_64"
    ],
    "runtimeResourcePath": "/home/nak435/swift-5.10.1-RELEASE-ubuntu22.04/usr/lib/swift"
  }
}
```