rpm備忘録

■ コレを読むベシ
http://docs.fedoraproject.org/drafts/rpm-guide-en/


■ /etc/yum.conf はどのrpmパッケージからインストールされたものか?
rpm -qf /etc/yum.conf

■ インストールされた httpd パッケージに含まれるリスト
* 全ファイル
rpm -ql httpd

*ドキュメントのみ
rpm -qd httpd

* 設定ファイルのみ
rpm -qc httpd

* rpm パッケージ自体からやるには"p"を付ける。
rpm -qlp httpd-2.2.8-3.i386.rpm

* install/uninstall時に実行されるスクリプトを表示
rpm -qp --scripts haproxy-1.3.15.2-2.fc9.i386.rpm

■ 重要ファイル
/usr/lib/rpm/redhat/macros
/usr/lib/rpm/macros

■ いろいろ

FC9 /root/rpm/RPMS/i386# rpm -qpl haproxy-1.3.15.2-2.fc9.i386.rpm
rpm -qp --scripts haproxy-1.3.15.2-2.fc9.i386.rpm
rpm  --showrc
rpmbuild -bi --short-circuit  stress.spec

rpmbuild -bp stress.spec
rpmbuild -ba stress.spec

FC9 /root# cat .rpmmacros
%_topdir /root/rpm
%_tmppath %{_topdir}/tmp
%debug_package %{nil}
FC9 /root# find rpm -maxdepth 1 -type d
rpm
rpm/ROOT
rpm/work
rpm/SRPMS
rpm/tmp
rpm/BUILD
rpm/SPECS
rpm/SOURCES
rpm/RPMS
FC9 /root#

■ マクロ
specファイルの中で利用できる、マクロの定義の内容を知りたい場合、rpm --eval %マクロ名 とすることで確認できる。

FC9 /usr/lib/rpm# rpm --eval %makeinstall

  /usr/bin/make \
        prefix=/usr \
        exec_prefix=/usr \
        bindir=/usr/bin \
        sbindir=/usr/sbin \
        sysconfdir=/etc \
        datadir=/usr/share \
        includedir=/usr/include \
        libdir=/usr/lib \
        libexecdir=/usr/libexec \
        localstatedir=/var \
        sharedstatedir=/usr/com \
        mandir=/usr/share/man \
        infodir=/usr/share/info \
  install
FC9 /usr/lib/rpm#

マクロ自体は、/usr/lib/rpm/macros内で定義されている。
マクロの定義は以下のようにする。

* 再定義
%define _prefix /usr/local
* クリア
%undefine _prefix

.rpmmacrosに独自定義を行えば、定義済みの内容を再定義できる。ただし、specファイルの中で.rpmmacrosに定義した独自マクロを使用するのspecファイルの汎用性が落ちる事を理解しておくこと。