読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】Red Hat 系で .rpm を渡された。rpm のインストール・問い合わせ・検証と rpm2cpio【LPICレベル1】

15レスカテゴリ:Linux
1: 名無しさん

Debian の dpkg は分かるようになった
Red Hat 系のサーバーで .rpm のファイルを渡されたけど、rpm コマンドはどう使うん?

2: 名無しさん

前提のおさらい。dpkg は手元のパッケージを1つずつ扱って、依存を取ってこない。依存をたどってリポジトリから入れるのは apt

3: 名無しさん

>>2
rpm も同じ立場で、手元の .rpm を扱う。依存を取ってくるのは yum や dnf

4: 名無しさん

>>1
入れる・消す
rpm -i ファイル 新しく入れる
rpm -U ファイル 更新(入ってなければ入れる)
rpm -F ファイル 前の版が入ってるときだけ更新
rpm -e パッケージ名 消す(名前で指定する)
-v と -h を付けて rpm -ivh のように進み具合を見るのが定番。--test で実際には入れずに確かめる

5: 名無しさん

>>1
中身を調べるのは?

6: 名無しさん

>>5
-q が問い合わせ。入ってるものはパッケージ名、ファイルなら -p を付ける。AlmaLinux の tree の .rpm で試した(データベースは作業用のディレクトリを --dbpath で指定)
rpm -qpi → Name: tree、Version: 1.8.0、Release: 10.el9 などの情報
rpm -qpl → /usr/bin/tree、/usr/share/man/man1/tree.1.gz などファイルの一覧
rpm -qpR → libc.so.6 などの依存
-c 設定ファイルだけ、-d 文書だけ

7: 名無しさん

>>6
入ってるもの全体なら rpm -qa、あるファイルがどのパッケージのものかは rpm -qf /usr/bin/tree、何かを提供してるパッケージは --whatprovides。dpkg の -l・-L・-S にあたるわけか

8: 名無しさん

>>6
ファイル名の tree-1.8.0-10.el9.x86_64.rpm は、名前-版-リリース.アーキテクチャ.rpm の形やった

9: 名無しさん

>>1
入ったファイルが書き換えられてないか調べられる?

10: 名無しさん

>>9
rpm -V パッケージ名(-Va で全部)。問題がなければ何も出ない。違うと9文字の印が出る(rpm の man)
S 大きさ、M 権限や種類、5 中身のダイジェスト、D デバイス番号、L リンク先、U 所有者、G グループ、T 更新時刻、P ケーパビリティ
合っているところは . になる。設定ファイルには c の印が付く

11: 名無しさん

>>2
パッケージが本物かどうかは?

12: 名無しさん

>>11
rpm -K ファイル(--checksig)で署名を確かめる。鍵を入れる前は digests SIGNATURES NOT OK、rpm --import で AlmaLinux の公開鍵を入れたら digests signatures OK になった

13: 名無しさん

>>5
入れずに中のファイルだけ取り出したい

14: 名無しさん

>>13
rpm2cpio ファイル | cpio -idm で今いるディレクトリに展開できた。cpio -t なら一覧だけ。./usr/bin/tree などが出てきた

15: 名無しさん

>>4
入れるのは -ivh か -Uvh、消すのは -e、調べるのは -q と -qp、確かめるのは -V と -K、取り出すのは rpm2cpio。dpkg と並べて覚える

管理人のひとこと