checkinstall で野良ビルドを管理する

野良ビルドしたプログラムの管理どーしよーとか思ってもやもやと日々を過ごしてきたんですが、最近 checkinstall といういけてるツールがあることを知りました。

野良ビルドでは ./configure && make && make install というよくあるコマンドのコンボでビルド&インストールを行うわけですが、最後の make install を置きかえて、dpkg やら rpm やらで管理できるようよしなに図らってくれるのが checkinstall です。

基本的な使い方

checkinstall は、インストールコマンド(make install)を実行するときの共有ライブラリをのっとることで、ファイルシステムへの変更を検知して、それに応じて debrpm パッケージを作成、 dpkg などでインストールということをやってくれます。

なので、すごく単純なケースでは、以下の操作でパッケージ管理された野良ビルドをインストールすることができます。

$ tar zxvf hoge.tgz
$ cd hoge
$ ./configure
$ make
$ sudo checkinstall
(以下質問にenter連打)

checkinstall コマンドを実行すると、デフォルトでは make install がインストールコマンドとして使われますが、引数でインストールコマンドを渡すこともできます。柔軟です。すばらしいです。

infoファイルの困った問題

checkinstallは、ファイルシステムへの変更がある部分をパッケージの内容として含めるので、infoファイルのインストールにはちょっとした問題があります。infoファイルの場合、 /usr/local/share/info に hoge.info をコピーしたあと、 install-info コマンドで /usr/local/share/info/dir ファイル(infoのインデックス)を更新することでインストールが完了します。infoファイルをインストールしようとするプログラムの場合、この dir ファイルへの変更が新たな dir ファイルのコピーとして checkinstall には認識されてしまって、パッケージ同士で衝突してしまいます。

とりあえずの回避策としては、Makefile から install-info をコメントアウトしたあとにcheckinstall して、手動で install-info するというもの。checkinstall の作成する deb ファイルにインストール後に行う処理として install-info コマンドを登録できると一番いいのだけれど。。。