VirtualBox上のUbuntuに開発環境を構築

Last-modified: 2017-04-27 (木) 19:47:39

注意点

  • ディスク容量を大量に消費する(ファイルが21Gもある)
  • ファイルを大量にダウンロードするので、それなりのインターネット環境が必要
  • コンパイルしたりするのに時間がかかる(それなりのCPUパワーとメモリが必要)

予備知識

仮想化は、パソコンの中にもう一台のパソコンがあるかのようにOSを動かす技術です。
仮想化ソフトウェアを動かすほうのOSを「ホストOS」、仮想化ソフトウェアから動かされるほうのOSを「ゲストOS」といいます。

プログラムを作ったり、プログラムを動かしてテストしたり、プログラムを途中で止めて中身を確認できるコンピュータの利用環境を開発環境といいます。
開発環境をひとつ用意しておくと、不具合の検証、バグ修正の内容確認などに便利です。
開発環境では、なんでも出来ますが、そのかわりOSを壊してしまうような危険なことも出来てしまいます。
仮想化開発環境を作っておくと、万が一、OSを壊す操作をしても、壊れるのはゲストOS(仮想化されたほうのOS)で、ホストOS(もとのOS)は壊れません。

仮想化ソフトウェアはVirtualBoxを使います。
VirtualBoxは、無料、Windowsやmac OS(OS X) などで動作する、多くの動作実績がある、情報を探しやすい、また、GUIで操作しやすい、という特長があります。

開発環境のOS(ゲストOS) はUbuntuを使います。
Ubuntuは、無料、再配布自由、安定した動作をする Linuxである、多くの動作実績がある、情報を探しやすい、そこそこ使いやすいデスクトップ環境、開発ツールが揃っている、開発環境を作りやすい、という特長があります。

ここは、VirtualboxやUbuntu(あるいはLinux)のチュートリアルではないので詳細な説明は割愛します。
しかし、Web検索などで、VirtualboxやUbuntuのことを一通り調べておくことをおすすめします。
おそらく、山ほど事例が見つかることでしょう。
特に、VirtualboxのゲストOSとホストOSの切り替え方法やUbuntuにおいてののファイルの編集方法は、調べておいて損はないでしょう。

VirtualBoxのインストール

ホストOSは OS X El Capitan 10.11.6 を使用しましたが、VirtualBoxが動けばOSの違いはあまり関係ないと思います。

まず最初にVirtualBoxをインストールします。

インストールの方法は、ホストOSによって異なりますので、使用するOSに合った適切な方法でインストールしてください。
(例えば、インストーラをダウンロードして、それを実行するなど)

VirtualBox上の仮想環境にUbuntuをインストール

VirtualBox上でUbuntuを動かすには、いくつか方法があります。

1 インストールDVD のisoイメージを使って、自分で仮想マシンを作ってインストールする
2 出来合いのVirtualBoxの仮想マシンのファイルをダウンロードしてきて動かす
また、これ以外にもいくつか方法があります。

ここでは、自分で仮想マシンを作ってインストールする方法を説明します。

Ubuntuのサイトから、isoイメージ(ubuntu-17.04-desktop-amd64.isoなど)をダウンロードしてきます
VirtualBoxのメニュー→「新規」から仮想マシンを作成します(仮想HDDは最低でも25G以上確保してください)
仮想マシンの仮想光学ドライブをダウンロードしてきたisoイメージに設定します。
仮想マシンを立ち上げるとインストーラが起動するので、あとはインストーラに従ってOSをインストールします。

Wesnoth 1.12.x をインストール

ここからはゲストOS(Ubuntu)での作業になります。
また、Ubuntuの端末での作業となります。
端末(gnome-terminal)の起動方法は、画面左上の「コンピューターを検索」から、「アプリケーション」→「インストール済み」→「端末」です。

(念のため)Ubuntuを最新の状態に更新します。

sudo apt updete
sudo apt full-upgrade

sudo というのは、管理者権限でコマンドを実行するコマンドです。
Ubuntuでは、管理者権限を必要最小限にするためsudo を使います。
最初にこのコマンドを実行しようとするとパスワードの入力を求められます。
ログインしたユーザーのパスワードを入力してください。
パスワードは標準では15分有効です。

aptは、Ubuntu(debian)のパッケージ管理のコマンドで、依存関係を調査し必要なパッケージをネットワークなどから自動的にインストールをしてくれるツールです。

Wesnothをインストールします。

sudo apt install wesnoth

インストールできたら、試しに遊んでみて、問題ないか確認します。:-)

Wesnoth 1.12.x の開発環境を構築

CompilingWesnoth

Ubuntu(debian)のしくみを利用して、開発に必要なツールやライブラリをインストールします。
ビルドはSConsCmake のふたつの方法がありますが、ここではSCons を使った手順でビルドを行います。

設定ファイルを修正して、ソースパッケージを取得できる設定にします。
ソースパッケージはパッケージをつくるソースファイル等をひとまとめにしたファイルです。
設定ファイルを修正するには管理者権限が必要なので、安全のため、少し複雑な手順が必要です。

まずは、ファイルのバックアップを取ります。

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak

つぎに、テキストエディタ nano でファイルを開きます。sudo (管理者権限)で実行している点に注意してください。

sudo nano /etc/apt/sources.list

「#deb-src」で始まる行の行頭の「#」を削除します。アンコメントといいます。

#deb-src  …

deb-src …

該当する箇所全てを修正したら、ファイルを保存します。
保存は [Control] + X です。

ファイルの編集はテキストエディタであればいいので、 vim や emacs で編集することもできます。

保存した設定を反映させます。

sudo apt update

updateコマンドで設定が反映され、ソースパッケージのインストールができるようになります。

ビルドに必要なライブラリ群をまとめてインストール。

sudo apt build-dep wesnoth

(かなりの量のファイルをダウンロードするため時間がかかります)

ビルドツールのSConsをいれます。

sudo apt install scons

ソースを入れるディレクトリを作って移動。

mkdir ub_src
cd ub_src

Ubuntuのパッケージのビルドに使われたソースファイル(パッチも含む)をインストール。

apt source wesnoth

(かなりの量のファイルをダウンロードするため時間がかかります)

カレントディレクトリにdebパッケージのソースファイルが展開されます。
ここでは、sudo は使いません。sudoをつけると、ソースファイルの所有者がroot(管理者)になって、かえってややこしくります。

ビルドをするためにディレクトリを移動します。

cd wesnoth-1.12-1.12.6

wesnoth 1.12 をビルド。

scons

(かなり時間がかかります)

ビルドした wesnothを実行。

./wesnoth

Wesnoth 1.13.x(開発版) の開発環境を構築

WesnothRepository

githubから最新版のソースを取ってくるためgit が必要になります。

sudo apt install git

wesnoth 1.13 系で必要となるライブラリをインストール。

sudo apt install libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev libsdl2-ttf-dev libsdl2-net-dev
sudo apt install libboost-random-dev

ソースを入れるディレクトリを作って移動。

mkdir git_src
cd git_src

githubから最新版のソースを取ってきます。

git clone "https://github.com/wesnoth/wesnoth.git" wesnoth

(かなり時間がかかります)

最新版の wesnothを ビルドします。

cd wesnoth
scons

(かなり時間がかかります)

ビルドした wesnothを起動します。

./wesnoth

なお、二回目以降のソース更新は、作業ディレクトリ(wesnoth)に移動して、

git pull

で、変更された差分が更新されます。

二回目以降のビルドは、SConsが更新部分を抽出して、適切にビルドしてくれます。

ビルドに失敗するときは

まず、前提として、開発版はビルドできないことが割りとよくある事だと理解しておきましょう。
開発中のソフトウェアは実に様々な要因で、ビルドできなかったり、実行中に異常終了したり、その他の不具合が起きたりします。

エラーログをよく読んで、原因を突き止め、対策をたてます。

典型的なビルドの失敗はライブラリの依存関係の問題です。

  • 必要なライブラリが追加になったが、まだいれていない
  • 必要なライブラリが古すぎて互換性がない
  • 必要なライブラリが新しすぎて互換性がない

ライブラリの追加や更新はaptを使って行うと便利です。
ライブラリが新しすぎる場合は、ソースが更新されるのを待ちましょう。

ビルドは次のようにすることもあります。

make clean 見たく、前のビルドの中間生成物を全て消す場合。
例えば、ライブラリ中のAPIが変更になった場合など、最初の状態からビルドし直したいときに。

scons -c

強制モード(無理やりにビルドする)
リスキーな方法ですが、ビルドの設定が間違っていた場合になどに、指定するとビルドができる場合があります。

scons --config=fource

開発環境を構築した後

補足

ご意見をどうぞ

  • 仮想ハードディスクイメージのダウンロード先(Ubuntu Japanese Team)の記述が消えとる。これじゃ説明が意味不明だよ…。 -- 2016-08-15 (月) 19:20:37
  • 他の書き換えは目を瞑るにしても、これだけは看過できないな…。(この部分は書き加えました) -- 2016-08-15 (月) 19:23:46
  • Ubuntu 17.04 に合わせてインストール方法を修正しました。また、日本語翻訳を最新版にする方法は全面的に更新し別記事にしました。 -- (す)? 2017-04-26 (水) 21:35:55