Debian の dpkg は分かるようになった
Red Hat 系のサーバーで .rpm のファイルを渡されたけど、rpm コマンドはどう使うん?
【疑問】Red Hat 系で .rpm を渡された。rpm のインストール・問い合わせ・検証と rpm2cpio【LPICレベル1】
前提のおさらい。dpkg は手元のパッケージを1つずつ扱って、依存を取ってこない。依存をたどってリポジトリから入れるのは apt
>>2
rpm も同じ立場で、手元の .rpm を扱う。依存を取ってくるのは yum や dnf
>>1
入れる・消すrpm -i ファイル 新しく入れるrpm -U ファイル 更新(入ってなければ入れる)rpm -F ファイル 前の版が入ってるときだけ更新rpm -e パッケージ名 消す(名前で指定する)-v と -h を付けて rpm -ivh のように進み具合を見るのが定番。--test で実際には入れずに確かめる
>>1
中身を調べるのは?
>>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 文書だけ
>>6
入ってるもの全体なら rpm -qa、あるファイルがどのパッケージのものかは rpm -qf /usr/bin/tree、何かを提供してるパッケージは --whatprovides。dpkg の -l・-L・-S にあたるわけか
>>6
ファイル名の tree-1.8.0-10.el9.x86_64.rpm は、名前-版-リリース.アーキテクチャ.rpm の形やった
>>1
入ったファイルが書き換えられてないか調べられる?
>>9rpm -V パッケージ名(-Va で全部)。問題がなければ何も出ない。違うと9文字の印が出る(rpm の man)
S 大きさ、M 権限や種類、5 中身のダイジェスト、D デバイス番号、L リンク先、U 所有者、G グループ、T 更新時刻、P ケーパビリティ
合っているところは . になる。設定ファイルには c の印が付く
>>2
パッケージが本物かどうかは?
>>11rpm -K ファイル(--checksig)で署名を確かめる。鍵を入れる前は digests SIGNATURES NOT OK、rpm --import で AlmaLinux の公開鍵を入れたら digests signatures OK になった
>>5
入れずに中のファイルだけ取り出したい
>>13rpm2cpio ファイル | cpio -idm で今いるディレクトリに展開できた。cpio -t なら一覧だけ。./usr/bin/tree などが出てきた
>>4
入れるのは -ivh か -Uvh、消すのは -e、調べるのは -q と -qp、確かめるのは -V と -K、取り出すのは rpm2cpio。dpkg と並べて覚える
管理人のひとこと
- rpm は手元の .rpm を扱い、依存は取ってこない(yum・dnf・zypper が取ってくる)。
-iインストール、-U更新(なければ入れる)、-F入っているものだけ更新、-e削除(パッケージ名)。-vhで進み具合、--testで試すだけ、--nodepsで依存を見ない。 - 問い合わせ:
-qa全部、-qi情報、-qlファイル一覧、-qc設定ファイル、-qd文書、-qR依存、-qf ファイル持ち主、--whatprovides。ファイルを調べるときは-qp…。 rpm -V(-Va)は入ったファイルの変化を S・M・5・D・L・U・G・T・P の印で示す(設定ファイルは c)。rpm -Kで署名、rpm --importで公開鍵を登録。rpm2cpio ファイル | cpio -idmで中身だけ取り出す。ファイル名は 名前-版-リリース.アーキテクチャ.rpm。