checkinstall で野良ビルドを管理する
野良ビルドしたプログラムの管理どーしよーとか思ってもやもやと日々を過ごしてきたんですが、最近 checkinstall といういけてるツールがあることを知りました。
野良ビルドでは ./configure && make && make install というよくあるコマンドのコンボでビルド&インストールを行うわけですが、最後の make install を置きかえて、dpkg やら rpm やらで管理できるようよしなに図らってくれるのが checkinstall です。
基本的な使い方
checkinstall は、インストールコマンド(make install)を実行するときの共有ライブラリをのっとることで、ファイルシステムへの変更を検知して、それに応じて deb や rpm パッケージを作成、 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 コマンドを登録できると一番いいのだけれど。。。