rpmの照会とパッケージング
目標
rpmで照会・検証し、specファイルで自分でパッケージをビルドしてインストールします。
なぜ重要なのか
rpm -Vは、インストール時点のハッシュと現在のファイルを比較して、何が変わったかを教えてくれる監査ツールです。設定ファイルが変わっているのは正常ですが、バイナリが変わっていたら調査する必要があります。そして、パッケージを自分で作ってみると、その中に何があるのかがはっきりわかります。%filesに書かれていないファイルがあるとビルドが失敗するというrpmbuildの厳格さが、パッケージの内容を正確に保ってくれます。
ステップ
/root/rpmlabディレクトリを作成し、インストールされているパッケージの数を、数字1行で/root/rpmlab/count.txtに書いてください。coreutils-commonパッケージのドキュメントファイルの一覧を/root/rpmlab/docs.txtに保存してください。/usr/bin/lsを所有するパッケージ名だけを、1行で/root/rpmlab/owner.txtに書いてください。- インストールされているパッケージのうち、設定ファイルを1つ選んで内容を1行追記したあと、検証を実行し、改ざんが表示された行を
/root/rpmlab/verify.txtに保存してください。(/etc/nanorcや/etc/DIR_COLORSのように、安全なファイルを選んでください。) - インストールされている任意のパッケージのインストールスクリプトを照会して、
/root/rpmlab/scripts.txtに保存してください。スクリプトがないパッケージなら、その事実が出力されます。 ~/rpmbuildのビルドツリーを作成し、/opt/fixtures/rpmbuild/labhub-tool-1.0をlabhub-tool-1.0.tar.gzにまとめてSOURCES/に、/opt/fixtures/rpmbuild/labhub-tool.specをSPECS/に置いて、ビルドしてください。~/rpmbuild/RPMS/noarch/の下に.rpmができている必要があります。- 作成した
.rpmをインストールしないまま照会して、情報とファイル一覧をそれぞれ/root/rpmlab/pkg-info.txt、/root/rpmlab/pkg-files.txtに保存してください。 - そのパッケージをインストールして、
/root/rpmlab/report.txtを次の4行で作成してください。NAME=labhub-tool/VERSION=<설치된 버전-릴리스>/ARCH=noarch/RUN=<labhub-tool 명령 실행 결과 첫 줄>(プレースホルダーは順に、インストールされたバージョン-リリース、labhub-toolコマンドの実行結果の1行目です)
参考
- ビルドツリーは
mkdir -p ~/rpmbuild/{SPECS,SOURCES,BUILD,BUILDROOT,RPMS,SRPMS}で作ります。 - tarは
tar -czf ~/rpmbuild/SOURCES/labhub-tool-1.0.tar.gz -C /opt/fixtures/rpmbuild labhub-tool-1.0の形です。 - ビルドは
rpmbuild -ba ~/rpmbuild/SPECS/labhub-tool.specです。 - インストールされていないrpmの照会には、
-qpを付けます。 - よくある間違い1: ステップ6で、tar内の最上位ディレクトリ名が
%{name}-%{version}と違うと、%setupが失敗します。 - よくある間違い2: ステップ4で、設定ファイルではないバイナリを変更すると、システムが壊れます。先に
rpm -qcで設定ファイルの一覧を確認してください。
インストール一覧と詳細情報
/root/rpmlabディレクトリを作成し、インストールされているパッケージの数を、数字1行で/root/rpmlab/count.txtに書いてください。
rpm -qaは1行に1つずつ出力されます。数を数えるだけです。
ファイル・設定・ドキュメントの区別
coreutils-commonパッケージのドキュメントファイルの一覧を/root/rpmlab/docs.txtに保存してください。
-ql、-qc、-qdの3つのオプションが、それぞれ別の一覧を出力します。
ファイルの所有者を探す
/usr/bin/lsを所有するパッケージ名だけを、1行で/root/rpmlab/owner.txtに書いてください。
-qfはパスを受け取ってパッケージを教えてくれます。名前だけが必要なら、切り出してください。
改ざんの検出
インストールされているパッケージのうち、設定ファイルを1つ選んで内容を1行追記したあと、検証を実行し、改ざんが表示された行を/root/rpmlab/verify.txtに保存してください。(/etc/nanorcや/etc/DIR_COLORSのように、安全なファイルを選んでください。)
設定ファイルを変更してから検証すると、特定の文字が表示されます。その行をそのまま保存してください。
インストールスクリプトの確認
インストールされている任意のパッケージのインストールスクリプトを照会して、/root/rpmlab/scripts.txtに保存してください。スクリプトがないパッケージなら、その事実が出力されます。
パッケージがインストールの前後に何を実行するかを見られる、照会オプションがあります。
rpmのビルド
~/rpmbuildのビルドツリーを作成し、/opt/fixtures/rpmbuild/labhub-tool-1.0をlabhub-tool-1.0.tar.gzにまとめてSOURCES/に、/opt/fixtures/rpmbuild/labhub-tool.specをSPECS/に置いて、ビルドしてください。~/rpmbuild/RPMS/noarch/の下に.rpmができている必要があります。
ビルドツリーを作り、ソースをtarにまとめてSOURCESに置けばよいです。specはフィクスチャにあります。
作成したパッケージを調べる
作成した.rpmをインストールしないまま照会して、情報とファイル一覧をそれぞれ/root/rpmlab/pkg-info.txt、/root/rpmlab/pkg-files.txtに保存してください。
インストールされていないファイルを照会するには、オプションがもう1つ必要です。
総合レポート
そのパッケージをインストールして、/root/rpmlab/report.txtを次の4行で作成してください。
NAME=labhub-tool / VERSION=<설치된 버전-릴리스> / ARCH=noarch / RUN=<labhub-tool 명령 실행 결과 첫 줄>(プレースホルダーは順に、インストールされたバージョン-リリース、labhub-toolコマンドの実行結果の1行目です)
ビルドしてインストールしたパッケージの情報を集めてください。値は実際の照会結果である必要があります。