swiftenvでswiftを導入する
swiftは2016/4現在、3系に向けて開発が進んでいて、
develompemtバージョンはどんどん最新のスナップショットが公開されている
swift package managerを試したりする場合はdevelopmentバージョンが必要だし
swiftのバージョンを簡単に切り替えられるswiftenvを導入してみた
(OSXではXcode7.3でtoolchainsから切り替えられるようになった)
swiftenvのインストール
Linux(Ubuntu)とOSXそれぞれで導入を試してみた
ubuntuの場合
今回はvagrantでubuntu環境を構築してその上でswiftを入れてみる
現在Ubuntuだと15.10と14.04向けのスナップショットがある
https://swift.org/download/#latest-development-snapshots
Ubuntu14.04のvagrant box
https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box
Vagrantfileはこんな感じ
$ grep -v -e '\#' -e "^$" Vagrantfile
Vagrant.configure(2) do |config|
config.vm.box = "ubuntu1410"
config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"
end
パッケージの最新化
sudo apt-get update
swiftenvインストールするために必要なgitを先にインストール
sudo apt-get install git
SwiftのSystem Requirementsに従って以下をインストール
(これ入れておかないとswiftは入るけどビルドで失敗する)
https://github.com/apple/swift/blob/master/README.md
sudo apt-get install git cmake ninja-build clang python uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config
swiftenv導入
https://github.com/kylef/swiftenv
git clone https://github.com/kylef/swiftenv.git ~/.swiftenv
echo 'export SWIFTENV_ROOT="$HOME/.swiftenv"' >> ~/.bash_profile
echo 'export PATH="$SWIFTENV_ROOT/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(swiftenv init -)"' >> ~/.bash_profile
source .bash_profile
OSXの場合
homebrewを使ってインストール
brew install kylef/formulae/swiftenv
echo 'eval "$(swiftenv init -)"' >> ~/.bash_profile
swiftのインストール
swiftenvのインストールが完了したら続いてswift自体のインストールをおこなう
swiftenv install swift-DEVELOPMENT-SNAPSHOT-2016-03-24-a
引数はsnapshotのURLを直接渡してもOK
swiftenv install https://swift.org/builds/swift-2.2-release/ubuntu1404/swift-2.2-RELEASE/swift-2.2-RELEASE-ubuntu14.04.tar.gz
installコマンドに渡すswiftスナップショットの情報はここで確認出来る
https://swift.org/download/#snapshots
swiftのバージョンを切り替えてみる
複数のswiftバージョンを無事導入できたら切り替えも試してみる
まず、導入済みのswiftバージョン一覧を確認する
$ swiftenv versions
* 2.2-RELEASE (set by /home/vagrant/.swiftenv/version)
DEVELOPMENT-SNAPSHOT-2016-03-24-a
swiftのバージョンを確認
$ swift -version
Swift version 2.2 (swift-2.2-RELEASE)
swiftのバージョンをdevelopment-snapshotに変更する
$ swiftenv global DEVELOPMENT-SNAPSHOT-2016-03-24-a
swiftのバージョンを確認
$ swift -version
Swift version 3.0-dev (LLVM b010debd0e, Clang 3e4d01d89b, Swift 7182c58cb2)
無事切り替わった
ちなみに、ヘルプを見ると以下のようになっており
$ swiftenv -h
version Displays the current active Swift version
versions Lists all installed Swift versions
global Sets the global version of Swift
local Sets the local application-specific version of Swift
install Installs a version of Swift
uninstall Uninstalls a specific Swift version
rehash Installs shims for Swift binaries
local
オプションを使用すると特定のディレクトリ配下のswiftバージョンのみ変更できる
swiftenv local xxxx
実行したディレクトリ直下に.swift-version
ファイルが生成され、
DEVELOPMENT-SNAPSHOT-2016-03-24-a
などの
snapshotバージョンが記録され、そのバージョンのswiftが動作することになる