Linuxを日常的に使う実験ブログ

Arch LinuxにSwift 3をインストールする

 2017-02-14

 2018-02-12

 Arch Linux

こんにちは。今回のテーマは『Arch LinuxにSwift 3をインストールする』です。手持ちのArch LinuxでもSwiftを動かしたいと思いたちAURからインストールを試みました。結果的にはエラーメッセージは出るものの一応Swift 3.0.1が動くようになりました。不足している点などはご指摘いただけると幸いです。 [adsense02] 【目次】 Arch LinuxにSwift 3.0を入れよう AURリポジトリのSwiftパッケージはビルド困難 swift-binパッケージをインストールする ライブラリ関連のエラーが出てしまう

Arch LinuxにSwift 3.0を入れよう

swiftはObjective-Cに代わるiOSの開発言語として誕生し、オープンソース化したことでiOS開発の範囲を越えて使用する場を広げています。Linuxでもswiftは使用することができ、今後はサーバーサイドの開発でも使用されるのではと考えています。そんなswiftをArch Linuxに導入してみます。

AURリポジトリのSwiftパッケージはビルド困難

AUR(Arch User Repository)にはswiftパッケージとswift-binパッケージがあります。swiftパッケージはソースからビルドするためのパッケージですが、ビルドエラーが起こり2017年2月現在ではインストール困難です。一方、swift-binパッケージはUbuntu向けにビルドされたパッケージなのですが、Arch Linuxでも動かすことができます。今回はこのswift-binパッケージをインストールしていきます。

swift-binパッケージをインストールする

pgpキーのインポート

swift-binパッケージをインストールするにはswift-binとncurses5-compat-libsのgpgキーをインポートする必要があります。各パッケージのpgpキーはPACKAGEBUILDファイルの”validpgpkeys”の値です。(リンク:swift-bin,ncurses5-compat-libs)以下のコマンドでpgpキーをインポートします。

$ gpg —recv-keys <PKGBUILD中の’validpgpkeys’の値>

AURリポジトリの依存パッケージのインストール

公式リポジトリで管理されている依存パッケージに関してはyaourtやpackerで自動インストールされるのですが、AURのパッケージ関しては手動でインストールしておきましょう。ncurses5-compat-libsをAURからインストールします。今回はpackerを使用しますがyaourtでも問題ありません。

$ packer -S ncurses5-compat-libs

swift-binのインストール

準備が整いましたのでswift-binをインストールしていきましょう。特別なことは何もなく、AURから他のパッケージと同様にインストールするだけです。今回はpackerでインストールしますが、PKGBUILDをダウンロードしてきてmakepkgコマンドでインストールしてもOKです。

$ packer -S swift-bin

ライブラリ関連のエラーが出てしまう

以上でArch linux上でもswift 3.xを動かすことはできるようになるのですが、残念なことに上記の方法でインストールするとコンパイル時や実行時に下記のようなエラーが出てしまいます。

/usr/lib/libtinfo.so.5: no version information available

これはUubntu用にビルドした際に用いられたライブラリとシステムにインストールされたライブラリのバージョンの差異からくるものと推察しています。過去にAURに存在したlibtinfo-5やlibtinfo5パッケージがなくなり、現在ではncurses5-compat-libsのインストールで入るlibncursesw.so.5リンクしている状態なので、そこが原因かも知れません。いずれにせよArch上でビルドできるようになることが肝心かと思います。 エラーメッセージは出ますが、コンパイルは可能なのでswiftを書いて動かすということ自体は可能です。プログラミングの学習程度であれば支障は無いかと思います。 (本格的なswiftプログラミングはきっとMacで行うでしょうし…)

最後に

恐らく、現状ではswiftはXcode上で使う機会が最も多く、今後もswiftの主戦場はApple製品向けの開発であることは間違いないと思います。Linux上でswiftを動かせるといっても残念ながらiOS開発はできません。 しかしswiftがオープンソース化してクロスプラットフォームで動作するようになるとRubyやPythonのような用途にも活用の場を広げていくと思います。swiftはコンパイラ言語でありながらスクリプト言語ような手軽さも兼ね備えているので近い将来、Web界隈でも需要が出てくるかも知れませんね。 【関連記事】 Python3でMySQLに接続する環境をLinuxで整える Arch LinuxのパッケージマネージャーYaourtを使ってみる [adsense]