Ubuntu Weekly Recipe

第201回 Arkoseを使ってサンドボックスでアプリケーションを動かす

この記事を読むのに必要な時間:およそ 3 分

ArkoseはLXCを用いたサンドボックス環境を簡単に作成できるツールです。Arkoseを使うと,既存の環境に変更を加えることなく,アプリケーションのインストールしたり,実際に動作を試すことができます。

そこで今回は,このArkoseの使い方を紹介します。

Arkoseとは

Arkoseは,LXC(Linux Containers)と呼ばれる仮想化技術を用いた,CanonicalのStephane Graberが開発しているデスクトップアプリケーション用のサンドボックスツールです。

Ubuntuには数多くのデスクトップアプリケーションが存在し,ソフトウェアセンターを使えばそれらを簡単にインストールすることができます。しかしながら,そのアプリケーションが本当に目的に適ったものかどうかは実際にインストールして試してみる他ありません。試してやはり必要ないとなったときに,アンインストールすることで,できるだけインストール前の環境に戻したいというのが人情です。

幸いDebian/Ubuntuの強力なパッケージ管理システムとポリシーに従った公式リポジトリのパッケージを使っている限り,アンインストールするだけでインストールする前の環境に戻すことができます。ただし非公式リポジトリのパッケージをインストールしたり,Debianパッケージになっていないソフトウェアをインストールする場合はこの限りではありません。そもそもテストが終わるまでは本番環境へのインストール自体を避けたいという考え方もあるかもしれません。

Arkoseを使うと,アプリケーションのインストール,実行,アンインストールまでを本番とは独立した環境で行えます。

同様のことはVirtualBoxやKVMといった仮想マシンを使うことでも実現可能ではあるものの,これらはまず最初にテスト用の仮想マシンの準備が必要です。また,LXCは他の仮想化技術と比べてオーバーヘッドが小さく,実環境とほぼ同じ速度でアプリケーションを実行できるというメリットがあります。ユーザーランド部分もできる限り既存のものを流用するため,ディスクスペース的にも優しい作りになっています。

ただし,LXCはその仕組み上,仮想環境のゲストとホストが同じカーネルプロセスを使うことになります。このため,異なるカーネルでしか動作しないアプリケーションをテストすることはできません。LXC単体でなら,Ubuntu上に他のOS(のユーザーランド部分)をインストールするような作業も可能ではあるのですが,そのためにはいろいろとプラットフォーム固有の設定を行う必要があります。

ArkoseはあくまでUbuntu上でアプリケーションをテストするためのツールだと思っておいた方が良いでしょう。

ちなみに,ArkoseはほぼすべてがPythonを使って作成されています。PythonでLXCを操作したい場合はArkoseのコードを参考にすると良いかもしれません。

Arkoseを使ったアプリケーションの起動

まずはArkoseをインストールします。

$ sudo apt-get update
$ sudo apt-get install arkose arkose-gui

arkose-guiは,アプリケーションの起動や権限の設定をグラフィカルに行えるGUIツールです。上記以外にもArkoseのツールとして,Nautilusから右クリックで特定のスクリプトをサンドボックスで実行できるarkose-nautilusが存在しますが,こちらはまだGNOME 3への対応が終わっていません。

GUIアプリケーションを動作させるためには,DBusまわりの環境変数を設定するために,インストール後に一度ログアウトして再度ログインする必要があります。

実際に端末からArkose越しにGeditを起動してみましょう。

$ sudo arkose -n -c gedit

"-n"オプションはサンドボックスからネットワークを使用することを示すフラグです。GUIアプリケーションの場合は,XやDBUSなどでネットワークを使う必要があるため,このオプションは必須と考えて差し支えありません。"-c"オプションの後ろで,実際に起動するコマンドを指定しています。

図1 通常のGedit(左)とArkoseで起動したGedit(右)

図1 通常のGedit(左)とArkoseで起動したGedit(右)

図1では普通に起動したGeditとArkoseで起動したGeditを並べてみました。見た目にはメニュー意外ほとんど違いはありませんが,実際に動作させてみるとWindow間のタブの移動ができなくなっていることがわかります。なお,メニューも同じにする(UbuntuのGlobalMenuを使う)には,DBusの設定が必要です。

仮想環境のイメージや設定ファイル,ディレクトリは"~/.arkose/"に生成される一時ディレクトリに保存されます。そのため,例えばサンドボックス内で新たなファイルを生成した場合は,必要に応じてこのディレクトリから取り出すことができます。ちなみに,ホームディレクトリも同じように一時ディレクトリにCopy-on-Write(COW)で生成されますが,"-h"オプションをつけることで既存のホームディレクトリをそのまま流用することもできます。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入