技術者になりたい何か

技術者になりたい何かの覚書的な何かです

パッケージ管理しりーず (RedHat系-rpmによるパッケージ管理)

rpmパッケージとは

rpmパッケージはRed Hat系のデストリビューション用のパッケージ。

Windowsでいうところのexe,msiに近いけど、別にインストーラーというわけではない。
rpmコマンドに渡すことによって、インストール・アンインストールなどの操作ができる。
yumリポジトリを参照してこれらの操作を行うのに対し、rpmは基本的にrpmパッケージを手元に置いて操作する際に使う。

ちなみに自前ビルドしてmake installとかで入れてしまったパッケージは、
展開されて作成されたディレクトリ、ファイルを全て手動で削除するという非常に面倒な作業によってアンインストールすることになる
(たまにアンインストールスクリプトが付属している親切なパッケージもある)
が、rpmで入れたパッケージはrpmの管理下に置かれるため、rpm -e パッケージ名 で一発で安全に削除できる。

yumで見つからないパッケージの際はどこかでrpmパッケージを配布していないかをビルドする前に探すのがおすすめだが、
いわゆる野良パッケージとなる為、配布元の信頼度などを考慮して使用するのが良い。

rpmコマンドとその使い方

主なオプション

-i パッケージ名 インストール
-U パッケージ名 パッケージをアップグレードする(なかったらインストールする)
-F パッケージ名 パッケージをアップグレードする(なかったら何もしない)
-e パッケージ名 パッケージをアンインストールする
(併用オプション)
-v 詳細情報表示(インストール時)
-h 進行状況を####で表示
--nodeps 依存関係を無視してインストールする(依存関係でエラーが出たけど強引にインストールしたいとき)
--force 既存ファイルを新しいものに置き換える(競合エラーが出たけど強引にインストールしたいとき)
--test インストールはしないでテストする

 

rpmコマンドを使ったパッケージのインストール

実行例

zsh-4.3.11-4.el6.centos.2.x86_64.rpmをカレントディレクトリに置いた状態で以下を実行。

$ sudo rpm -ihv zsh-4.3.11-4.el6.centos.2.x86_64.rpm
準備中... ########################################### [100%]
1:zsh ########################################### [100%]
$ sudo rpm -U zsh
エラー: zsh のオープンに失敗: そのようなファイルやディレクトリはありません
$ sudo rpm -U zsh-4.3.11-4.el6.centos.2.x86_64.rpm
パッケージ zsh-4.3.11-4.el6.centos.2.x86_64 は既にインストールされています。


アップグレードしようとしても新しいバージョンが無いので怒られる。

 

rpmコマンドを使ってパッケージ情報を調べる

主なオプション2

-q パッケージ名 指定したパッケージがインストールされているか表示する

(併用オプション)
-a (--all) インストール済みの全てのパッケージを表示する
-f ファイル名 指定したパッケージを含むパッケージ名を表示する
-p パッケージファイル名 対象としてパッケージファイルを指定する。
-c(--configfiles) 設定ファイルのみ表示する
-d(--docfiles) ドキュメントのみ表示する
-i(--info) インストール済みパッケージの情報を表示する
-l(--list) 指定したパッケージに含まれるファイルを表示する
-R(--requires) 指定したパッケージが依存しているファイル等を表示する
--changelog 変更履歴を表示する

 

-qで指定パッケージのなにかを尋ねるモード

実行例

パッケージ情報

$ rpm -qa zsh
zsh-4.3.11-4.el6.centos.2.x86_64

依存ファイルを表示

$ rpm -qR zsh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/zsh
/sbin/install-info
/sbin/install-info
config(zsh) = 4.3.11-4.el6.centos.2
coreutils
grep
grep
libc.so.6()(64bit)
libc.so.6(GLIBC_2.11)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
libc.so.6(GLIBC_2.3)(64bit)
libc.so.6(GLIBC_2.3.4)(64bit)
libc.so.6(GLIBC_2.4)(64bit)
libc.so.6(GLIBC_2.7)(64bit)
libdl.so.2()(64bit)
libdl.so.2(GLIBC_2.2.5)(64bit)
libm.so.6()(64bit)
libm.so.6(GLIBC_2.2.5)(64bit)
libncursesw.so.5()(64bit)
libtinfo.so.5()(64bit)
mktemp
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1

変更履歴を表示する

 

$ rpm -q --changelog zsh
* 火 3月 01 2016 Kamil Dudka <kdudka@redhat.com> - 4.3.11-5.el6_7.2
- signal-handling related fixes collected from upstream (#1316945)

* 火 10月 20 2015 Kamil Dudka <kdudka@redhat.com> - 4.3.11-4.el6_7.1
- fix malloc() signal leak in lexsave() (#1267903)

* 月 5月 18 2015 Kamil Dudka <kdudka@redhat.com> - 4.3.11-4
- signal safety when updating global state (#978613)

* 月 2月 23 2015 Kamil Dudka <kdudka@redhat.com> - 4.3.11-3
- signal safety when updating global state in execshfunc() (#978613)

* 火 1月 13 2015 Kamil Dudka <kdudka@redhat.com> - 4.3.11-2
- fix defects found by GCC and Coverity Analysis (#1181608)
(以下略)

 インストールされてるパッケージの情報

 

$ rpm -qi zsh
Name : zsh Relocations: (not relocatable)
Version : 4.3.11 Vendor: CentOS
Release : 4.el6.centos.2 Build Date: 2016年03月23日 03時57分38秒
Install Date: 2016年06月18日 03時08分30秒 Build Host: c6b8.bsys.dev.centos.org
Group : System Environment/Shells Source RPM: zsh-4.3.11-4.el6.centos.2.src.rpm
Size : 5298977 License: BSD
Signature : RSA/SHA1, 2016年03月23日 04時39分32秒, Key ID 0946fca2c105b9de
Packager : CentOS BuildSystem <http://bugs.centos.org>
URL : http://zsh.sunsite.dk/
Summary : A powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor. Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements. Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.

rpmコマンドを使ったパッケージのアンインストール

アンインストール実行例

$ yum info zsh
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
インストール済みパッケージ
名前 : zsh
アーキテクチャ : x86_64
バージョン : 4.3.11
リリース : 4.el6.centos.2
容量 : 5.1 M
リポジトリー : installed
要約 : A powerful interactive shell
URL : http://zsh.sunsite.dk/
ライセンス : BSD
説明 : The zsh shell is a command interpreter usable as an interactive login
: shell and as a shell script command processor. Zsh resembles the ksh
: shell (the Korn shell), but includes many enhancements. Zsh supports
: command line editing, built-in spelling correction, programmable
: command completion, shell functions (with autoloading), a history
: mechanism, and more.

 

$ sudo rpm -e zsh

$ rpm -qi zsh
パッケージ zsh はインストールされていません。

$ yum info zsh
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.riken.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
利用可能なパッケージ
名前 : zsh
アーキテクチャ : x86_64
バージョン : 4.3.11
リリース : 4.el6.centos.2
容量 : 2.2 M
リポジトリー : updates
要約 : A powerful interactive shell
URL : http://zsh.sunsite.dk/
ライセンス : BSD
説明 : The zsh shell is a command interpreter usable as an interactive login
: shell and as a shell script command processor. Zsh resembles the ksh
: shell (the Korn shell), but includes many enhancements. Zsh supports
: command line editing, built-in spelling correction, programmable
: command completion, shell functions (with autoloading), a history
: mechanism, and more.

ちなみにrpmコマンドで参照するのはrpmのデータベースだが、実際には「インストールされているrpmパッケージ」についてしか参照できない。
また、インストール時も対象パッケージのフルパスでかつパッケージ名もフルでいれなくてはならない。


よって、特に制約のないサーバの運用においては基本的にはyumで事足りるし、yumを使うべきだし、yumのほうが便利だと思う。

商用サーバとかでバージョンの制約が有ったり、他のパッケージとの兼ね合いで・・・というときはrpmパッケージを落としてきたり持ち込んで、それをインストールしたりすることはよくある。