どのようなLinuxディストリビューションであれ、ユーザー全員の望みにかなうあらゆるパッケージを最初からバンドルすることは不可能であるため、多くのディストリビューションでは、ユーザー各自が必要とする追加アプリケーションを独自にダウンロードするためのソフトウェアリポジトリが用意されている。そしてSlackwareに関してはSlackBuilds.orgという非公式リポジトリも2006年から運営されており、これは非常に完成度の高いサイトなのだが、同リポジトリからのアプリケーション取得には手動操作による複数のステップが必要で、実際の利用にあたってはWebブラウザと仮想ターミナルとの間を何度も往復しなくてはならないのが難点と見なされてきた。本稿で紹介する sbopkg はこうした負担を軽減するべく、SlackBuilds.orgからユーザーが取得するパッケージを自動ビルドさせるために用意されたncursesベースのサポートユーティリティだが、それだけに止まらず、オペレーティングシステムとリポジトリとのシームレスな統合も図られているのである。
SlackBuilds.orgは非公式なサイトであるとはいえ、実質的にはSlackwareのオフィシャルリポジトリに限りなく近い存在となっている。その運営にあたっているスタッフはSlackware開発チームの人間であるし、Slackwareのリリースノートにおいても、メンテナの一員であるPatrick Volkerding氏による同サイトの使用を推奨する文章が記載されているのだ。そしてSlackBuilds.orgを用いたパッケージのビルド手順をスリム化するための自動処理ツールとして作成されたのが、ここで解説するsbopkgである。
sbopkgの使用法をマスターするにあたっては、次に説明するSlackwareパッケージおよびSlackBuilds.orgの概要を把握しておかなくてはならない。
Slackwareパッケージの概要
Slackwareの特長の1つは“ユーザーに対し透明性を保つ”という理念の下に構築されたLinuxディストリビューションであるとしていいだろう。そのため多くのSlackwareユーザーは、設定ファイルの手作業による編集やソフトウェアのソースからのコンパイルを始め、各自のシステム管理は自分自身でできて当然だという意識を持っているのだ。それでも第三者がコンパイルしたバイナリパッケージに関しては、その際に使用されたライブラリの種類やバージョンが手元のものと同じであるか、あるいはコンパイル時にオプションの変更がされていなかったかを窺い知ることはできない。
Slackwareでもバイナリパッケージは利用可能だが、これらが関係するインストール済みアプリケーションのアップグレードや削除をパッケージ管理ツールが問題なく処理できるよう、その作成プロセスについては標準化された手続きを踏むよう定められている。そして、こうした制約下でのパッケージ作成プロセスを自動化するべくSlackware開発陣により整備されたツールがSlackBuildスクリプト群なのである。
SlackBuildスクリプトの実態はシェルスクリプトの一種であり、通常これらはroot権限下で実行され、ビルド用の一時ディレクトリを自動的に用意し、同ディレクトリにてソフトウェアの設定とコンパイルとインストールをした上で、Slackwareのmakepkgユーティリティを用いたパッケージ作成を行うようになっている。こうして作られるSlackwareのパッケージはtarボールをgzip化したものだが、そのための正しい設定とコンパイル用オプションが確実に適用されるようにすることがSlackBuildスクリプト群の役割だと思っておけばいいだろう。同じくmakepkgの役割は、パッケージ関連のSlackwareユーティリティ群によるこれらファイルの“/”ディレクトリツリーへの解凍時に、必要なパーミッションが与えられた上で正しい場所に格納されるようにすることなのである。
SlackBuilds.orgにて扱われているのはSlackBuildスクリプトだけでなく、「高度な水準を維持しつつSlackBuildスクリプトのコレクションを最大限に広げる」という目的の下、Slackwareの正式ディストリビューションには含まれていないアプリケーション用の補助ファイル群も提供されている。実際その品揃えは豊富で、OpenOffice.orgのような有名アプリケーションはもとより、各種パッケージにて使われる200以上のライブラリまでもが収録されているのだ。
このサイトに付随する問題点は、使用法自身は簡単なのに、実際の操作終了までに結構な長時間を要する場合があることだ。確かにこのリポジトリはブラウジング形式の操作だけでなく特定パッケージの検索もできるようになっており、各パッケージにはそれぞれの専用ページおよびソースファイルのダウンロード用リンクが用意されていて(SlackBuilds.orgではなく各自のサイトにてホストされているもの)、SlackBuildスクリプト本体とパッケージ情報に関するテキストファイルを収録した圧縮ファイルには、インストール後に必要となるその他のスクリプト群が用意されている場合もあるくらい内容的には充実している。その一方でSlackBuildスクリプトを用いたパッケージビルドを行うにあたっては、以下の操作をしなくてはならないのだ。
- SlackBuildのアーカイブをダウンロードして専用のフォルダに展開する
- ソースファイルをダウンロードして先のものと同じフォルダに移動する
- SlackBuildスクリプトに対して必要な編集を施す
- rootユーザー権限にてSlackBuildスクリプトを実行する(通常このプロセスで作成されたパッケージは/tmpディレクトリに収められる)
- パッケージをインストールする
こうしたプロセス自体は特別難しいものではないが、手作業による複数の操作を実行しなくてはならない。つまり、単に1回行うだけなら上記の手順によるパッケージのビルドなどは短時間で済む部類の作業ではあるのだが、依存関係にある多数のパッケージが複合化しているような場合は、それらをビルドする時間の積み重ねが馬鹿にならない量になってしまうのだ。
