up2dateによるRPMパッケージの更新管理 | A Day In The Boy's Life

A Day In The Boy's Life

とあるエンジニアのとある1日のつぶやき。

前回書いた、「RedHatサブスクリプションの登録と有効化 」によってRedHatNetworkを通してパッケージの更新等が行えるようになりました。

次は、実際にパッケージの更新を行う方法などを簡単に説明したいと思います。


最初に、RedHatのパッケージ管理では「パッケージ」(Package)と「エラータ」(Errata)という言葉が用いられます。

エラータとは問題を含むソフトウェア用のパッチの事です。

そのエラータを幾つか関連したソフトウェア(依存関係などを解消した上で)とともにまとめたものがパッケージとなります。


RedHatのパッケージ管理は、up2dateコマンドを用いて行います。

まず


$ up2date --register 

または

$ rhn_register 

で、パッケージを更新するための初期設定をします。

ここで設定する内容は、主に管理対象にするパッケージと、管理対象外にするパッケージの設定です。

管理対象外のパッケージとは、例えばカーネルなどのパッケージは更新するとH/Wのドライバとかの兼ね合いで正常に動作しなくなったりする場合があります。

そういった影響度の大きいパッケージは更新の対象外にしておくように指定できます。



更新対象のパッケージが存在するか確認する


RedHatNetworkのIDを作成する際に、E-Mailを登録しておくと更新パッケージの情報などがメールで送信してくれるのですが、全てのパッケージが対象となっていない上に、かなりタイムラグがあったりします。

ですので、定期的に更新パッケージがないか確認しておいた方が無難です。


更新対象のパッケージが存在するかチェックする方法は2通りあります。

1つは、RHN上から確認する方法。もう一つがup2dateコマンドにて確認する方法です。


RHN上から確認する方法は、ログインし「システム」メニューから一覧を表示した際にエラータ又はパッケージ欄の数値が0以上の場合、何らかの更新すべきパッケージが存在する事を示しています。

(又は単純に左脇にあるシステムの記号を見て判断もできます)

ただし、初期設定時に指定した「更新対象外パッケージ」も含めての数字、記号なので注意してください。


コマンドラインから確認する方法は、下記のコマンドを実行します。


$ up2date -l

最初に表示されるのが「更新対象のパッケージ」、次に表示されるのが「更新対象外のパッケージ」(The following Packages were marked to be skipped by your configuration という文以下)一覧になります。



更新対象パッケージを更新する


更新対象パッケージが存在する場合は、下記のコマンドでインストール可能です。


$ up2date -u

更新対象のパッケージ全てが更新されます。個別に指定したい場合は


up2date -u {更新したいパッケージ名}

を実行します。


※ RHN上からもパッケージの更新を行う事ができます。が、ここでは割愛します。
  (更新のスケジュールも組めたりできますので使いこなせれば便利そうですが)


※ ここで更新されるのは、既にインストール済みのパッケージでそこに問題があるとみなされたものだけが対象

  になります。

  RedHatからRPMパッケージとして提供はされているものの、サーバーにインストールされていないのであれば、

  更新対象パッケージには含まれてません。



新規にパッケージをインストールする


RedHatからパッケージが提供されており、現状サーバーにインストールされていないパッケージを新規にインストールしたい場合は、下記のようにします。


まずは、そのパッケージが存在するかを確認してみます。


$ up2date -l httpd*

上記のように


up2date -l {検索したいパッケージ名}

を実行します。

上記の場合は、Apache関連のパッケージがないかを確認しています。


※ 更新対象外のパッケージを指定した場合、一覧に表示されませんので注意してください。

  その際は、後述する「更新対象外のパッケージを変更する」を参考に、対象外のリストから外して再実行します。


次に、そのパッケージ名を指定してインストールを行います。


$ up2date -i {インストールしたいパッケージ名}

※ インストールしたいパッケージ名は、確認した際に表示されているパッケージ名を指定します。



更新対象外のパッケージを変更する


更新対象外のパッケージは、下記のファイルに記録されています。


/etc/sysconfig/rhn/up2date

上記ファイルの中の「pkgSkipList」の項目がそれにあたります。

カーネルを更新対象外としている場合は、下記のように記述されています。


pkgSkipList=kernel*;

これに、例えばApacheのパッケージを加えたい場合は、「;」で区切ってパッケージ名の一部を入れておきます。


pkgSkipList=kernel*;http*;

これで、更新対象のパッケージがないか確認した際に、Apacheのパッケージは更新対象外のパッケージ一覧に表示され、更新を実行してもその対象に含まれません。

逆に更新対象パッケージにしたい場合は、項目から削除するだけでよいです。


2008.07.03 追記


パッケージ管理にup2dateではなく、yumを使いたい場合は、下記を参照してください。


yumによるRPMパッケージの更新管理