LoginSignup
7
4

More than 3 years have passed since last update.

rpm -i rpm -e, rpm -q チートシート

Last updated at Posted at 2018-08-13

CentOS7でyumコマンドしか使えないエンジニアが、rpmコマンドをタタタタと使えるようになる。

rpmコマンドをつかう上で最初に知っておきたいのは、rpmコマンドには3つのモード(のようなもの)があることです。3つのモードとは、Installモード、UnInstallモード、Queryモードです。それぞれ紹介していきます。

Installモード

Installモードは、RPMパッケージをインストールします。衝撃の事実ですが、rpmコマンドはRPMパッケージをリポジトリから自動取得してくれないのです。yumコマンド風にインストールしようとしたら、「No such file or directory」というメッセージが。ガビーん。rpmコマンドをつかうときは、RPMパッケージを入手しないといけないわけですね。RPMパッケージはCentOS Vaultとか、yumdownloaderコマンドとかで入手します。

# rpm -i net-tools
error: open of net-tools failed: No such file or directory
  • yumコマンドならこれでできる。
# yum install net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: mirrors.aliyun.com
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
Resolving Dependencies
--> Running transaction check
---> Package net-tools.x86_64 0:2.0-0.22.20131004git.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

==================================================================================================================
 Package                  Arch                  Version                                 Repository           Size
==================================================================================================================
Installing:
 net-tools                x86_64                2.0-0.22.20131004git.el7                base                305 k
  • CentOS VaultからRPMパッケージを入手してみます。Web上のファイルをダウンロードするときはwgetコマンドをつかいます。
# wget http://vault.centos.org/7.2.1511/updates/x86_64/Packages/python-2.7.5-38.el7_2.x86_64.rpm
--2018-08-13 10:24:37--  http://vault.centos.org/7.2.1511/updates/x86_64/Packages/python-2.7.5-38.el7_2.x86_64.rpm
Resolving vault.centos.org (vault.centos.org)... 162.251.108.7, 2607:f128:40:1600:225:90ff:fe00:bde6
Connecting to vault.centos.org (vault.centos.org)|162.251.108.7|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 90752 (89K) [application/x-rpm]
Saving to: 'python-2.7.5-38.el7_2.x86_64.rpm'

100%[========================================================================>] 90,752       329KB/s   in 0.3s

2018-08-13 10:24:38 (329 KB/s) - 'python-2.7.5-38.el7_2.x86_64.rpm' saved [90752/90752]
  • yumdownloaderコマンドでRPMパッケージを入手してみます。
# yumdownloader net-tools
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * remi-safe: ftp.riken.jp
 * updates: ftp.iij.ad.jp
net-tools-2.0-0.22.20131004git.el7.x86_64.rpm                                              | 305 kB  00:00:00

①普通にインストール

# rpm -i net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
    file /bin/netstat from install of net-tools-2.0-0.22.20131004git.el7.x86_64 conflicts with file from package net-tools-2.0-0.17.20131004git.el7.x86_64
    file /sbin/arp from install of net-tools-2.0-0.22.20131004git.el7.x86_64 conflicts with file from package net-tools-2.0-0.17.20131004git.el7.x86_64
    file /sbin/ether-wake from install of net-tools-2.0-0.22.20131004git.el7.x86_64 conflicts with file from package net-tools-2.0-0.17.20131004git.el7.x86_64
    file /sbin/ifconfig from install of net-tools-2.0-0.22.20131004git.el7.x86_64 conflicts with file from package net-tools-2.0-0.17.20131004git.el7.x86_64`

[使い方]
# rpm -i RPMパッケージのパス

[オプションの説明]
-i: Install (インストール)

②詳細に進行状況をみながらインストール

# rpm -ivh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:net-tools-2.0-0.22.20131004git.el################################# [100%]

[使い方]
# rpm -ihv RPMパッケージのパス

[オプションの説明]
-i: Install (インストール)
-v: Verbose (詳細)
-h: Hash (ハッシュ)

③インストールしてアップグレード

# rpm -U net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

[使い方]
# rpm -U RPMパッケージのパス

[オプションの説明]
-U: Upgrade (アップグレード)

④詳細に進行状況をみながらインストールしてアップグレード

# rpm -Uvh net-tools-2.0-0.22.20131004git.el7.x86_64.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:net-tools-2.0-0.22.20131004git.el################################# [100%]

[使い方]
# rpm -Uvh RPMパッケージのパス

[オプションの説明]
-U: Upgrade (アップグレード)
-v: Verbose (詳細)
-h: Hash (ハッシュ)

④アップデートだけ

# rpm -F net-tools-2.0-0.22.20131004git.el7.x86_64.rpm

[使い方]
# rpm -F RPMパッケージのパス

[オプションの説明]
-F: Freshen (アップグレード)

[補足]
-Uオプションは、RPMパッケージがインストールされていなかったら、インストールしてからアップグレードします。
-Fオプションは、RPMパッケージがインストールされていなかったら、アップグレードしません。

UnInstallモード

UnInstallモードは、RPMパッケージをアンインストールします。Installモードとは異なり、RPMパッケージのパスではなく、RPMパッケージ名を指定します。

①普通にアンインストール

# rpm -e net-tools

[使い方]
# rpm -e RPMパッケージ名

[オプションの説明]
-e: Erase (アンインストール)

②詳細に進行状況をみながらアンインストール

# rpm -evh net-tools
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:net-tools-2.0-0.22.20131004git.el################################# [100%]

[使い方]
# rpm -evh RPMパッケージ名

[オプションの説明]
-e: Erase (アンインストール)
-v: Verbose (詳細)
-h: Hash (ハッシュ)

Queryモード

Queryモードは、インストール済みのRPMパッケージについて詳しく調べることができます。
Queryモードは基本的に-qオプションを頭につけます。

①インストール済みRPMパッケージを表示する

$ rpm -q net-tools
net-tools-2.0-0.22.20131004git.el7.x86_64

[使い方]
$ rpm -q パッケージ名

[オプションの説明]
-q: Query (問い合わせ)

②インストール済みRPMパッケージを全部表示する

$ rpm -qa
php-mbstring-5.4.16-45.el7.x86_64
setserial-2.17-33.el7.x86_64
mailx-12.5-12.el7_0.x86_64
filesystem-3.2-20.el7.x86_64
iwl6050-firmware-41.28.5.1-43.el7.noarch
net-tools-2.0-0.22.20131004git.el7.x86_64
rootfiles-8.1-11.el7.noarch
mariadb-libs-5.5.50-1.el7_2.x86_64
gettext-common-devel-0.18.2.1-4.el7.noarch
iwl6000g2a-firmware-17.168.5.3-43.el7.noarch

[使い方]
$ rpm -qa

[オプションの説明]
-q: Query (問い合わせ)
-a: All (全部)

③インストール済みRPMパッケージの情報を表示する

$ rpm -qi net-tools
Name        : net-tools
Version     : 2.0
Release     : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2018年08月13日 11時45分15秒
Group       : System Environment/Base
Size        : 938986
License     : GPLv2+
Signature   : RSA/SHA256, 2017年08月11日 03時30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date  : 2017年08月03日 18時17分34秒
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/net-tools/
Summary     : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.

[使い方]
$ rpm -qi パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-i: Info (情報)

④インストール済みRPMパッケージの設定ファイルを表示する

$ rpm -qc php
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.modules.d/10-php.conf

[使い方]
$ rpm -qc パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-c: Configfiles (設定ファイル)

⑤あるファイルがどのRPMパッケージに含まれているのか調べる

$ rpm -qf /etc/php.ini
php-common-5.4.16-45.el7.x86_64

[使い方]
$ rpm -qf ファイルのパス

[オプションの説明]
-q: Query (問い合わせ)
-f: file (ファイル)

⑥インストール済みRPMパッケージのドキュメントファイルを表示する

$ rpm -qd net-tools
/usr/share/doc/net-tools-2.0/COPYING
/usr/share/man/de/man5/ethers.5.gz
/usr/share/man/de/man8/arp.8.gz
/usr/share/man/de/man8/ifconfig.8.gz
/usr/share/man/de/man8/netstat.8.gz
/usr/share/man/de/man8/plipconfig.8.gz
/usr/share/man/de/man8/route.8.gz
/usr/share/man/de/man8/slattach.8.gz
/usr/share/man/fr/man5/ethers.5.gz
/usr/share/man/fr/man8/arp.8.gz

[使い方]
$ rpm -qd パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-d: Docfiles (ドキュメントファイル)

⑦インストール済みRPMパッケージに含まれるファイルを全部表示する

$ rpm -ql net-tools
/bin/netstat
/sbin/arp
/sbin/ether-wake
/sbin/ifconfig
/sbin/ipmaddr
/sbin/iptunnel
/sbin/mii-diag
/sbin/mii-tool
/sbin/nameif
/sbin/plipconfig

[使い方]
$ rpm -ql パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-l: List (リスト)

⑧インストール済みRPMパッケージの依存関係を表示する

$ rpm -qR httpd
/etc/mime.types
system-logos >= 7.92.1-1
httpd-tools = 2.4.6-67.el7.centos.6
/usr/sbin/useradd
/usr/sbin/groupadd
systemd-units
systemd-units
systemd-units
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(FileCaps) <= 4.6.1-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1

[使い方]
$ rpm -qR パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-R: Requires (必要)

⑨インストールしていないRPMパッケージについていろいろ調べる

$ rpm -qp php-5.4.16-45.el7.x86_64.rpm
php-5.4.16-45.el7.x86_64

[使い方]
$ rpm -qp パッケージ名

[オプションの説明]
-q: Query (問い合わせ)
-p: Package (パッケージ)

  • いろいろ調べられます。
$ rpm -qpi php-5.4.16-45.el7.x86_64.rpm
Name        : php
Version     : 5.4.16
Release     : 45.el7
Architecture: x86_64
Install Date: (not installed)
Group       : Development/Languages
Size        : 4591806
License     : PHP and Zend and BSD
Signature   : RSA/SHA256, 2018年04月25日 20時36分24秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : php-5.4.16-45.el7.src.rpm
$ rpm -qpc php-5.4.16-45.el7.x86_64.rpm
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.modules.d/10-php.conf
$ rpm -qpR php-5.4.16-45.el7.x86_64.rpm
httpd-mmn = 20120211x8664
php-common(x86-64) = 5.4.16-45.el7
php-cli(x86-64) = 5.4.16-45.el7
httpd
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
libbz2.so.1()(64bit)
libcom_err.so.2()(64bit)
libcrypto.so.10()(64bit)

yumコマンドでできなくて、rpmコマンドでしかできないことがあるのか?調べる。

結論

RPMパッケージのインストール/アンインストールはyumコマンドがよいです。
RPMパッケージについて詳しく調べたいときは、rpmコマンドがよいです。rpmコマンドビギナーは、Queryモードをタタタタとつかえると1UPできそうですね。

7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4