yumのパッケージ管理機能を強化するプラグインとユーティリティ

 FedoraのPirutは、ソフトウェアの基本的なインストールとパッケージ検索に適した便利なツールだ。だが、パッケージ管理を思いどおりに行うには、基本に立ち返ってyumを使いこなす必要がある。ちょうどDebianシステムのdpkgがapt-getツールやSynapticのようなグラフィカルツールの根底を成すバックエンドになっているように、RPMシステムではyumがPirutやアップデータのPupを陰で強力に支えている。yumはPirutよりもオプションが豊富なだけでなく、追加のプラグインやユーティリティによって機能を拡張することもできる。なお、そうした追加機能の多くはyum専用のものだ。

 Pirutと同様に、yumでは個別またはグループごとのパッケージのインストール、パッケージ情報の検索や表示が行える。しかもyumには、Pirutでは使えないコマンドが多数含まれている。その大部分は改めて説明するまでもないコマンドで、update、localinstall、clean all、repolist(利用可能なリポジトリの一覧表示)などがこれにあたる。また多くの場合、yumのコマンドのほうがPirutよりも細かな指定ができる。たとえば、listコマンドでは8種類、cleanコマンドでは5種類の動作が選べる。

 さらに、yumにはさまざまな汎用オプションが存在する。たとえば、verboseモード(-v)またはquietモード(-q)での実行、実行中のすべての質問にyesと答える(-y)かどうかといった指定が行える。同様に、「-e」オプションによって表示すべきエラーメッセージの重要度を設定したり、「-exclude」オプションによって特定のパッケージをインストールまたはアップグレードの対象外としたりすることも可能だ。これらのオプションのいくつかは、「/etc/yum.conf」に記述することでその設定が持続する。

yumのプラグイン

 こうしたビルトイン機能があれば十分と思えるのだが、yumの機能は、Pythonで書いたプラグインを「/usr/lib/yum-plugins」に置くことでさらに拡張できる。Fedora 8のリポジトリには10数種類のプラグインが収録されているが、いずれも基本のコマンドに新しいオプションを追加してyumの機能を拡張するものだ。また、ちょっとWebで検索しただけでもそういったプラグインの開発を進めているコミュニティが見つかるので、今後プラグインがさらに増えるのは間違いないだろう。

 yumプラグインのなかには、ファイルの不用意なアップグレードを防げるものがある。その1つ、yum-protect-packagesを使えば、yum本体、それにrpm、Python、glibcといったyumとの間に依存関係のあるモジュール群がデフォルトで上書きされてしまうのを防止できるほか、保護が必要なパッケージ群のリストの追加指定も可能だ。同じように、yum-versionlockを使えばパッケージの特定のバージョンを保護できる。また、特定のリポジトリから取得したパッケージの上書きを防止するyum-protect-baseや、パッケージが複数のリポジトリに存在する場合にどのリポジトリを優先して使うかを指定するyum-prioritiesといったプラグインも使える。この2つの機能があれば、非公式なリポジトリを利用している場合に起こり得る悲惨な事態を回避できるはずだ。また万一、アップグレードしたパッケージが壊れていた場合も、yum-allowdowngradeを使えば難なく元の状態に戻せる。

 もう1つ、便利なプラグインがyum-securityだ。これにより、セキュリティアップデートのインストールだけを確実に行うためのコマンドとオプションがyumに追加される。少なくとも理論上は、このプラグインを使うことで、不完全なアップデートやバグのあるアップデートによる問題を回避すること、あるいは最低でもそうした問題を減らすことが可能になる。その対極に位置するのがyum-updateonbootで、これを使うと、コンピュータを起動し直すたびに最新バージョンのパッケージを必ず取得するという少々危険な方針を取ることになる。

 そのほか、yumの動作の高速化に役立つプラグインもある。yum-fastest-mirrorを使えば、yumはリスト中で最速のミラーを優先的に利用しようとする。時間の節約になりそうな別のプラグインとしてはyum-prestoがある。このプラグインは、パッケージ全体ではなく変更部分だけを収めたdeltarpmというパッケージがあれば、必ずそちらを利用するというものだ。

 また、パッケージによる設定ファイルの更新時には常に.rpmnewファイルや.rpmsaveファイルが作られるが、これらを管理する必要性を感じているユーザなら、yum-merge-confにも高い評価を与えるかもしれない。このプラグインを使っても、こうしたファイルを削除すべきか、あるいは既存の設定ファイルとマージすべきかについて個別に判断が必要になる点は変わらないが、そうした選択をインストール時に行えるという利点が得られる。そのため、あとになって手作業でいろいろな可能性を検討して、時間のかかる、それでいて避けては通れない作業の対処に追われずに済む。

 当然のことながら、こうしたプラグインを組み合わせて使用する場合には、事前にその挙動を確認しておく必要がある。場合によっては、公式および非公式のリポジトリの存在がわかっていると役に立つかもしれない。ただし、プラグインを実行して問題が生じた場合には、もはやそれらすべてをインストールしておく必要はない。むしろ、yumの「-no plugin」オプションを使用して、yumを基本の動作に戻すとともに、すべてのプラグインを無視するとよい。

yumのユーティリティ

 いくつかの独立したプログラムによって、yumの機能をさらに引き出すこともできる。コマンドラインのプログラムよりもグラフィカルなものがよければ、yumには及ばないものの、Pirutよりは多少融通の利く KYumyumex という選択肢がある。また、第3のグラフィカルツールとして、yumを扱うのに都合のよい repoman がある。このツールを使えば、パッケージリポジトリの追加、削除、有効化、無効化がデスクトップから行える。

 また、コマンドラインでの作業用としてインストールしておきたいのがyum-utilsだ。米デューク大学(Duke University)で開発されたyum-utilsには各種ツールを1つにまとめる狙いがあるようだが、今のところツールは2つしか含まれていない。その1つ、yumdownloaderユーティリティはyum-downloadonlyプラグインに似ているが、ディレクトリの指定、必要な依存関係のダウンロードファイルへの追加、ソースパッケージのダウンロードなど、より多くのオプションが存在する。さらなる優れモノがpackage-cleanupで、必要なくなったパッケージの削除を容易にしてくれる。package-cleanupで特に便利な点は、どんなパッケージを削除するかを厳密に指定できることで、重複するパッケージ(–dupe)、依存関係上の問題があるパッケージ(–problems)、利用しているどのリポジトリからも姿を消したパッケージ(–orphan)、古いカーネルパッケージ(–oldkernel)のそれぞれを削除の対象とするオプションが用意されている。必要であれば、「/etc/yum.conf」ファイル内に定義する「–oldkernel」の設定とともに「–count=」というオプションを加えることで、システムに残しておくカーネル数を設定できる。ただし、定期的にカーネルのアップグレードを行っていて、なおかつシステムを確実にブート可能な状態にしておきたいなら、この設定のデフォルト値2はどう考えても小さすぎるだろう。以上のように、package-cleanupのオプション群は、すでに十分な数のクリーンナップ用オプションがyumに存在するにもかかわらず、ありがたみの感じられるものになっている。個人的には必須のアイテムだ。

まとめ

 現時点で使えるこうしたプラグインやユーティリティのどれを利用するかは、好みで決めればよい。ただし、いずれも選択の幅を広げてくれるものであり、参照可能な情報を増やしてくれるものも多いので、いろいろ試してみて損はないだろう。グラフィカルなPirut、KYum、yumexはどれも洗練されつつあるが、今回の調査からわかるように、最も興味深いRPMパッケージ管理作業の多くは依然としてコマンドラインから実行されるものであり、その多くはyum本体に関するものだ。

 筋金入りのDebian信奉者である私は、yumがこの数年で達成した進歩にも心を惹かれる。数年前には機能面に多少の制限があって低迷気味のツールだったyumが、今ではすっかり最新のパッケージ管理ツールへと成長を遂げ、あらゆる点でapt-getに引けを取らない存在になっている。そしてyumの有効性を最も顕著に示しているのが、ここで紹介したプラグインと関連ユーティリティである。

Linux.comでは毎週月曜日に、これまでに未紹介のエクステンションやプラグイン、またはアドオンを取り上げている。お使いの追加機能とその効果、それに活用のヒントを1,000ワード以内で紹介する記事をお寄せいただきたい。採用者には謝礼100ドルを進呈する(掲載済または掲載予定の記事との内容の重複を避けるため、まずはメールで問い合わせ願いたい)。

Bruce Byfieldは、Linux.comとIT Manager’s Journalに定期的に寄稿しているコンピュータジャーナリスト

Linux.com 原文