はじめに
Appleが開発したSwiftがオープンソースになって、Linux上で動くようになりました。公式バイナリはUbuntu版しかありませんが、これを利用した"swift-bin"パッケージがAURに登録されています。これをそのまま利用できればよかったのですが、一筋縄ではいかないので工夫しましょう、というのがこの記事です。
ちなみに、ソースコードからビルドする"swift"というパッケージもありますが、これはこれでビルドにこけたりするのであまりおすすめしません。
PGP鍵のインポート
依存関係でインストールされるパッケージの中には鍵の照合を行うものがあります。しかしその鍵は自動でインポートしてくれません。インストールを行う前に、手動でインポートする必要があります。今回は2種類の鍵をインポートします。
$ gpg --keyserver pgp.mit.edu --recv-keys F7E48EDB
$ wget -q -O - https://swift.org/keys/all-keys.asc | gpg --import -
先にインポートした鍵は依存関係でインストールされる"ncurses5-compat-libs"のためのもので、後にインポートした鍵はswift-binのためのものです。
依存関係の解決
リポジトリにあるlibtinfoのバージョンが6になってしまいましたが、Swiftはバージョン5を要求しています。swift-binパッケージの依存関係では6系がインストールされ、動作に支障があるので5系をインストールします。AURにあるパッケージなので、yaourtを用いてインストールを行います。
$ yaourt -S libtinfo-5
2016年4月27日に、依存関係として登録されていたlibtinfoがlibtinfo-5に変更されたため、この作業は必要なくなりました。
Swiftのインストール
ここに来てやっとSwiftがインストールできます。
$ yaourt -S swift-bin
動作確認
バージョン確認
--versionで確認できます。
$ swift --version
Swift version 2.2 (swift-2.2-RELEASE)
Target: x86_64-unknown-linux-gnu
対話環境のテスト
対話環境を試してみます。対話環境はCtrl+Dで抜けられます。
$ swift
Welcome to Swift version 2.2 (swift-2.2-RELEASE). Type :help for assistance.
1> 1 + 1
$R0: Int = 2
2> print("Hello World")
Hello World
3> let num = 2
num: Int = 2
4> num * 2
$R1: Int = 4
5>
ちなみに対話環境中では常に行末でエンターを押さないと何かおかしいことになります。
% swift
Welcome to Swift version 2.2 (swift-2.2-RELEASE). Type :help for assistance.
1> print("Hello World
2. ")
3.
4.
コンパイラのテスト
コンパイラの動作も確認してみましょう。テスト用のコードを書きます。
let nums = (1...10)
for num in nums {
print(num)
}
コンパイルして実行してみます。
$ swiftc test.swift
$ ./test
1
2
3
4
5
6
7
8
9
10
バッチリですね。
おわりに
そういうわけで、無事にSwiftをArch Linuxにインストールすることができました。Linux上での動作はまだまだ怪しいところがありますが、とりあえず試してみたりだとか、コンパイルできるスクリプト言語の代わりに使ってみるだとか、いろんな方法で遊んでみてください。