独自のDebパッケージやaptリポジトリを作ってみよう
DebianやUbuntuでは、Debパッケージという形式でソフトウェアが配布されているが、公式に配布されているパッケージを利用するだけでなく、パッケージを自分で作成して利用することも可能だ。本記事では独自のDebパッケージを作成する方法や、apt-getコマンドで独自に作成したパッケージをインストールできる独自リポジトリの作成方法を紹介する。
独自のDebパッケージを作るメリットとは
DebianやUbuntuなどDebianから派生したディストリビューションでは、dpkgなどのツールを使ったパッケージ管理が行われている。これにより、Debパッケージ(拡張子は.deb)という形式で配布されているソフトウェアやファイルをインストールしたり、インストールしたソフトウェアのアップデートやアンインストールなどの管理を行える。
一般的に使われているソフトウェアの多くは、各ディストリビューションによってそのDebパッケージが作成され配布されている。しかし、ユーザーが独自にDebパッケージを作成することも可能だ。DebianやUbuntuでは非常に多くのパッケージが提供されているため、独自のDebパッケージを作成する機会は多くない。しかし、提供されているパッケージのものよりも新しいバージョンのソフトウェアが必要な場合や、ソフトウェアを独自にカスタマイズしたい場合などもあるだろう。このような場合、ソフトウェアをソースコードからビルドしたのち、パッケージの形にしてインストールすることが推奨されている。パッケージを作成することでインストール/アンインストールやバージョン管理、依存性管理が容易になるほか、ほかのマシンへのインストールも簡単にできるようになるというメリットがあるからだ。
Debパッケージの作成手順は複雑で、一からパッケージを作成するとなるとそれなりの知識や手間が必要だ。そのため、本記事ではDebパッケージ作成の第一歩として、既存のパッケージを修正して独自パッケージを作る方法と、設定ファイルやスクリプトなどをパッケージとして配布する方法について説明する。
既存のパッケージを修正して独自パッケージを作成する
Debian系のディストリビューションでは、各パッケージについてバイナリパッケージだけでなく、そのパッケージをビルドするための「素材」である「ソースパッケージ」も同時に配布されるのが一般的だ。既存のパッケージをカスタマイズするには、このソースパッケージを利用するのが簡単だ。ソースパッケージは通常、表1の3つのファイルから構成される。
ファイルの説明 | 拡張子 |
---|---|
アップストリームのソースアーカイブ | .orig.tar.gz |
パッケージに関する設定情報ファイル | .dsc |
オリジナルソースコードに適用するためのパッチ | .diff.gz |
なお、パッケージ化するソフトウェアについて、そのオリジナルの開発者らが配布しているものを「アップストリーム(上流)」と呼ぶ。つまり、「アップストリームのソースアーカイブ」というのは、オリジナルの開発者らが配布しているソースアーカイブのことを指す。
ソースパッケージの入手
ソースパッケージを入手するには、「apt-get source <パッケージ名>」コマンドを実行すれば良い。たとえば、Apache HTTP Serverが含まれる「apache2」パッケージのソースパッケージを入手するには、以下のようにする。
$ apt-get source apache2
コマンドを実行すると、リポジトリからソースパッケージがダウンロードされるとともに、コマンドを実行したディレクトリにパッケージ作成作業に使われる作業ディレクトリが作成され、ソースコードの展開などが行われる。以後、このディレクトリをソースディレクトリと呼ぶ。
なお、apt-getコマンドを利用せずに、ミラーサイトなどから手動でソースパッケージを入手しても構わない。この場合、.orig.tar.gzファイルと.dscファイル、.diff.gzファイルを同じディレクトリに格納した上で以下のようにdpkg-sourceコマンドを実行することで、ソースディレクトリへのソースコードの展開などを行える。
$ dpkg-source -x <パッケージの.dscファイル>
パッケージのビルド
apt-get sourceコマンドによって作成されたディレクトリ内には、debパッケージの作成に必要なすべての要素が含まれており、このディレクトリ内で「debuild」コマンドを実行することでバイナリパッケージを作成できる。なお、debuildコマンドは「devscripts」パッケージに含まれているので、実行の際はこのパッケージをインストールしておく必要がある。
# apt-get install devscripts
また、パッケージによっては、ビルドの際に特定のパッケージやファイルなどを必要とする場合がある。このような依存パッケージは、「apt-get build-dep <ビルドするパッケージ名>」コマンドでインストールできる。たとえばapache2パッケージのビルド時に必要なパッケージをインストールするには、以下のようにする。
# apt-get build-dep apache2
パッケージを作成するための準備が整ったら、ソースディレクトリ内で以下のようにdebuildコマンドを実行すると、バイナリパッケージの作成が実行される。
$ debuild -uc -us -b
ここで、「-uc」および「-us」オプションはパッケージへの署名を省略するオプション、「-b」オプションはバイナリパッケージのみの生成を指定するオプションだ。このコマンドを実行すると、configureやmakeなどビルドに必要な処理が実行され、生成されたバイナリがソースディレクトリの親ディレクトリ内に作成される。
なお、ビルド後にはdebianディレクトリ内に作業ファイルや中間ファイルが残されるが、これを削除するには以下のコマンドをソースディレクトリ内で実行すれば良い。
$ fakeroot debian/rules clean