ジャンル:ユーティリティ 作者:Felipe Sanchez氏ほか
ライセンス:GPL
URL:http://asic-linux.com.mx/~izto/checkinstall/

checkinstallは,任意のソフトウエアのソース・アーカイブから,RPM形式やdeb形式,tgz形式のパッケージを作成するソフトである。パッケージ化するための詳しい知識がなくても,ソースからパッケージを手軽に生成できる。

 最近の主なディストリビューションはソフトの管理を容易にするため,「パッケージ管理システム」を備えている。パッケージ管理システムとは,rpmやdpkgなどのパッケージ管理コマンドにより,ソフトの導入や削除を手軽にできるようにした仕組みである。Linuxシステムを構成するソフトはすべて,このパッケージ管理システムに対応するファイル形式である「パッケージ」として提供されている。

 Linuxシステムを構成するソフト以外にもパッケージで提供されているソフトは数多いが,世の中にさまざまなソフトが存在する。中にはソース・コードだけでパッケージが用意されていないソフトも多数ある。このようなソフトもパッケージ管理システムで一元管理したいのなら,自らがソース・コードからパッケージを作成する必要がある。

 ソース・コードから,自分が利用しているLinuxディストリビューションに合ったパッケージを作成することは,導入しようとするソフトやパッケージ形式に関する知識がある程度なければ難しい。普通は断念せざるを得ないだろう。

 checkinstallは,そのような知識を必要とせずに,ソース・コードからパッケージを簡単に作成できるツールだ。作成できるパッケージは,Fedora CoreやRed Hat Enterprise Linuxなどが採用する「RPM」,Debian GNU/Linuxなどが採用する「deb」,Slackware LinuxやPlamo Linuxなどが採用する「tgz」形式の3種類と豊富である。

RPMパッケージを作成する

 checkinstallは図1の手順でインストールできる。ここでは,2006年6月中旬時点の最新版であるバージョン1.6.0を使用した。手順通りに作業すれば,/usr/local/sbinディレクトリに「checkinstall」というシェル・スクリプトがインストールされる。これがcheckinstallの実体である。

図1●checkinstallのインストール手順
図1●checkinstallのインストール手順
checkinstallコマンドは,/usr/local/sbinディレクトリにインストールされる。

 また,/usr/local/binディレクトリに「installwatch」というバックエンド・コマンドも同時にインストールされる。同コマンドの役割については後述する。

 では,実際にcheckinstallを用いてRPMパッケージを作成してみよう。例として,文字例「Hello, world!」*1を表示する「GNU hello」というソフトウエアのRPMパッケージを作成してみる。同ソフトのソース・アーカイブは,GNUプロジェクトのサイト(ftp://ftp.gnu.org/gnu/hello/)から入手できる。ここでは,バージョン2.1.1のアーカイブ(hello-2.1.1.tar.gz)を入手した。

 図2の(1)がcheckinstallを用いてパッケージを作成する手順だ。参考までに,図2の(2)にGNU helloをコンパイルして導入する通常の手順を示す。(1)では,make installコマンドの代わりに,「/usr/local/sbin/checkinstall」のコマンドを実行する。いくつかの質問事項が表示されるので,それぞれ必要な情報を入力していく(図3)。

図2●checkinstallを用いたパッケージ作成手順と,通常のインストール手順
図2●checkinstallを用いたパッケージ作成手順と,通常のインストール手順
パッケージを作成する場合,make installコマンドの代わりに,checkinstallコマンドを実行する。

図3●パッケージ形式やドキュメント・パッケージの作成
図3●パッケージ形式やドキュメント・パッケージの作成
RPMパッケージを作成する場合,2番目の問いに対して「R」と入力する。
[画像のクリックで拡大表示]

 図3の例では,「パッケージの関連文書をインストールすること」「パッケージ形式はRPMであること」「パッケージの説明文は入力しないこと(空行)」をそれぞれ選択している。

 インストールされる関連文書は,ソース・ディレクトリ(ソース・アーカイブを展開されて作成されたディレクトリ)にある「README」や「INSTALL」などのファイルである。インストール先は,/usr/doc/<パッケージ名>で示されるディレクトリだ。

 また,パッケージの説明文を記述した「description-pak」というファイルをソース・ディレクトリ内に用意しておけば,説明文の入力は求められずに済む。

 最後に作成されるパッケージの情報がまとめて表示される(図4)。これで問題なければ,[Enter]キーを押す。するとGNU helloのRPMパッケージが,/usr/src/redhat/RPMS/<アーキテクチャ名>ディレクトリ内に作成される。筆者は,64ビット・アーキテクチャのPCを利用しているため,/usr/src/redhat/RPMS/x86_64ディレクトリ内に「hello-hello-2.1.1-1.x86_64.rpm」というRPMパッケージが作成された。

図4●パッケージに設定する各情報の一覧
図4●パッケージに設定する各情報の一覧
自動取得した情報と入力情報を基に,パッケージに設定される情報が一覧表示される。問題がなければ[Enter]キーを入力する。
[画像のクリックで拡大表示]

 作成したRPMパッケージは,一般的なRPMパッケージと同様に,インストールして利用できる*2


# cd /usr/src/redhat/RPMS/x86_64
# rpm -ivh hello-2.1.1-1.x86_64.rpm