公式サイトからソースファイルをダウンロードしてきます。
本来は以下のように、
$ wget http://asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
と、ソースファイルをダウンロードしてきて、解答&コンパイル出来るはずなのですが、現時点で公開されているファイルにはバグがあるらしく、そのままだと以下のようなメッセージが出力されて、x86_64でコンパイル出来ませんでした。
$ gcc -Wall -c -D_GNU_SOURCE -DPIC -fPIC -D_REENTRANT -DVERSION=\"0.7.0beta7\" installwatch.c
installwatch.c:2942: error: conflicting types for ‘readlink’ /usr/include/unistd.h:828: note: previous declaration of ‘readlink## was here installwatch.c:3080: error: conflicting types for ‘scandir’ /usr/include/dirent.h:252: note: previous declaration of ‘scandir’ was here
make[1]: *** [installwatch.o] エラー 1
make[1]: ディレクトリ `/home/hogehoge/checkinstall-1.6.2/installwatch' から出ます
make: *** [all] エラー 2
そのため、gitを用いて最新のソースをダウンロードしてきます。
$ git clone http://asic-linux.com.mx/~izto/checkinstall/checkinstall.git
このままでもコンパイルは通りますが、64bit環境ではライブラリパスの位置が違うため、以下のような修正を行います。
$ diff installwatch/Makefile.org installwatch/Makefile 14c14 < LIBDIR=$(PREFIX)/lib --- > LIBDIR=$(PREFIX)/lib64
また、インストール時に「/selinuxに書き込めない」的なメッセージが出るのを回避するため、次のような修正を行います。
$ diff checkinstallrc-dist.org checkinstallrc-dist 120c120 < EXCLUDE="" --- > EXCLUDE="/selinux"
そして、このままですと checkinstallrc は /usr/local/lib/checkinstallrc にインストールされますが、コンパイルして出来たバイナリは /usr/local 直下にあるものと認識してしまい、実行時に
# checkinstall checkinstall 1.6.3, Copyright 2010 Felipe Eduardo Sanchez Diaz Duran このソフトウェアはGNU GPLの下でリリースしています。 The checkinstallrc file was not found at: /usr/local/sbin/../checkinstallrc デフォルトの内容を使うものとします
といったメッセージが出て読み込んでくれないため、次のような修正を行っておきます。
$ diff Makefile.org Makefile 7c7 < CONFDIR=$(PREFIX)/lib/checkinstall --- > CONFDIR=$(PREFIX)
修正が終わったら、コンパイルと一旦インストールを行います。
$ cd checkinstall $ make $ sudo make install
rpm-buildのインストールと、checkinstallのrpm化
インストールに成功したらcheckinstall自体をrpm化します。 まず、rpm化のために必要な以下のパッケージをインストールしておきます。
# yum install rpm-build
rpm構築に必要なディレクトリを作成します。
# mkdir -p ~/.rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} # echo "%_topdir $HOME/.rpmbuild" > ~/.rpmmacros
先ほどインストールしたcheckinstallコマンドを実行してRPMを作成します。途中でパッケージの種類を選択するところ以外はデフォルトのままで結構です。
# checkinstall
パッケージ作成に成功したら、パッケージとして再度インストールを行います。
# rpm -ivh /root/.rpmbuild/RPMS/x86_64/checkinstall-20120428-1.x86_64.rpm