Linux環境にSwiftインストール1(失敗・メモリ不足)

Pocket

GitHubからswiftをダウンロードしてUbuntuでビルドしましたが、マシンのメモリ不足により断念。以下(1)~(3)のパターンで確認しました。
(1)物理メモリ2GB→メモリ不足エラー
(2)物理メモリ2GB+スワップ2GB→メモリ不足エラー
(3)物理メモリ2GB+スワップ8GB→マシン電源ダウン

メモリが8GB程度か物理4GB+スワップでいけるのかもしれませんが、eeebookを使ったのでメモリが増設できません。

Swiftの公式ブログでswiftのスナップショット(ビルド済みファイル)を見付けたので、こちらを利用することにしました。次の記事「Linux環境にSwiftインストール(成功・スナップショット利用)」で改めて挑戦します。

今回失敗した作業も一通りまとめたので、以下を投稿。


ITmediaの記事からリンクを辿り、作業を進めました。GitHub上のソースコードをDL、ビルドする手順で進めます。

確認した環境は以下。
OS:Ubuntu 15.04

GitHubにswiftが公開されているので、ダウンロード。同ページにあるドキュメント(README.md)に従ってインストールを進めます。

記事の最後に適当な日本語訳を載せました。まずは構築手順から。

OS X、Ubuntu Linux LTX、最新のUbuntu Linux releaseがサポートされていると書いてあります。

①インストール前準備

OS Xは最新のXcodeが必要で、Ubuntuは以下の開発依存環境が必要とのこと。

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

Ubuntu 14.04 LTSベースの場合、clangコンパイラをアップグレードせよとあるが、今回は15.04なのでスキップ。

②Swiftダウンロード
以下コマンドでGitHubからダウンロード(クローン)。

git clone https://github.com/apple/swift.git

swiftフォルダ内にあるupdate-checkoutコマンドを実行。

cd swift
./utils/update-checkout --clone-with-ssh

CMakeのバージョンを確認。3.0.2だったのでとりあえずOKそう。

cmake --version

Ninjaも必要とか言われているので、GitHubからダウンロード。

cd ~
git clone https://github.com/ninja-build/ninja.git

もしくは以下のコマンドでもOKとの事。

git clone git@github.com:ninja-build/ninja.git

Swiftのビルドテスト。

utils/build-script -h

とりあえず問題なさそうなので、本当にビルド。

utils/build-script -t

長い!マシンスペックによるのかもしれませんが、1時間ぐらいかかりました。挙句エラー。海外のサイトで、メモリ不足とのコメントを見かけました。。。確かにひどいラグあるし、CPU/メモリともに使用度!!

とりあえず何回もトライしていくと、ビルド数が減っていくようです。(危険な気もするのですが)

今回の構築はマシン買い替えるほどではないので、トライ&エラーの繰り返しでビルドを続けました。最後の5個が必ずエラーになるので、CUIで起動して実行しましたが変わらず。

とりあえずswap領域を与えてみることに。

sudo dd if=/dev/zero of=/var/cache/swap bs=1M count=2048
sudo mkswap /var/cache/swap
sudo swapon /var/cache/swap

再実行しましたが変わらずメモリ不足のエラーが出たため、スワップ領域を8GBに増やしました。

sudo dd if=/dev/zero of=/var/cache/swap bs=1M count=8192
sudo mkswap /var/cache/swap
sudo swapon /var/cache/swap

電源ダウン。メモリ使用量が多すぎるせいか、数回試しても同じだったのでこのアプローチは諦める事にしました。新しいマシン買うほど喫緊の作業でもないので。。。

別の方法を探してネットを巡っていると、公式ブログでビルド済みのswiftがダウンロードできるのを見つけました。次の記事でこちらからインストールしてみます。

しかし今回の作業を取り消すとして、消すファイルがどれか完全に把握できていないので、後始末が大変。。。ホームフォルダのNinjaとSwift関連フォルダのみ削除しておきます。ライブラリとかコマンドで入っちゃったやつがあるかもですが、探し出すのも大変なので暫定放置。

cd ~
rm -rf ninja
rm -rf swift*

以下はGitHub上のSwiftのREADME.mdを日本語訳した内容。機械翻訳レベルな部分も多いので、あくまで参考程度に。


Swiftにようこそ!

Swiftは高性能なシステム・プログラミング言語です。クリーンでモダンな構文で、既存のCとObjective-Cのコードとフレームワークにシームレスなアクセスを提供し、メモリも安全です。

Objective-Cと多くの他の言語に影響を受けていますが、SwiftはC由来の言語ではありません。完全に独立した言語で、Swiftはフロー制御、データ構造、機能、オブジェクトのような高水準な構成、プロトコル、クロージャ、ジェネリクスのような中心的な特徴をパッケージします。

Swiftはモジュールを含み、ヘッダの必要性やそれらが引き起こすコードの重複を除去します。

ドキュメンテーション

ドキュメンテーションを読むために、Sphinxドキュメンテーション生成ツールのインストールから始めて下さい。
(コマンドラインから「easy_install -U sphinx」を実行するとよい)

一度そうすれば、docsの中でmakeを打ち込む事でSwiftのドキュメンテーションをビルドする事ができます。

これはdocs/_build/htmlディレクトリ内のHTMLでdocディレクトリの.rstファイルをコンパイルします。

docsの多くは古いですが、docsディレクトリで幾つかのデザインされた文書の歴史を見る事が出来ます。

ドキュメンテーションの他のソースは、それ自体が標準的なライブラリで、stdlibに位置します。言語の多くは実際にライブラリで実装されます(Intを含む)。そして標準ライブラリは今日表現することのできる幾つ以下の例を提供します。

入門
これらの説明は、Swift開発環境を動かす直接的なパスを与えます。異なる事を行うためのオプションは以下で検討します。

動作環境
OS X、Ubuntu Linux LTSと最新のUbuntu Linuxリリースが現在サポートされる開発OSです。OS Xのためには最新のXcodeを必要とします。

Ubuntuのためには、以下の開発依存を必要とします。

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

注:LLDBは現在少なくともswig-1.3.40を必要とするが、バージョン2をUbuntuが輸送する(提供している?)なら、ビルドは成功する。

Ubuntu 14.04 LTS上にビルドしているなら、C++14のcコンパイラをアップグレードし、symlinkを生成する必要があります。

sudo apt-get install clang-3.6
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-3.6 100
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-3.6 100

Swiftと関連プロジェクトの取得
・HTTPSを用いる場合
HTTPSを使って読み込み専用でソースをチェックアウトする

git clone https://github.com/apple/swift.git
cd swift
./utils/update-checkout --clone

・SSHを用いる場合
直接コミットを行う計画のある人にとっては、SSHによるクローンを行うことは良い経験をもたらすかもしれません。(GitHubへのSSHキーアップロードが必要)

git clone git@github.com:apple/swift.git
cd swift
./utils/update-checkout --clone-with-ssh

CMakeはプロジェクトに伴い、Swiftのビルド構成で中心的な基盤です。

少なくともバージョン2.8.12.2を必要とします。あなたのLinuxディストリビューションは、恐らくインストールする事が出来るCmakeが既にあります。OS X上で、ダウンロードできるCMakeのバイナリディストリビューション、アプリケーションとしてビルドされたものを/Applicationにコピーし、コマンドラインツールにPATHを追加して下さい。

export PATH=/Applications/CMake.app/Contents/bin:$PATH

Ninjaは現在Swiftのビルドで推奨されており、CMakeによる標準の構成を自動生成します。もしOS X上か、Linuxディストリビューションの一部にインストールしないなら、他のプロジェクトの次にクローンして下さい。自動的にブートします。

git clone https://github.com/ninja-build/ninja.git

または

git clone git@github.com:ninja-build/ninja.git

Homebrewのようなサードパーティのパッケージツールを使用しているOS X上に、CMakeとNinjaをインストールすることもできます。

brew install cmake ninja

またはMacPorts

sudo port install cmake ninja/bash]

<strong>Swfitのビルド</strong>
このビルドスクリプトは高水準ビルド自動化スクリプトで、Swift互換LLDBのような基本的なオプションをサポートします。Swiftパッケージマネージャのビルド、iOSのビルド、ビルド後のテスト実行、等。

一般的なビルドオプションの組み合わせを定義できるか、あらかじめセットしてサポートします。

より多くを見てください。
utils/build-script -h

注:「–」の後の引数は前方の「build-script-impl」を超えて、実際のビルドとテストコマンドを実施する最終的なシェルスクリプト。

Swiftをビルドし、Ninjaによる基本的なテストを走らせなさいという基本的な命令:

utils/build-script -t

Xcode内でSwift開発
Xcode IDEはSwiftコードの編集に使う事ができますが、現在OS X以外のSDKのための開発環境として十分サポートされるものではありません。

他のSDKのためにビルドしたいなら、一度Ninjaを使うかCmake自動生成のサポートの一つを使ってSwiftをビルドするなら、ビルドスクリプトの-Xフラグを使ったIDEのみのXCodeの開発環境をセットアップすることができます:

utils/build-script -X --skip-build -- --reconfigure

「–skip-build」フラグは完全にはビルドせず、ビルドスクリプトにプロジェクトの生成だけを伝えます。LLVMツールのベアな最小限がXcodeプロジェクトを構成するよう要求します。

「–reconfigure」フラグはキャッシュされた構成があっても、ビルドスクリプト-implにCmake構成ステップを実行するように伝えます。Xcodeの開発で、生成したXcodeプロジェクトの更新、新しいターゲットをピックアップ、ファイル移動、ファイル追加のリフレッシュのために時々再実行する必要があるかもしれません。

Swiftのテスト
docs/Testing.rstを見てください。

Swiftに貢献
Swiftへの貢献は歓迎されます!ぜひSwiftガイドの寄稿を見てください。

とても大きなコミュニティであるため、Swift.orgは幅広い経験、様々なバックグラウンドで、全ての分野から開発者を歓迎する必要があります。

多様で親しみやすいコミュニティにはより多くのすばらしいアイディアがあり、よりユニークな見方があり、素晴らしいコードを生み出します。Swiftコミュニティが誰でも歓迎するよう一生懸命に働きます。これらの価値を明瞭にすると思います。

このドキュメントは多くのオープンソースコミュニティに跨って使われます。
より多くは、このウェブサイトを見てください。

広告

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です