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できそうですね。