「Linuxコマンド - RPMコマンド」の版間の差分

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
== 概要 ==
RPM (Red Hat Package Manager) は、RHELやその派生ディストリビューションで使用されるパッケージ管理システムである。<br>
rpmコマンドは、パッケージのインストール、更新、削除、検索等を行うために使用される。<br>
<br><br>
== rpmファイルの詳細情報の確認(インストール前) ==
== rpmファイルの詳細情報の確認(インストール前) ==
-pオプションを付与すると、インストール前にrpmファイルから確認できる。<br>
-pオプションを付与すると、インストール前にrpmファイルから確認できる。<br>
42行目: 47行目:


== 特定のファイルがどのrpmに含まれているかを確認 ==
== 特定のファイルがどのrpmに含まれているかを確認 ==
-fまたは--fileオプションで表示できる。<br>
<code>-f</code>オプション、または、<code>--file</code>オプションで表示することができる。<br>
以下の例では、/usr/lib64/libcrypto.so.10ファイルは、openssl-libs-1.0.2k-8.el7.x86_64というrpmに含まれていることがわかる。<br>
<br>
特定のコマンドおよびライブラリがインストールされているパッケージ名を調べるために使用する。<br>
rpm -qf $(which <コマンド名>)
# または
rpm -qf <ライブラリのパス>
<br>
各オプションを以下に示す。<br>
* -qオプション
*: quiet (静粛) モードを指定する。
*: つまり、通常の出力ではなく、エラー以外の情報を表示しないようにする。
*: <br>
* -fオプション
*: 指定されたファイルがどのパッケージに属するかを調べるために使用する。
*: -qオプションと組み合わせて使用する場合、指定されたファイルが含まれるパッケージ名を表示する。
<br>
whichコマンドで実行可能ファイルのパスを表示することにより、<br>
特定のコマンドの実行可能ファイルのパスを調べて、それがどのパッケージに属するかを調べるために使用するものである。<br>
<br>
# 使用例:
rpm -qf $(which dd)
# 出力例:
# これは、ddコマンドがcoreutilsパッケージの一部であることを示している
coreutils-8.32-3.el8.x86_64
<br>
# 使用例:
  rpm -qf /usr/lib64/libcrypto.so.10
  rpm -qf /usr/lib64/libcrypto.so.10
   
   
# 出力例:
# /usr/lib64/libcrypto.so.10ファイルは、openssl-libs-1.0.2k-8.el7.x86_64というrpmに含まれている
  openssl-libs-1.0.2k-8.el7.x86_64
  openssl-libs-1.0.2k-8.el7.x86_64
<br><br>
<br><br>
98行目: 130行目:
  ・
  ・
  ・
  ・
<br><br>
== 特定のrpmファイルのアンインストールを行う ==
<code>-e</code>または、<code>--erase</code>オプションは、指定したパッケージを削除する際に使用する。<br>
rpm -e <パッケージ名>
<br><br>
<br><br>


121行目: 158行目:
     /sbin/install-info --delete /usr/share/info/wget.info.gz /usr/share/info/dir || :
     /sbin/install-info --delete /usr/share/info/wget.info.gz /usr/share/info/dir || :
  fi
  fi
<br><br>
== 特定のパッケージのチェック ==
<code>-V</code>または<code>--verify</code>オプションは、指定したパッケージに含まれるファイルの変更や損傷を検査する際に使用する。<br>
rpm -V <パッケージ名>
<br>
パッケージの検査では、 パッケージ内のインストールされたファイルの情報と、rpmデータベースに格納されているパッケージのメタデータから得られたファイルの情報を比較する。<br>
<br>
例えば、ファイルのサイズ、 所有者、グループ等を比較する。<br>
問題がある場合には、問題に応じて文字が出力されるため、その出力結果から、ファイルの整合性に関する問題を識別し、ファイルを元の状態に戻すか、変更を許可するか等を判断する。<br>
<br><br>
<br><br>


144行目: 191行目:
rpmdev-extractコマンドは、rpmdevtoolsというパッケージに含まれている。<br>
rpmdev-extractコマンドは、rpmdevtoolsというパッケージに含まれている。<br>
以下のコマンドを実行して、rpmdevtoolsをインストールする。<br>
以下のコマンドを実行して、rpmdevtoolsをインストールする。<br>
  # CentOS
  # RHEL
  sudo yum install rpmdevtools
  sudo dnf install rpmdevtools
<br>
<br>
rpmdev-extractコマンドは、引数で指定されたRPMファイルを展開する。<br>
rpmdev-extractコマンドは、引数で指定されたRPMファイルを展開する。<br>
  rpmdev-extract <RPMファイル>
  rpmdev-extract <RPMファイル>
<br><br>
<br><br>
{{#seo:
|title={{PAGENAME}} : Exploring Electronics and SUSE Linux | MochiuWiki
|keywords=MochiuWiki,Mochiu,Wiki,Mochiu Wiki,Electric Circuit,Electric,pcb,Mathematics,AVR,TI,STMicro,AVR,ATmega,MSP430,STM,Arduino,Xilinx,FPGA,Verilog,HDL,PinePhone,Pine Phone,Raspberry,Raspberry Pi,C,C++,C#,Qt,Qml,MFC,Shell,Bash,Zsh,Fish,SUSE,SLE,Suse Enterprise,Suse Linux,openSUSE,open SUSE,Leap,Linux,uCLnux,Podman,電気回路,電子回路,基板,プリント基板
|description={{PAGENAME}} - 電子回路とSUSE Linuxに関する情報 | This page is {{PAGENAME}} in our wiki about electronic circuits and SUSE Linux
|image=/resources/assets/MochiuLogo_Single_Blue.png
}}


__FORCETOC__
__FORCETOC__
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]
[[カテゴリ:RHEL]][[カテゴリ:SUSE]][[カテゴリ:Raspberry_Pi]][[カテゴリ:PinePhone]]

2024年11月4日 (月) 01:05時点における最新版

概要

RPM (Red Hat Package Manager) は、RHELやその派生ディストリビューションで使用されるパッケージ管理システムである。
rpmコマンドは、パッケージのインストール、更新、削除、検索等を行うために使用される。


rpmファイルの詳細情報の確認(インストール前)

-pオプションを付与すると、インストール前にrpmファイルから確認できる。
パッケージファイル情報の詳細を表示する。

rpm -qip <rpmファイル名>


該当パッケージでインストールされるファイルの一覧を表示する。

rpm -qlp <rpmファイル名>


パッケージが依存しているファイルを表示する。

rpm -qRp <rpmファイル名>



rpmファイルの詳細情報の確認

-iまたは--infoオプションで確認できる。

rpm -qi <rpmファイル名>



インストールされているrpmのリストの表示

-aまたは--allオプションで確認できる。

rpm -qa

openal-soft-1.17.2-lp151.5.3.1.x86_64
libpng16-16-32bit-1.6.34-lp151.3.3.1.x86_64
openssl-1.1.0i-lp151.1.1.noarch
wicked-service-0.6.60-lp151.2.12.1
・
・
・



rpmファイルでインストールされるファイルの表示

-lまたは--listオプションで表示できる。

rpm -ql <rpmファイル名>

/etc/pki/CA
/etc/pki/CA/certs
/etc/pki/CA/crl
・
・
・



特定のファイルがどのrpmに含まれているかを確認

-fオプション、または、--fileオプションで表示することができる。

特定のコマンドおよびライブラリがインストールされているパッケージ名を調べるために使用する。

rpm -qf $(which <コマンド名>)
# または
rpm -qf <ライブラリのパス>


各オプションを以下に示す。

  • -qオプション
    quiet (静粛) モードを指定する。
    つまり、通常の出力ではなく、エラー以外の情報を表示しないようにする。

  • -fオプション
    指定されたファイルがどのパッケージに属するかを調べるために使用する。
    -qオプションと組み合わせて使用する場合、指定されたファイルが含まれるパッケージ名を表示する。


whichコマンドで実行可能ファイルのパスを表示することにより、
特定のコマンドの実行可能ファイルのパスを調べて、それがどのパッケージに属するかを調べるために使用するものである。

# 使用例:
rpm -qf $(which dd)

# 出力例:
# これは、ddコマンドがcoreutilsパッケージの一部であることを示している
coreutils-8.32-3.el8.x86_64


# 使用例:
rpm -qf /usr/lib64/libcrypto.so.10

# 出力例:
# /usr/lib64/libcrypto.so.10ファイルは、openssl-libs-1.0.2k-8.el7.x86_64というrpmに含まれている
openssl-libs-1.0.2k-8.el7.x86_64



特定のrpmファイルをインストールするために必要なパッケージ名称の表示

以下の例では、nssをインストールするには、bashやglibcが必要であることがわかる。

rpm -q --requires nss | cut -d ' ' -f 1 | xargs rpm -q --whatprovides | sort | uniq

bash-4.2.46-28.el7.x86_64
chkconfig-1.7.4-1.el7.x86_64
glibc-2.17-196.el7_4.2.x86_64
・
・
・



特定のrpmファイルが提供するファイルに依存するパッケージの表示

以下の例では、nssで提供するファイルは、NetworkManagerが使用していることがわかる。

rpm -q --provides nss | cut -d ' ' -f 1 | xargs rpm -q --whatrequires | sort | uniq

NetworkManager-1.8.0-9.el7.x86_64
NetworkManager-libnm-1.8.0-9.el7.x86_64
NetworkManager-tui-1.8.0-9.el7.x86_64
・
・
・



rpmファイルのインストールおよびアンインストール時に実行されるスクリプトの表示

--scriptsオプションで表示できる。

rpm -q --scripts nss-3.16.1-4.el6_5.x86_64

postinstall scriptlet (using /bin/sh):
# If we upgrade, and the shared filename is a regular file, then we must
# remove it, before we can install the alternatives symbolic link.
if [ $1 -gt 1 ] ; then
・
・
・



特定のrpmファイルのインストールテストを行う

実際には実行せずに、 -iや-eオプションを付与した際のインストールテストを行う。
--testオプションで実行できる。

rpm -i --test postgresql-8.4.20-2.el6_6.i686.rpm

エラー: 依存性の欠如:
   libc.so.6 は postgresql-8.4.20-2.el6_6.i686 に必要とされています
   libc.so.6(GLIBC_2.0) は postgresql-8.4.20-2.el6_6.i686 に必要とされています
   libc.so.6(GLIBC_2.1) は postgresql-8.4.20-2.el6_6.i686 に必要とされています
・
・
・



特定のrpmファイルのアンインストールを行う

-eまたは、--eraseオプションは、指定したパッケージを削除する際に使用する。

rpm -e <パッケージ名>



パッケージの更新履歴を見る

--changelogオプションで実行できる。

rpm -q --changelog libblkid-2.17.2-12.14.el6_5.x86_64

* 水  4月 09 2014 Karel Zak <kzak@redhat.com> 2.17.2-12.14.el6_5
- fix #1085818 - hwclock --systohc can hang on busy or virtual machine
・
・
・



パッケージインストール時のスクリプトの確認

--scriptsオプションで確認できる。

rpm -q --scripts wget-1.19.5-7.el8_0.1.x86_64.rpm

postinstall scriptlet (using /bin/sh):
/sbin/install-info /usr/share/info/wget.info.gz /usr/share/info/dir || :
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ]; then
   /sbin/install-info --delete /usr/share/info/wget.info.gz /usr/share/info/dir || :
fi



特定のパッケージのチェック

-Vまたは--verifyオプションは、指定したパッケージに含まれるファイルの変更や損傷を検査する際に使用する。

rpm -V <パッケージ名>


パッケージの検査では、 パッケージ内のインストールされたファイルの情報と、rpmデータベースに格納されているパッケージのメタデータから得られたファイルの情報を比較する。

例えば、ファイルのサイズ、 所有者、グループ等を比較する。
問題がある場合には、問題に応じて文字が出力されるため、その出力結果から、ファイルの整合性に関する問題を識別し、ファイルを元の状態に戻すか、変更を許可するか等を判断する。


RPMファイルの展開

rpmコマンドの問い合わせ機能は、インストールしたファイルが対象となるため、
インストール前にRPMファイルにどのようなファイルが含まれているかを調べたり、一部のファイルを取り出したりすることはできない。

インストール前に上記のようなことを行う場合、RPMパッケージをcpio形式のアーカイブファイルに変換して、ファイルの一覧を表示・展開すればよい。

RPMファイルをcpioファイルに変換するには、rpm2cpioコマンドを使用する。
また、cpio形式のアーカイブファイルから、ファイルを展開およびファイルの一覧を表示するにはcpioコマンドを使用する。

# RPMファイルの一覧の表示
rpm2cpio <ファイル名>.rpm | cpio --list

# RPMファイルの展開
rpm2cpio <ファイル名>.rpm | cpio -id



rpmdev-extractコマンドの使用

上記の方法では、ファイル形式の変換処理が発生するため、入力するコマンドが長くなる。
RPMファイルを展開するだけであれば、rpmdev-extractコマンドを使用した方が簡単である。

rpmdev-extractコマンドは、rpmdevtoolsというパッケージに含まれている。
以下のコマンドを実行して、rpmdevtoolsをインストールする。

# RHEL
sudo dnf install rpmdevtools


rpmdev-extractコマンドは、引数で指定されたRPMファイルを展開する。

rpmdev-extract <RPMファイル>