2

Linuxパッケージ管理 (dpkg, apt, rpm, yum ) まとめ

​❏ パッケージ管理とは

パッケージ

実行プログラム、設定ファイル、ドキュメントなどを1つのファイルにまとめたもの

主に、
・インストール
・アンインストール
・アップデート
といった作業で、パッケージの所在を管理していたり、パッケージ間の依存関係や競合を回避する仕組み

❏ Linuxにおけるパッケージ管理方式

①Debian形式

dpkg,apt

②RPM形式

rpm,yum

①②に互換性はないが、alienコマンドで形式変換が可能

​❏ dpkg

オプション 説明
-E 既に同バージョンがインストール(以降、ins)されていれば、insしない
-G 既に新バージョンがinsされていれば、insしない
-R ディレクトリ内を再帰的に処理する
アクション 説明
-i PKG名(– install) パッケージをinsする
-r PKG名(– remove) 設定ファイルを残し、PKGをアンインストールする
-P PKG名(– purge) 設定ファイル含め、完全削除
-l 検索パターン(– list) ins済みPKGを検索表示
-L PKG名(– listfiles) 指定したPKGからinsされたファイルを一覧表示する
-s PKG名(– status) insファイルを表示する

​❏ rpm と yum の違い

rpm コマンドは、rpm 形式のパッケージを管理するときに使います。
そして、yum コマンドも、rpm 形式のパッケージを管理するときに使います。実はこの点は同じなのです。

もう少し言うと、yum は内部で rpm を呼び出して使っています。
そして rpm より高度な機能を提供しています。
したがって、通常は yum を使ったほうが便利だと思います。
主に下記のような違いがあります。

■パッケージ検索時の使い分け

rpm は「-q」オプション(query の略)を付けて実行すると
RPM データベース内を検索することができます。
すなわち既にインストールされたパッケージの情報を検索できます。
一方で、インストールされていないパッケージを検索しても、インストールされていない旨が表示されるだけです。

これに対して yum は、RPM データベース内に加えリポジトリも参照することができるので、まだインストールされていないパッケージの情報も検索することができます。

■パッケージのインストール(またはアップデート)時の使い分け
yum はパッケージをインストールする際に、依存関係のあるパッケージを自動でインストールしてくれます。一方 rpm は依存関係のあるパッケージを自動でインストールしてくれません。したがって、パッケージのインストール時には、通常、 rpm ではなく yum を使います。

リポジトリに含まれていないパッケージを扱う場面では yum は使えないので、リポジトリに含まれていないパッケージをインストールする際には rpm を使います。

■パッケージのアンインストール時の使い分け
「yum remove」コマンドでパッケージをアンインストールできます。あるパッケージをアンインストールしようとして、当該パッケージが他のパッケージで使われているとき、依存しているパッケージも一緒に削除されます。

rpm について、「-e」オプションを付けるとパッケージをアンインストールできます。あるパッケージをアンインストールしようとして、当該パッケージが他のパッケージで使われているとき、エラーメッセージが表示されてパッケージのアンインストールは行われません。
ただし「–nodeps」オプションを付けた場合は依存関係のチェックは省略されるので、対象となるパッケージのみをアンインストールできます。

したがって、ほとんどの場合、yum だけ覚えていれば事足ります。
以下、よく使う yum コマンドを説明します。

​❏ yum

[ 書式 ]

yum サブコマンド
サブコマンド 説明
check-update アップデート対象のPKGリストを表示
update PKG名 指定したPKGをアップデートする
install PKG名 指定したPKGをinsする
remove PKG名 指定したPKGをアンインストールする
info PKG名 指定したPKG情報を表示
パッケージの詳細情報を表示します。同じようなパッケージ名が複数あって目的とするパッケージを見つけ出す場面において、「yum search」が表示する情報だけでは不十分というときに使います。
list インストールされているパッケージと、(インストールされていないけれども)利用可能なパッケージを一覧表示
search キーワード PKG情報をキーワードで検索する
あるパッケージについて調べたいのだけれど、正確なパッケージ名が分からない時や例えば下記のように「yum search mysql」を実行すると、パッケージ名に「mysql」が含まれていなくても「mysql」に関連するパッケージまで一覧表示してることも「yum list」にはない特長です
grouplist PKGグループをリスト表示する
groupinstall グループ 指定したグループのPKGをinsする

*補足*
指定したグループのPKGをinsする
yumdownloader PKG名

★yumは万能だけどrpmしか使えない状況もある★

​❏ rpm

オプション 説明
-i インストール
-U アップグレード(新規の場合、インストール)
-F パッケージがインストールされていれば、アップグレードする
-v パッケージ名などの詳細情報表示
-h 進行状況を表示
-e アンインストールする
アンインストールできるが、依存関係のパッケージがある場合は、
インストールできない。
【依存関係を無視してアンインストール】 rpm -e –nodeps package
-q rpmデータベースを検索し、インストール済みパッケージを問い合わせる。無ければその旨の結果が返却される。
rpm -q hachim
パッケージ hachim はインストールされていません。
-a 全てを表示する
お気づきのとおり「yum list」コマンドと非常に似ています。
あるパッケージが既にインストールされているか否かの確認や、インストールされているパッケージのバージョン確認に使います。
# rpm -qa | grep mysql
mysql-libs-5.5.46-1.el6.remi.x86_64
mysql-devel-5.5.46-1.el6.remi.x86_64
mysql-5.5.46-1.el6.remi.x86_64
php-mysqlnd-5.6.18-1.el6.remi.x86_64
mysql-server-5.5.46-1.el6.remi.x86_64
compat-mysql51-5.1.54-1.el6.remi.x86_64
-p パッケージを指定する
引数に rpm パッケージファイル(拡張子が「.rpm」のファイル)を指定するときに必要です。インターネット上にある rpm パッケージファイルの URL を指定したり、ダウンロードした rpm ファイルを指定するときに使います。

これも yum にはない機能です。yum はリポジトリに含まれないパッケージに対してはコマンドを実行できないので、リポジトリに含まれないパッケージを検索するときにはこのオプションが役に立ちます。

具体的な例を挙げると、以前 紹介した Webtatic リポジトリ(正確にはリポジトリの場所を示した repo ファイル)は rpm 形式のパッケージとして提供されています。このパッケージの内容を表示させるためには下記のようにします。

# rpm -qpl http://repo.webtatic.com/yum/centos/5/latest.rpm
warning: … signature: NOKEY, key ID xxxxxxxx
/etc/pki/rpm-gpg/RPM-GPG-KEY-webtatic-andy
/etc/yum.repos.d/webtatic.repo
/usr/share/doc/webtatic-release-5
/usr/share/doc/webtatic-release-5/GPLv2

-ql インストールファイルを表示する
パッケージ内のファイルを一覧表示します。パッケージ内のファイルを表示する機能は yum にはないので、rpm を使う場面のひとつです。
# rpm -ql mysql | grep bin
/usr/bin/msql2mysql
/usr/bin/my_print_defaults
/usr/bin/mysql
/usr/bin/mysql_config
/usr/bin/mysql_find_rows
/usr/bin/mysql_waitpid
/usr/bin/mysqlaccess
/usr/bin/mysqladmin
/usr/bin/mysqlbinlog
/usr/bin/mysqlcheck
/usr/bin/mysqldump
/usr/bin/mysqlimport
/usr/bin/mysqlshow
/usr/bin/mysqlslap
-qa 全てを表示する
-qf 指定したパッケージのファイルを表示する
-nodepth パッケージの依存関係を無視する

纏めると・・・

パッケージ内のファイルを表示させる場面と、リポジトリに含まれていないパッケージを扱う場面では、yum ではなく rpm を使う。

以上です。

​❏ 追記

❏ ローカルに保存されたrpmパッケージをyumでインストール
# yum localinstall rpm形式のパッケージ

通常リポジトリで提供されていないパッケージをwgetでダウンロードした場合、rpmコマンドでインストールを行います。
しかし依存関係で別のパッケージをインストールする必要がある場合、その依存関係にあるパッケージもweb上で探してwgetでダウンロード、インストールする必要があります。

このオプションでrpmパッケージをインストールすると、
依存関係にあるパッケージが登録されているリポジトリにある場合、自動でダウンロード、インストールしてくれます。

2 thoughts on “Linuxパッケージ管理 (dpkg, apt, rpm, yum ) まとめ

  1. yum localinstall rpmfilename
    でrpmパッケージを指定できたような気がします。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です