SRPMの中身を見る
10/2の記事「SRPMの取得」の続きです。取ってきたSRPMの探検方法を紹介します。
$ mkdir -p RPM/{BUILD,RPMS/{i386,i586,i686,noarch},SOURCES,SPECS,SRPMS} $ echo %_topdir $HOME/RPM >> .rpmmacros
過去にSRPMをいじったことが無い場合、上記の準備が必要です。ディレクトリ名は好みで。
$ rpm -ihv lv-4.51-8.1.src.rpm 1:lv 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します 警告: ユーザ mockbuild は存在しません - root を使用します 警告: グループ mockbuild は存在しません - root を使用します ########################################### [100%] $ cd RPM/SPECS/ $ lv lv.spec
SRPMをインストールすると、先ほど準備したディレクトリに何ファイルかインストールされます。まず見るべきものはRPM/SPECS以下のSPECファイル(パッケージの設計書)です。初めて見る人でもそこそこ読めるかと思います。
SPECファイルを見たところ、CentOSのlvには5個のパッチが当たっています。パッチはRPM/SOURCES以下にあります。
$ cd ../SOURCES $ ls lv-+num-option.patch lv-4.49.4-nonstrip.patch lv-4.51-162372.patch lv-fastio.patch lv-lfs.patch lv451.tar.gz $
パッチの中身をざっと見たところ、「lv-+num-option.patch」で下記のコマンドラインオプションが追加されているようです。
+number Jump to the specified line immediately when lv is invoked. +/grep-pattern Search the specified pattern immediately when lv is invoked.
それ以外に興味を引くようなものは無さそうですが、パッチ適用後のソースコードも眺めてみます。
$ cd ../SPECS/ $ sudo yum install rpm-build $ rpmbuild -bp lv.spec 実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.71712 + umask 022 + cd /home/install-memo/RPM/BUILD + cd /home/install-memo/RPM/BUILD + rm -rf lv451 + /bin/gzip -dc /home/install-memo/RPM/SOURCES/lv451.tar.gz + tar -xf - + STATUS=0 + '[' 0 -ne 0 ']' + cd lv451 ++ /usr/bin/id -u + '[' 500 = 0 ']' ++ /usr/bin/id -u + '[' 500 = 0 ']' + /bin/chmod -Rf a+rX,u+w,g-w,o-w . + echo 'Patch #1 (lv-4.49.4-nonstrip.patch):' Patch #1 (lv-4.49.4-nonstrip.patch): + patch -p1 -b --suffix .nonstrip -s + echo 'Patch #2 (lv-4.51-162372.patch):' Patch #2 (lv-4.51-162372.patch): + patch -p1 -b --suffix .162372 -s + echo 'Patch #3 (lv-+num-option.patch):' Patch #3 (lv-+num-option.patch): + patch -p1 -b --suffix .num -s + echo 'Patch #4 (lv-fastio.patch):' Patch #4 (lv-fastio.patch): + patch -p1 -b --suffix .fastio -s + echo 'Patch #5 (lv-lfs.patch):' Patch #5 (lv-lfs.patch): + patch -p1 -b --suffix .lfs -s + exit 0 $ cd ../BUILD/lv451/
ちなみに、期待していた機能は見つかりませんでした。