Checkinstall でインストール

tar.gz から rpm、deb、tgz、を作成するアプリケーション

Last Update 2013年 12 月 29日

自分では spec が書けなくて…。そういう人にお薦め、Checkinstall。

tar ball だけが配布されているパッケージの場合、もちろんそのままインストールしても良いのですが、せっかくの rpm パッケージ管理システムがあるのだから、できれば rpm パッケージでインストールしたい。
ちょっと試して期待外れだったり、不要になったら -e でアンインストールも簡単にできるし、バージョン管理も確実になる。spec さえ自分で書ければ世話は無いのですが、そもそもそこまでのスキルは無いという私にとってあまりにありがたいアプリケーション。

rpm 専用ではありません。パッケージ作成の際に Slackware の tgz 形式や deb 形式も選べます。

この文書では 2010 年 3 月最新のパッケージ checkinstall-1.6.2.tar.gz について解説します。checkinstall-1.6.0.tar.gz については古い文書をお読みください。

make が通らないとき
checkinstall-1.6.2.tar.gz が最近のディストリビューションで make 出来ない場合の対処法
Checkinstall を tar ball からインストール
汎用のインストール法
Checkinstall を rpm からインストール
ビルド済み RPM パッケージのダウンロードとインストール
Checkinstall の使い方
もっとも基本的な Checkinstall の使用法
アンインストーラとしての Checkinstall
make install したパッケージを checkinstall を利用して簡単にアンインストール

make が通らないとき

glibc が新しめ目のディストリビューションでは make が通らないことがあります。「git の最新版なら通る」などの情報もありますが、それでも通らない環境も。理由は glibc への対応記述が足らないだけのようです。
パッケージを展開して、/installwatch/create-localdecls に glibc のバージョン記述を追加します。

		7)
			echo '#define GLIBC_MINOR 7' >> $OUTFILE
			SUBVERSION='glibc-2.7' ;;
		8)
			echo '#define GLIBC_MINOR 8' >> $OUTFILE
			SUBVERSION='glibc-2.8' ;;
		9)
			echo '#define GLIBC_MINOR 9' >> $OUTFILE
			SUBVERSION='glibc-2.9' ;;
		10)
			echo '#define GLIBC_MINOR 10' >> $OUTFILE
			SUBVERSION='glibc-2.10' ;;
		11)
			echo '#define GLIBC_MINOR 11' >> $OUTFILE
			SUBVERSION='glibc-2.11' ;;
		12)
			echo '#define GLIBC_MINOR 12' >> $OUTFILE
			SUBVERSION='glibc-2.12' ;;
		13)
			echo '#define GLIBC_MINOR 13' >> $OUTFILE
			SUBVERSION='glibc-2.13' ;;
		14)
			echo '#define GLIBC_MINOR 14' >> $OUTFILE
			SUBVERSION='glibc-2.14' ;;
		*)
			echo 'Treated as glibc >= 2.1 (finger crossed)'
			echo '#define GLIBC_MINOR 1' >> $OUTFILE
			SUBVERSION='glibc-2.1' ;;

このように修正してから make してください。

Checkinstall を tar ball からインストール

checkinstall をダウンロード

オリジナル Web http://asic-linux.com.mx/%7Eizto/checkinstall/ の『DOWNLOAD』からパッケージをダウンロードします。
2010年 3月 6日現在の最新パッケージは checkinstall-1.6.2.tar.gz です。

インストール

インストールはパッケージ展開後に make から始めます。

注意: すべてのコマンドは意味を汲み取り、ご自身の必要な形に読み替えてください。

tar xvzf checkinstall*

cd checkinstall*

make

su

make install

これでインストールは完了したのですが、rpm を作るアプリが tar ball インストールされているのもおかしなものです。既に稼働状態に入った checkinstall を使って checkinstall を rpm パッケージに作り直して上書きインストールします。

同じディレクトリで、root ユーザで checkinstall コマンドを使います。

/usr/local/sbin/checkinstall

フルパスで起動します。checkinstall が起動して、作業の進行ごとにいくつか質問に答えることになりますが、パッケージネーム、バージョンを変更したり、という問い合わせです。tar ball をそのまま RPM パッケージを作成したいだけなら default 設定に従って [ enter ] だけでも大丈夫。

現行の checkinstall は UTUMI Hirosi さんの ja.po が取り込まれ、メッセージはかなり日本語で表示されます。

使用するパッケージ方式を選んでください。
Slackwareなら[S], RPMなら[R], Debianなら[D]を入力

rpm パッケージが必要なら 『r』をタイプし Enter で進めます。

**********************************************************************
Done. The new package has been saved to
/usr/src/{vine,redhat など}/RPMS/{i386,x86-64}/checkinstall-*-1.arch{i386,x86-64}.rpm
You can install it in your system anytime using:
rpm -i checkinstall-*.arch{i386,x86-64}.rpm
**********************************************************************

となれば、表示されたディレクトリにパッケージが出来上がっていますので、root 権限でインストールします。

以上の手順で tar ball が書き込んだファイル群を rpm パッケージが同じファイルで上書きします。機能自体は変わりませんが rpm コマンドで様々な情報も得られるようになります。

rpm -qli checkinstall

Name : checkinstall Relocations: (not relocatable)
Version : 1.6.2 Vendor: (none)
Release : 1 Build Date: 2010年03月07日 00時43分36秒
Install Date: 2010年03月07日 00時49分32秒 Build Host: localhost.localdomain
Group : Applications/System Source RPM: checkinstall-1.6.2-1.src.rpm
Size : 393862 License: GPL
Signature : (none)
Packager : checkinstall-1.6.2
Summary : CheckInstall installations tracker, version 1.6.2
Description :
CheckInstall installations tracker, version 1.6.2

CheckInstall keeps track of all the files created or
modified by your installation script ("make install"
"make install_modules", "setup", etc), builds a
standard binary package and installs it in your
system giving you the ability to uninstall it with your
distribution's standard package management utilities.
/usr
/usr/doc
/usr/doc/checkinstall
/usr/doc/checkinstall/BUGS
/usr/doc/checkinstall/COPYING
/usr/doc/checkinstall/CREDITS
/usr/doc/checkinstall/Changelog
/usr/doc/checkinstall/FAQ
/usr/doc/checkinstall/INSTALL
/usr/doc/checkinstall/README
/usr/doc/checkinstall/RELNOTES
/usr/doc/checkinstall/TODO
/usr/local
/usr/local/bin
/usr/local/bin/installwatch
/usr/local/lib
/usr/local/lib/checkinstall
/usr/local/lib/checkinstall/checkinstallrc-dist
/usr/local/lib/checkinstall/locale
/usr/local/lib/checkinstall/locale/de
/usr/local/lib/checkinstall/locale/de/LC_MESSAGES
/usr/local/lib/checkinstall/locale/de/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/es
/usr/local/lib/checkinstall/locale/es/LC_MESSAGES
/usr/local/lib/checkinstall/locale/es/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/id
/usr/local/lib/checkinstall/locale/id/LC_MESSAGES
/usr/local/lib/checkinstall/locale/id/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/it
/usr/local/lib/checkinstall/locale/it/LC_MESSAGES
/usr/local/lib/checkinstall/locale/it/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/ja
/usr/local/lib/checkinstall/locale/ja/LC_MESSAGES
/usr/local/lib/checkinstall/locale/ja/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/no
/usr/local/lib/checkinstall/locale/no/LC_MESSAGES
/usr/local/lib/checkinstall/locale/no/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/pt_BR
/usr/local/lib/checkinstall/locale/pt_BR/LC_MESSAGES
/usr/local/lib/checkinstall/locale/pt_BR/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/ru
/usr/local/lib/checkinstall/locale/ru/LC_MESSAGES
/usr/local/lib/checkinstall/locale/ru/LC_MESSAGES/checkinstall.mo
/usr/local/lib/checkinstall/locale/zh_CN
/usr/local/lib/checkinstall/locale/zh_CN/LC_MESSAGES
/usr/local/lib/checkinstall/locale/zh_CN/LC_MESSAGES/checkinstall.mo
/usr/local/sbin
/usr/local/sbin/checkinstall
/usr/local/sbin/makepak

以上が基本の手順なのですが、ここ最近(y2010m3)、64bit 環境への対応、glibc、rpm のバージョンの差異に完全には対応ができていないのでしょうか、make が通らないことも少なくないようで、各ディストリビューションとも、patch で対応しているような状況に見えます。できる限り、ディストリビューションが供給する checkinstall パッケージを利用したほうがいいでしょう。

Checkinstall を rpm からインストール

パッケージの概要

以下からダウンロードできる SRPM は Vine Linux 用に作成したものと機能的には同等のパッケージです (gnome アプリケーションメニューへのエントリ、アイコンは抜いてありますが)。tar ball からインストール、rpm 化して再インストールという手間を省くことができます。

たぶん、多くのディストリビューションで動くと思います。
リビルドが正常に通れば大丈夫だと思います。

32bit、64bit 両環境対応、glibc、rpm のバージョンの差異対応で、mandriva の patch を中心に取り込んであります。1.6.2 以降の git リポジトリ由来の内容は含んていません。

checkinstall-1.6.2-7glibc2.18.src.rpm
2013 年 12 月の VineSeed で作成してあります。VineSeed は開発のための流動的な環境なので、以下の環境は参考です。
glibc = 2.18 gcc=4.8.2

/usr/bin/checkinstall
/usr/bin/installwatch
/usr/lib64/checkinstall
/usr/lib64/checkinstall/checkinstallrc
/usr/lib64/checkinstall/installwatch.so
/usr/lib64/checkinstall/locale
/usr/lib64/checkinstall/locale/ja
/usr/lib64/checkinstall/locale/ja/LC_MESSAGES
/usr/lib64/checkinstall/locale/ja/LC_MESSAGES/checkinstall.mo
/usr/sbin/makepak
/usr/share/doc/checkinstall-1.6.2
/usr/share/doc/checkinstall-1.6.2/BUGS
/usr/share/doc/checkinstall-1.6.2/COPYING
/usr/share/doc/checkinstall-1.6.2/CREDITS
/usr/share/doc/checkinstall-1.6.2/INSTALL
/usr/share/doc/checkinstall-1.6.2/README
/usr/share/doc/checkinstall-1.6.2/RELNOTES
/usr/share/doc/checkinstall-1.6.2/TODO

パッケージのリビルド、インストール

インストールするには SRPM をリビルドし、バイナリ RPM を作成します。

rpmbuild --rebuild checkinstall*.src.rpm

バイナリ RPM をインストールします。

rpm -Uvh checkinstall*.arch(i386,x86-64}.rpm

もちろん、Vine Linux ユーザなら Plus にパッケージがありますから

apt-get install checkinstall

だけで apt が Vine Plus のバイナリパッケージをインストールしてくれて、即時利用可能になります。

Checkinstall の使いかた

1. インストールしたい tar ball パッケージの取得、展開、configure、make

ディストリビューションがパッケージとして供給していないプログラムの tar ball をダウンロードして展開し「configure」、「make」するのは通常の tar ball インストールと一緒です。

tar xvzf package-name.tar.gz (または tar xvjf package-name.tar.bzip2)

cd package-name

./configure --prefix=/usr

--prefix=hoge はインストールディレクトリを設定する設定オプション。必要ならば加えてください。

make

「configure」を行うときに prefix を指定したり、パッケージ独自の confugure オプション(./configure --help などで調べてください)を加えたりするのも通常の tar ball インストールと同様です。
「configure」の終盤で makefile が作成されているか確認してください。makefile が作成されていなければ「make」も正常に通らず、Checkinstall も作業を行えません。makefile が作成されない理由は、おおよそ以下のような原因です。

ここまではまだ checkinstall は登場していません。

2. checkinstall の起動

checkinstall を起動します。上記からダウンロードできる checkinstall RPM は checkinstall コマンドの起動を root で行い、インストールは自動的に行われます。 checkinstall を tar ball からインストールした場合は、パッケージ作成までが行われ、インストールは別途行います。

su

checkinstall

あとは対話的にパッケージにバージョンを指定したりして作業を進めます。

checkinstall の ja.po はすべて日本語訳が当たっているのですが、メッセージは一部翻訳が表示されません。多分、オリジナルの国際化にバグがあるのだと思いますが。

http://www.vinelinux.org/docs/vine6/cui-guide/using-rpm.html 内の「『RPMパッケージの作成』を読みましたが、よく分かりません。個人的に使うアプリケーションを簡単にRPMパッケージにする方法はありませんか?」も参照してください。

アンインストーラとしての Checkinstall

tar.ball から make install したパッケージをアンインストールしたいが、アンインストールスクリプトが無い場合、いちいちすべてのファイルを調べて削除しなければならない?

そういうときにも checkinstall が役に立ちます。インストールした tar.ball パッケージを checkinstall を使って作った RPM でいったん上書きしてしまえば、後は、

rpm -e package-name

make install したときに使った configure、make をしたディレクトリが残っていれば、そこで checkinstall コマンドを走らせるだけで上書き用の RPM が作成できます。残っていない場合は prefix 先などを make install したときと合わせてください。

▲ このページのトップへ

Note

少し以前の話になりますが、Vine Linux ユーザの 尹 (Yun) さんがcheckinstallを利用してspecファイルを作成するスクリプトを作成されました。
http://www.kids-clinic.jp/uni/spec.html
「関心のある方がいらっしゃれば改編・再配布はご自由にどうぞ。」とおっしゃってくださっていました。 興味のある方は試してご覧になってご意見など差し上げると取り上げていただける "かも" しれません。

su - で root になった場合は /usr/local/sbin/ にパスが通っていますから
# checkinstall
とするだけで良いのですが、逆にカレントが /root に移動してしまいますので、再び cd /home/hoge/checkinstall-1.6.0( or Package-hoge ) する必要があります。
「ならば、最初から su - して全て root で作業すれば良い」と考えるかもしれませんが、パッケージビルドは一般ユーザで行った方が、トラブルの元になりにくいので安心とされています。プログラマのミスで BUILDROOT が OS の / を指定していた場合を考えてみてください(checkinstall は環境の BUILDROOT、checkinstall 内部に指定された安全な /tmp を利用するので問題はありません)。起動コマンドはフルパスを覚えてしまう方が良いでしょう。▲本文に戻る

いつもご協力いただいている、同じ Vine Linux ユーザの 加藤さんには、今回も検証等でご協力いただきました(感謝)。

このページには Internet Explorer では表示されない CSS 実装が含まれています。また、Internet Explorer 由来のバグには fix を行っていません。
inserted by FC2 system