Linux講座にようこそ。このページは「Linuxの使い方 - 付録2. パッケージ管理(rpmとyumコマンド)です。

Linuxの使い方

付録

付録2. パッケージ管理(rpmとyumコマンド)

システムのインストール後に、使用しているソフトウェアにセキュリティホールが見つかることが良く有ります。この様な時には対策済みのバージョンにアップデートする必要が有ります。Fedora等の多くのディストリビューションではソフトウェアはRPMパッケージと呼ばれる形式のファイルで提供されていますので、ソフトウェアのバージョンアップはRPMパッケージを入手して、それをインストールするということになります。

RPMパッケージの管理ツールはいくつか有りますが、ここでは次のツールをご紹介します。

パッケージ管理ツールにはGUIツールもありますので、デスクトップ環境の場合はGUIツールを使うと良いでしょう。

Apper(Software Management)
【付図2-1】
Apper(Software Management)

付図2-1はApper(Software Management)というソフトウェア管理ツールで、パッケージの検索・インストール・削除・最新パッケージへの更新、等が行えます。

付録2.1 rpmコマンド

rpmコマンドはRPMパッケージのインストールやアンインストール(削除)はもちろん、インストール済みパッケージの検索等も行えます。

このコマンドの特徴はパッケージの依存関係をチェックして、前堤となるパッケージがインストールされていない場合はメッセージを出力してエラー終了します。また、削除のときにも削除しようとしているパッケージを前堤としているものが有ればエラー終了します。これにより、必要なパッケージが無いために動作しないとか、必要なパッケージを誤って削除してしまうというようなトラブルを防ぐことが出来ます。

一般形式

使用目的別にオプションを説明します。処理内容を指定するオプション(-i、-U、-e、-q)以外のオプションは省略可能です。

※パッケージの新規インストール
# rpm -ivh --test rpmファイルパス名1 rpmファイルパス名2 …

※パッケージのアップデート
# rpm -Uvh --test rpmファイルパス名1 rpmファイルパス名2 …

※パッケージの削除
# rpm -e --nodeps --test パッケージ名1 パッケージ名2 …

※パッケージの検索表示
# rpm -qailR -p rpmファイルパス名
【付表2-1】rpmコマンドのオプション一覧(処理内容を指定するオプション以外)
オプション意味
-v進捗状態等の詳細メッセージを表示します。
-h, --hash進捗状態を"#"とパーセントで表示します。
-a, --allインストール済みの全てのパッケージを表示します。
-i, --info名前やバージョン等のパッケージ情報を表示します。
-l, --listパッケージに含まれるファイルを表示します。
-R, --requiresパッケージが依存する(前堤となる)パッケージを表示します。
-p, --package検索するrpmファイルを指定します。(URLの指定も可能です)パッケージ名で検索する場合は、このオプションは不要です。
--test実際のインストールやアップデートは行なわず、依存関係等のチェックを行ないます。
--nodeps依存関係のチェックを行なわず、削除を行ないます。

実行例

カレントディレクトリにあるxpenguins-2.2-1.i386.rpmを新規にインストールします。

# rpm -ivh xpenguins-2.2-1.i386.rpm ← インストールします
準備中...                ########################################### [100%]
   1:xpenguins              ########################################### [100%]
#

インストール済みのMySQL関連のパッケージを表示します。引数にパッケージ名称を指定すれば検索して表示しますが、通常、パッケージ名は不明だと思います。そこで、インストール済みパッケージを全て検索して、その中から目的のものを表示します。(検索は一般ユーザでも行えます)

$ rpm -qa | grep mysql ← 全て検索して、grepで目的のものを表示します
mysql-server-5.1.48-2.fc13.i686
mod_auth_mysql-3.0.0-10.fc12.i686
mysql-libs-5.1.48-2.fc13.i686
mysql-embedded-5.1.48-2.fc13.i686
qt-mysql-4.6.3-8.fc13.i686
mysql-5.1.48-2.fc13.i686
php-mysql-5.3.3-1.fc13.i686
$

インストール済みのmysqlの情報を表示します。

$ rpm -qi mysql ← 詳細情報を表示します
Name        : mysql                        Relocations: (not relocatable)
Version     : 5.1.48                            Vendor: Fedora Project
Release     : 2.fc13                        Build Date: 2010年07月14日 11時57分45秒
   …
 以下省略
   …
$
$ rpm -qR mysql ← 依存するパッケージを表示します
/bin/sh
/usr/bin/perl
bash
fileutils
grep
libc.so.6
   …
 以下省略
   …
$
$ rpm -ql mysql ← パッケージ内のファイルを表示します
/usr/bin/msql2mysql
/usr/bin/my_print_defaults
/usr/bin/mysql
/usr/bin/mysql_config
   …
 以下省略
   …
$

付録2.2 yumコマンド

rpmコマンドでインストールやアップデートを行った場合、依存関係にあるパッケージがインストールされていないと、エラーメッセージを出力して終了してしまいます。そこで、依存関係にあるパッケージをインストールしなければいけないわけですが、それをインストールすると、こちらからも依存関係のエラーが出力されるようなこともあります。

yumコマンドの場合は依存関係にあるパッケージをチェックして、インストールされていなければ自動的にインストールします。これにより、上記のような煩わしさから開放されます。また、yumコマンドはrpmコマンドの機能をほぼ包含していますので、RPMパッケージの管理コマンドとしてはyumコマンドの方がよく使われています。

RPMパッケージはyumレポジトリサーバーと呼ぶサーバーで管理されており、通常はFedoraプロジェクトの公式レポジトリからダウンロードしてインストールを行います。レポジトリの設定は/etc/yum.repos.d/以下に用意してあります。公式レポジトリだけを利用するのであれば、設定を追加・修正する必要はありません。しかし、非公式レポジトリを使用する場合は、設定ファイルを取得してインストールする必要があります。例えば、ウェブブラウザのFlash Playerプラグインはアドビ・システムズ株式会社のダウンロードサイトに用意されているyumの設定ファイルをあらかじめインストールしておき、それからFlashをインストールすることになります。

yumコマンドはインターネット上のレポジトリにアクセスしますので、インターネットにアクセスできる環境が必要です。また、パッケージの検索・表示は一般ユーザの権限で行えますが、その他の操作(新規インストール、アップデート、削除)はシステム管理者(root)の権限が必要です。

一般形式

使用目的別にオプションを説明します。

※ パッケージの新規インストール
# yum install -y パッケージ名1 パッケージ名2 …

※ パッケージのアップデート
# yum update -y パッケージ名1 パッケージ名2 …
# yum update -y ← アップデート可能な全パッケージをアップデートします

※ パッケージの削除
# yum remove パッケージ名1 パッケージ名2 …

※ パッケージの検索・表示
$ yum check-update ← 実際のアップデートはしないで、アップデート可能なパッケージを表示します
$ yum list installed ← インストール済みのパッケージを表示します
$ yum search キーワード ← キーワードでパッケージを検索します
$ yum info パッケージ名 ← パッケージの情報を表示します
$ yum provides ファイルパス名 ← ファイルがどのパッケージに含まれるかを表示します

※ その他
# yum clean all ← ダウンロードしたパッケージのキャッシュを削除します
【付表2-2】yumコマンドのオプション一覧
オプション意味
-y, --assumeyes問い合わせのメッセージに対して、全て「y(yes)」で答えます。

実行例

KDEのゲームパッケージを検索し、パッケージの情報を表示ます。

$ yum search 'kde game' ← 検索キーとしてkdeとgameを指定します
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: ftp.iij.ad.jp
 * rpmfusion-free: mirrors.163.com
 * rpmfusion-free-updates: mirrors.163.com
 * rpmfusion-nonfree: mirrors.163.com
 * rpmfusion-nonfree-updates: mirrors.163.com
 * updates: ftp.tsukuba.wide.ad.jp
================================ 一致: kde game ================================
games-menus.noarch : Catagorized submenus for the GNOME/KDE Games menu
kdegames.i686 : KDE Games
kdegames-minimal.i686 : Minimal set of KDE Games
$
$ yum info kdegames ← kdegamesパッケージの情報を表示します
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: ftp.iij.ad.jp
 * rpmfusion-free: mirrors.163.com
 * rpmfusion-free-updates: mirrors.163.com
 * rpmfusion-nonfree: mirrors.163.com
 * rpmfusion-nonfree-updates: mirrors.163.com
 * updates: ftp.riken.jp
利用可能なパッケージ
Name        : kdegames
Arch        : i686
Epoch       : 6
Version     : 4.4.5
Release     : 1.fc13
Size        : 45 M
リポジトリー  : updates
Summary     : KDE Games
URL           : http://www.kde.org/
License     : GPLv2
説明          : Games for KDE 4, including:
              : * bomber
              : * bovo
   …
 以下省略
   …
$

kdegamesパッケージを新規インストールします。

# yum install kdegames
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: ftp.riken.jp
 * rpmfusion-free: mirrors.163.com
 * rpmfusion-free-updates: mirrors.163.com
 * rpmfusion-nonfree: mirrors.163.com
 * rpmfusion-nonfree-updates: mirrors.163.com
 * updates: ftp.riken.jp
インストール処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています
---> パッケージ kdegames.i686 6:4.4.5-1.fc13 をインストールに設定しました
--> 依存性の処理をしています: gnugo のパッケージ: 6:kdegames-4.4.5-1.fc13.i686
--> トランザクションの確認を実行しています
---> パッケージ gnugo.i686 0:3.8-2.fc12 をインストールに設定しました
--> 依存性解決を終了しました

依存性を解決しました

================================================================================
 パッケージ        アーキテクチャ
                                 バージョン              リポジトリー      容量
================================================================================
インストールしています:
 kdegames          i686          6:4.4.5-1.fc13          updates           45 M
依存性関連でのインストールをします:
 gnugo             i686          3.8-2.fc12              fedora           1.1 M

トランザクションの要約
================================================================================
Install       2 Package(s)

総ダウンロード容量: 47 M
インストール済み容量: 75 M
これでいいですか? [y/N]y ← 「y」を応答します
パッケージをダウンロードしています:
Setting up and reading Presto delta metadata
Processing delta metadata
Package(s) data still to download: 47 M
(1/2): gnugo-3.8-2.fc12.i686.rpm                         | 1.1 MB     00:00
(2/2): kdegames-4.4.5-1.fc13.i686.rpm                    |  45 MB     00:10
--------------------------------------------------------------------------------
合計                                            4.2 MB/s |  47 MB     00:11
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  インストールし : gnugo-3.8-2.fc12.i686                                    1/2
  インストールし : 6:kdegames-4.4.5-1.fc13.i686                             2/2

インストールしました:
  kdegames.i686 6:4.4.5-1.fc13

依存性関連をインストールしました:
  gnugo.i686 0:3.8-2.fc12

完了しました!
#

上記実行例でインストールしたkdegamesパッケージを削除します。

# yum remove gnugo kdegames
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
削除処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています
---> パッケージ gnugo.i686 0:3.8-2.fc12 を削除に設定しました
---> パッケージ kdegames.i686 6:4.4.5-1.fc13 を削除に設定しました
--> 依存性解決を終了しました

依存性を解決しました

================================================================================
 パッケージ       アーキテクチャ
                               バージョン                リポジトリー      容量
================================================================================
削除:
 gnugo            i686         3.8-2.fc12                @fedora          6.7 M
 kdegames         i686         6:4.4.5-1.fc13            @updates          68 M

トランザクションの要約
================================================================================
Remove        2 Package(s)

インストール済み容量: 75 M
これでいいですか? [y/N]y ← 「y」を応答します
パッケージをダウンロードしています:
rpm_check_debug を実行しています
トランザクションのテストを実行しています
トランザクションのテストを成功しました
トランザクションを実行しています
  削除中         : 6:kdegames-4.4.5-1.fc13.i686                             1/2
  削除中         : gnugo-3.8-2.fc12.i686                                    2/2

削除しました:
  gnugo.i686 0:3.8-2.fc12              kdegames.i686 6:4.4.5-1.fc13

完了しました!
#

インストール済の全パッケージに対してアップデートを確認後アップデートを行います。

# yum check-update ← アップデート・パッケージが有るかを確認します
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: ftp.iij.ad.jp
 * rpmfusion-free: mirrors.163.com
 * rpmfusion-free-updates: mirrors.163.com
 * rpmfusion-nonfree: mirrors.163.com
 * rpmfusion-nonfree-updates: mirrors.163.com
 * updates: ftp.riken.jp

ebook-tools-libs.i686                        0.2.0-1.fc13                updates
ghostscript.i686                             8.71-16.fc13                updates
ghostscript-cups.i686                        8.71-16.fc13                updates
gnupg2.i686                                  2.0.14-7.fc13               updates
iproute.i686                                 2.6.33-4.fc13               updates
jwhois.i686                                  4.0-21.fc13                 updates
kdegraphics.i686                             7:4.4.5-4.fc13              updates
   …
 以下省略
   …
#
# yum update -y ← -yオプションにより、全て「y」を応答します
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
 * fedora: ftp.riken.jp
 * rpmfusion-free: mirrors.163.com
 * rpmfusion-free-updates: mirrors.163.com
 * rpmfusion-nonfree: mirrors.163.com
 * rpmfusion-nonfree-updates: mirrors.163.com
 * updates: ftp.riken.jp
更新処理の設定をしています
依存性の解決をしています
--> トランザクションの確認を実行しています
---> パッケージ ebook-tools-libs.i686 0:0.2.0-1.fc13 を更新に設定しました
   …
 以下省略
   …
#

ダウンロードしたパッケージのキャッシュは/var/cache/yum/以下にありますので、現在の容量を表示後削除します。

# du -sh /var/cache/yum ← キャッシュの容量を表示します
151M    /var/cache/yum
#
# yum clean all ← キャッシュの内容を削除します
読み込んだプラグイン:fastestmirror, presto, refresh-packagekit
Cleaning repos: adobe-linux-i386 fedora rpmfusion-free rpmfusion-free-updates
              : rpmfusion-nonfree rpmfusion-nonfree-updates updates
すべて掃除しています
Cleaning up list of fastest mirrors
0 delta-package files removed, by presto
#
# du -sh /var/cache/yum ← 削除後の容量を表示します
248K    /var/cache/yum
#