今回はMATEデスクトップ環境を自力でビルドし、インストールする方法のうち、ビルドの部分だけを紹介します。インストール方法は次回の【後半】で紹介します。
MATEとは
MATE(マテ)はGNOME 2.xから派生したデスクトップ環境です。Ubuntuでは長らくMATE(プロジェクト)が用意しているパッケージをインストールする以外に使用する方法はなかったのですが[1]、一式がDebianのリポジトリに入り、それにともなって開発中のUbuntu 14.10(Utopic Unicorn)でも使用できるようになりました。
Ubuntu Weekly Topics 2014年7月11日号で紹介されたUbuntu MATE Remixは、そんな開発版をベースにリリースしたようです。
とは言え14.10の開発版を今から使用するのはしんどいですし、せっかくなので自力で14.10向けのパッケージを14.04でビルドしてみたらどうかなと考えました。ちなみにこれをバックポートと言います。PPAにも今のところは14.04向けのMATEはなさそうでした。少なくともMATE 1.8のうちは、将来的にも同じ方法でビルドできると思います。
読み進めていただければわかりますが、パッケージ数が多いので手間はかかりますが、難易度はそんなに高くありません。夏休みに挑戦してみる価値は充分にあるでしょう。
ついでに言うと、筆者はMATEのことはあまり好きではありません。権利関係に疎い人達がやっているという固定観念があるからです。とは言え次期Vine LinuxがMATEをデフォルトにすることを決定したり、また個人的にも(古くても)軽量なデスクトップ環境が必要になり、無視はできなくなった、というのが正直なところです。
準備
何はなくともビルド環境を用意します。今回はVirtualBoxのゲストOSとしてUbuntu Serverをインストールしましたが、LXCやDockerでも良いでしょう。インストール自体の方法はここでは解説しませんが、VirtualBoxの場合[2]はネットワークをブリッジモードにするといろいろ手間が省けます。インストール完了後、適宜アップデートなどを行ってから最低限必要なパッケージをインストールします。
お好みで増減していただきたいところですが、インストールが終わってsshが起動したら、別のPCからログインします。ブリッジモードにしてある場合は
でログインできます。ログイン後、byobuを実行するのも良いでしょう。
VirtualBoxを使用している場合は、Guest Additionsをインストールすると便利です。
新し目のVirtualBoxを使用したい場合は、筆者のリポジトリを追加してください。
インストール後vboxsfグループに自身を追加してから再起動してください。
そしてビルドに最低限必要なパッケージをインストールします。
ホームフォルダー直下にmateというフォルダーを作成し、実際のビルドはここで行うことにします。また、パッケージを入れておくpackageフォルダーも作成します。
今回は頻繁にchangelogを変更します。ここには名前とメールアドレスが入ります。必須ではありませんが、自動的に自分の名前とメールアドレスを入れるようにするには“DEBEMAIL”と“DEBFULLNAME”という環境変数を指定します。例としては、
のような感じで、これを~/.bashrcに追加します。
を実行し、.bachrcを読込し直すとこれらの環境変数を反映します。
準備はこれで完了です。
ビルド
ソースのダウンロード
一番最初にビルドするのは、“mate-common”と言ういかにもなパッケージです。次のコマンドを実行してください。
これでソースのダウンロードと展開は終わりました。早速フォルダーを移動します。
バージョンの変更
次に行うのはパッケージバージョンの変更です。バージョンは必ず元のバージョンよりも低くします。なぜならアップグレードを行った際[3]に、これから作成するパッケージを確実に上書きさせるためです。とくに今回は14.10からソースを取得しているため、14.10やそれ以降にもスムーズにアップグレードできることを期待しますので、整合性を取るという意味で重要な作業です。
今回のmate-commonのバージョンは“1.8.0-2”です、これはハイフン(-)の前後で意味が分かれています。前がmate-commonのアップストリームのバージョンで、後ろがパッケージのリビジョン[4]です。よって、これはmate-commonのバージョンは1.8.0であり、パッケージの変更を2回行ったという意味です。実際にdebian/changelogを読んでみると、そのとおりであることがわかります。たとえアップストリームのバージョンが同じであっても、14.04と14.10ではビルド環境が異なります。ということはライブラリのバージョンが違ったりする可能性もあるので、アップグレードする際にエラーになったりする可能性があります。なので、確実にバージョンを低くするのがシステムを安定的に運用するコツなのです。
パッケージのバージョンは、次のコマンドで変更します。
dchはdebchangeコマンドの短縮形で、-iはdebian/changelogに新しいエントリーを追加します。-DはUbuntuのバージョン[5]を指定します。初回はエディターの選択が表示されるのでお好みのものを指定し、編集画面に移動してください。1行目が
となっています。“ubuntu1”は自動的に付与されます。“trusty”は-Dオプションを反映しています。確実にバージョンを下げるにはチルダ“~”をうまく活用します。
ここではこのように編集します。“2”と“ubuntu1”の間に“~”を入れましたが、これによって
となり、バージョンを低くすることができます。次のコマンドで確認できます。
“gt”は“greater than”、すなわち“>”の意味で、これが成り立つと“ok”を出力します。
“2~ubuntu1”の後ろの“~trusty1”は、わかりやすくするためにつけています。もしパッケージのリビジョンを上げる場合は、“~trusty1”の数字を増やしていくと良いでしょう。また、今回は行いませんが12.04にもバックポートする場合は“~precise1”などとします。この場合も、“~precise1”は“~trusty1”よりもバージョンが低くなる[6]、と言うわけです。
このコマンドを実行すると、“ok”が返ってきます。
少々話は脱線しましたが、今回は“-”の直後の数字と“ubuntu1”の間に“~”を入れ、さらに後ろに“~trusty1”をつける、というポリシーを採用します。
“*”の後ろは変更点を書きますが、“Rebuild for Trusty.”とでもしておけば良いでしょう。使用しているところは見たことありませんが、日本語でも書けるはずです。
このような感じになれば完了です。
ビルドの実行と必要なパッケージのインストール
いよいよビルドを始めます。次のコマンドを実行してください。
“dpkg-buildpackage”はそのままパッケージをビルドするコマンドで、“-r”はユーザー権限でビルドするためにつけているオプションです。“-uc”はchangesファイルへの署名を省略するオプションです。“-b”はバイナリパッケージだけをビルドするオプションで、今回はソースパッケージはビルドしません。
すると、次のようなエラーが出て止まります。
ポイントは“dpkg-checkbuilddeps”の行で、要するにビルドに必要なパッケージが足りないということです。“debhelper”の後ろに“(>= 9)”とありますが、これは“debhelper”パッケージのバージョンが9以上必要という意味です。度々登場しますが、バージョンについてハマるところはとくにないので、今回はこの部分は気にしないでインストールしてしまってください。よって、次のコマンドを実行してビルドに必要なパッケージをインストールします。“dpkg-checkbuilddeps”の行を参考に、
を実行します。
インストールが完了したら、再び次のコマンドを実行します。
しばらく待つとビルドが完了し、1つ上のフォルダーに“mate-common_1.8.0-2~ubuntu1~trusty1_all.deb”というパッケージが作成されています。
今週はここまでにします。後編では簡易リポジトリを作成し、すべてのパッケージをビルドしてからインストールするところまでを行います。お盆明けのいつかのタイミングで公開するつもりですが、今回の記事で何かわからないことがあればコメントをください。お答えできる範囲でお答えし、それを後編に盛り込もうと考えています。