Linuxを日常的に使う実験ブログ

Arch LinuxでArch Build System (ABS)を使う方法

 2014-11-08

 Arch Linux

こんにちは。今回のテーマは『Arch LinuxでArch Build System (ABS)を使う方法』です。ABSとはArch Build Systemの略でタイヤをロックしない車のブレーキシステムとか樹脂の名前ではありません。Arch LinuxがBSDの影響を受けたと言われる所以であるPortsライクなビルドシステムABSをご紹介できればと思います。 [adsense02]

あなたはマニュアル派?オートマ派?

※ABSの使い方を調べにいらした方はこの項は飛ばしてABSを使ってみようへどうぞ 世の中にはマニュアル車の運転にこだわる方がいますね。特に男性に多いように見受けられます。筆者の周囲にも「やっぱり車はマニュアルじゃなきゃ」という方がいます。カメラも同様かも知れませんね。 筆者は「マニュアル車を運転する男性」への憧れは特にありませんが、自らが操縦している実感をより感じられるという彼らの心情は理解は出来ます。マニュアル派かオートマ派かという問題はLinuxのパッケージ取り扱いにおいても実に趣味が別れる話だと思います。手間がかかるけど自分の好きな細かい設定が可能なマニュアル派。全自動で便利だけど時に融通が効かないオートマ派。あなたはどっち?

ABSはマニュアル派のための硬派なツール

さて、車の話はさておきABSはArch Linuxの公式リポジトリのパッケージを自分でビルドするためのPortsライクなシステムの総称のことです。absというパッケージもありますが、これ単体では機能せず、makepkgやpacmanと組み合わせて使っていきます。以下のようなメリットとデメリットがあります。面倒な方はpacmanが全て処理してくれるのでご安心を。

メリット

ビルドオプションも自分でカスタマイズ可能 ビルド時にオプション機能を付与してビルドしたいパッケージもあると思います。そんなカスタマイズもABSを使えば手軽に行えます。自分の環境でビルドするのでより最適化したパッケージを作れます。 古いバージョンやテストバージョンをインストールすることも可能に PKGBUILDファイルを書き換えることでリポジトリからバイナリ形式で配信していないパッケージも自分でビルドしてインストールすることが出来ます。 伝統的なBSDのPorts風なシステム これは個人的な趣味ですが、リポジトリからバイナリパッケージを配布する風潮が強い現代において「常に最新」を謳うArch Linuxが伝統的なPortsライクなシステムを導入したことは実にArch Linuxらしいと思います。ただ、Gentoo Linuxのportageほどの強力なシステムではないことは付け加えておきます。

デメリット

手間がかかる 自動車の運転と同じでマニュアル操作は手間がかかります。単にパッケージをインストールしたいだけならばpacmanを用いたほうが遥かに簡単です。もし読者の方がArch Linuxの初心者ならばpacmanの使用をオススメしますわ。

ABSを使ってみよう

absの導入と設定

absのインストール 以下コマンドでabsを導入しましょう

$ sudo pacman -S abs

ABSで管理するリポジトリの設定 次にabsで管理するリポジトリを決めましょう

$ sudo vim /etc/abs.conf

使用するリポジトリの前の”!”を外しましょう。筆者の設定は以下の通りです。

REPOS=(core extra community !testing !community-testing !staging !community-staging !gnome-unstable !kde-unstable)

PACKAGER変数を設定する この設定は必須ではありませんが、設定しておくと後にabsでインストールしたパッケージを調べるのが楽になるのでArch wikiでも推奨しています。

$ sudo vim /etc/makepkg.conf

筆者の設定例です。

PACKAGER=“kuro “

ABSを用いたパッケージインストールの一連の流れ

では、今回はextra/expacパッケージをABSで導入してみましょう。もちろんexpacはpacmanでも導入できますよ。 #1 ABSツリーの更新 以下コマンドを実行すると全ての上記で設定した全てのリポジトリのPKGBUILDファイルが/var/absディレクトリに更新されます。

$ sudo abs

もし全てのパッケージのツリーを作る必要がなければ[リポジトリ名]/[パッケージ名]を指定すれば良いです。

$ sudo abs extra/expac

#2 作業用ディレクトリにABSツリーをコピーする /var/abs/ディレクトリで直接ビルド作業は避けた方が良いです。別途作業用ディレクトリを作成し、ABSツリーをコピーしてビルド作業を行いましょう。

$ mkdir -p ~/abs $ cp -r /var/abs/extra/ ~/abs

#3 パッケージのビルド作業 PKGBUILDファイルに修正の必要があれば適宜修正しましょう。自分の環境に合わせたカスタマイズが可能なのがABSシステムの利点でもあります。以下では作業ディレクトリを~/abs以下である前提で記します。

$ cd ~/abs/extra/expac $ vim PKGBUILD

PKGBUILDの確認・修正が終えたらビルドしましょう。

$ makepkg -s

全自動でパッケージがビルドされて.pkg.tar.xzファイルが作成されます。 01 #4 インストール 作成した.pkg.tar.xzファイルはpacmanでインストール可能であり、リポジトリからインストールされたパッケージと同等に扱われます。

$ sudo pacman -U hogehoge.pkg.tar.xz

入力例

$ sudo pacman -U expac-3-1-i686.pkg.tar.xz

ABSからインストールしたパッケージの調べ方

AURからインストールした非公式パッケージの場合はpacman -Qmで調べることが可能ですが、ABSからインストールした場合は見分けがつきません。そこで先ほど試しにインストールしてみたexpacを使います。

$ expac “%n %p” | grep [PACKAGER名] | column -t

PACKAGER名とはPACKAGER変数を指定する時に決めた名前です。 PACKAGER = kuro info@kurodogi.comの場合は”kuro”になります。 上記のコマンドを筆者環境で実行すると以下のようになります。

$ expac “%n %p” | grep kuro | column -t

これにより自分でビルドしてインストールしたパッケージが表示されます。

ABSシステムでインストールしたパッケージを自動更新しない方法

せっかくABSシステムでビルドしてインストールしたパッケージもpacmanでシステム更新するとバイナリパッケージによって更新されてしまいます。これを防ぐ方法をご紹介して終わりたいと思います。 もしpacmanによって勝手に更新されないように保護するためにはPKGBUILDファイルに以下一行を加えます。

group=(‘modified’)

番外編:ABSを使わない公式リポジトリのPKGBUILDのダウンロードの仕方

これまで書いてきた方法は公式のABS使用方法です。しかしyaourtを使えば公式PKGBUILDをダウンロードすることはとても簡単です。なぜこっちを先に書かないかって?いや、ABSの方がBSD伝統のPortsシステムっぽくて素敵じゃないですか。ただそれだけです。

$ yaourt -G [パッケージ名]

このコマンドだけで実行したディレクトリにパッケージディレクトリが作成されPKGBUILDファイルが入手出来ます。あとは通常のabsと同様の方法でビルドしてpacmanでインストールするだけです。

最後に

Arch LinuxがABSを有することからGentoo Linuxと同様の自前ビルドが前提のディストロだと言われることもあるようですが、それは誤解です。たしかにArch LinuxはDo it yourselfを公言しているし、コミュニティへの貢献を求めるディストロですが、決して難解で使い勝手の悪いシステムではありません。バイナリパッケージと自前ビルドパッケージをpacmanによりシームレスに管理できるシステムはマニュアル車としてもオートマ車としても乗りこなすことが出来る車のようなものだと考えています。 [adsense]