Linux講座にようこそ。このページは「Linuxの使い方 - 付録2. パッケージ管理(rpmとyumコマンド)です。
システムのインストール後に、使用しているソフトウェアにセキュリティホールが見つかることが良く有ります。この様な時には対策済みのバージョンにアップデートする必要が有ります。Fedora等の多くのディストリビューションではソフトウェアはRPMパッケージと呼ばれる形式のファイルで提供されていますので、ソフトウェアのバージョンアップはRPMパッケージを入手して、それをインストールするということになります。
RPMパッケージの管理ツールはいくつか有りますが、ここでは次のツールをご紹介します。
パッケージ管理ツールにはGUIツールもありますので、デスクトップ環境の場合はGUIツールを使うと良いでしょう。
付図2-1はApper(Software Management)というソフトウェア管理ツールで、パッケージの検索・インストール・削除・最新パッケージへの更新、等が行えます。
rpmコマンドはRPMパッケージのインストールやアンインストール(削除)はもちろん、インストール済みパッケージの検索等も行えます。
このコマンドの特徴はパッケージの依存関係をチェックして、前堤となるパッケージがインストールされていない場合はメッセージを出力してエラー終了します。また、削除のときにも削除しようとしているパッケージを前堤としているものが有ればエラー終了します。これにより、必要なパッケージが無いために動作しないとか、必要なパッケージを誤って削除してしまうというようなトラブルを防ぐことが出来ます。
使用目的別にオプションを説明します。処理内容を指定するオプション(-i、-U、-e、-q)以外のオプションは省略可能です。
オプション | 意味 |
---|---|
-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 … 以下省略 … $
rpmコマンドでインストールやアップデートを行った場合、依存関係にあるパッケージがインストールされていないと、エラーメッセージを出力して終了してしまいます。そこで、依存関係にあるパッケージをインストールしなければいけないわけですが、それをインストールすると、こちらからも依存関係のエラーが出力されるようなこともあります。
yumコマンドの場合は依存関係にあるパッケージをチェックして、インストールされていなければ自動的にインストールします。これにより、上記のような煩わしさから開放されます。また、yumコマンドはrpmコマンドの機能をほぼ包含していますので、RPMパッケージの管理コマンドとしてはyumコマンドの方がよく使われています。
RPMパッケージはyumレポジトリサーバーと呼ぶサーバーで管理されており、通常はFedoraプロジェクトの公式レポジトリからダウンロードしてインストールを行います。レポジトリの設定は/etc/yum.repos.d/以下に用意してあります。公式レポジトリだけを利用するのであれば、設定を追加・修正する必要はありません。しかし、非公式レポジトリを使用する場合は、設定ファイルを取得してインストールする必要があります。例えば、ウェブブラウザのFlash Playerプラグインはアドビ・システムズ株式会社のダウンロードサイトに用意されているyumの設定ファイルをあらかじめインストールしておき、それからFlashをインストールすることになります。
yumコマンドはインターネット上のレポジトリにアクセスしますので、インターネットにアクセスできる環境が必要です。また、パッケージの検索・表示は一般ユーザの権限で行えますが、その他の操作(新規インストール、アップデート、削除)はシステム管理者(root)の権限が必要です。
使用目的別にオプションを説明します。
オプション | 意味 |
---|---|
-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 #