連載
» 2008年05月22日 00時00分 UPDATE

実践でも役立つLPICドリル(2):RPMによるパッケージ管理を理解する (3/3)

[大竹龍史,ナレッジデザイン]
前のページへ 1|2|3       

問題3

 rpmコマンドを-qaなどの検索オプションを付けて実行し、インストールされているパッケージを表示しようとすると途中で止まってしまいます。RPMデータベースに不具合があると思われるため、修復することにしました。実行すべき手順はどれですか?(1つ選択)
[試験対策の重要度:(level1)* (level2)-]

a.rm /var/lib/rpm/__db.* ; rpm --initdb
b.rm /var/lib/rpm/__db.* ; rpm --rebuilddb
c.rpm -i --force rpmパッケージファイル名
d.rpm -i --nodeps rpmパッケージファイル名

r4seikai.jpg


b

r4kaisetsu.jpg


 RPMは、システムにインストールされたパッケージの情報を/var/lib/rpmディレクトリの下の次のファイル名であるBerkeley DBファイルで管理しています。

Basenames     Group       Providename     Requireversion 
Conflictname  Installtid  Provideversion  Sha1header 
Dirnames      Name        Pubkeys         Sigmd5 
Filemd5s      Packages    Requirename     Triggername

 これらのデータベースファイルに、システム管理者など書き込み権を持ったユーザーがアクセスする場合は、RPMは排他制御のため、次のようなファイル名のファイルを作成し、その中にデータベースのロックを作ります。

__db.000 __db.001  __db.002  __db.003

 データベースが壊れたときはこのロックが残ったままになることが多く、その状態で--rebuildオプションを付けて実行しても修復できない(書き込みできない)ので、このファイルを削除してから実行するとうまくいきます。

 “rpm --rebuilddb”を実行すると、RPMは、/var/libの下にテンポラリディレクトリを作り、各データベースファイルのインデックスを再構築します。

 “rpm --initdb”を実行すると、Packagesファイルがない場合は、中身が空のPackagesデータベースを作成します。

問題4

 パッケージの署名チェックに関する問題です。
[試験対策の重要度:(level1)*** (level2)-]

(設問1)パッケージAの署名チェックをするため、rpmにあるオプションを付けて実行したところ、次のように表示されました。

パッケージAのファイル名: (sha1) dsa sha1 md5 gpg OK

 この表示についての正しい説明はどれですか?(1つ選択)

a.“rpm --checksig パッケージAのファイル名”を実行した結果である。パッケージの署名は改ざんではなく本物である

b.“rpm --checksig パッケージAのファイル名”を実行した結果である。パッケージには署名がない

c.“rpm --verify パッケージA”を実行した結果である。パッケージの署名は改ざんではなく本物である

d.“rpm --verify パッケージA”を実行した結果である。パッケージには署名がない

(設問2)パッケージBについて、設問1と同じオプションを付けて実行したところ次のように表示されました。

パッケージBのファイル名:(SHA1) DSA sha1 md5 (GPG) OK ではありません。(見つからない鍵: GPG#4f2a6fd2)

 この表示についての正しい説明はどれですか?(1つ選択)

a.パッケージBには署名がない

b.パッケージBは署名はあるが、不正な署名である

c.パッケージBに署名した秘密鍵のペアである公開鍵がシステムにインストールされていないので、署名チェックができない

d.パッケージBに署名した公開鍵のペアである秘密鍵がシステムにインストールされていないので、署名チェックができない

(設問3)パッケージBを設問2の状態のまま-iオプションでインストールするとどうなりますか?(1つ選択)

a.インストールできない

b.パッケージAをインストールするときと同様にインストールされる

c.警告“... signature: NOKEY, key ID 4f2a6fd2”が表示され、インストールは行われる

d.--force オプションを追加して実行した場合のみ、警告“... signature: NOKEY, key ID 4f2a6fd2”が表示されるが、インストールはできる

(設問4)パッケージBの署名キーGPG KeyID 4f2a6fd2が、ファイルシステムにRPM-GPG-KEY-xxというファイル名で存在することが分かりました。すでにシステムにインストールされているキーを表示し確認のうえ、このキーを追加インストールする手順はどれですか?(1つ選択)

a.rpm -q KeyID; rpm -i RPM-GPG-KEY-xx
b.rpm -q KeyID; rpm --export RPM-GPG-KEY-xx
c.rpm -qa | grep gpg-pubkey; rpm --import RPM-GPG-KEY-xx
d.rpm -qi gpg-pubkey; rpm -i RPM-GPG-KEY-xx

r4seikai.jpg


(設問1) a
(設問2) c
(設問3) c
(設問4) c

r4kaisetsu.jpg


(設問1)パッケージファイルのダイジェストと署名のチェックは、“rpm --checksig パッケージファイル名”で行います。

(sha1) dsa sha1 md5 gpg OK

上記の表示の意味は、左から

ハッシュ関数(SHA1)を使ったDSAキーによるヘッダの署名は正しい
(署名は本物)

ハッシュ関数SHA1によるヘッダのダイジェスト値は正しい
(改ざんはなし)

ハッシュ関数MD5によるパッケージのダイジェスト値は正しい
(改ざんはなし)

パッケージのGPG署名(ヘッダの署名と同じDSAキーを使用)は正しい
(署名は本物)

です。この4つがいずれも正しい場合にOKと表示されます。

(設問2)パッケージ作成者が署名した秘密鍵に対応する公開鍵がシステムにインストールされていない場合は、

OKではありません。(見つからない鍵:GPG#xxx)

と、表示されます。GPG#xxxは署名に使われた鍵のID番号です。

(設問3)署名の鍵と同じ鍵がシステムにインストールされていない場合は、パッケージのインストール時に NOKEY という警告メッセージが表示されますが、インストールは行われます。

(設問4)システムにインストールされているGPG鍵を表示するには次のようにします。

(例)
  # rpm -qa | grep gpg-pubkey
 gpg-pubkey-4f2a6fd2-3f9d9d3b


 キーの値などのキー情報を表示するには次にようにします。

# rpm -qi gpg-pubkey-4f2a6fd2-3f9d9d3b

 Linuxディストリビューションに含まれているGPG鍵はディストリビューションのCD-ROM/DVDのトップディレクトリに次のようなファイル名で置かれています。

RPM-GPG-KEY RPM-GPG-KEY-fedora

 これらの鍵はファイルシステム内にコピーされています。

CentOS4.4の場合: /usr/share/rhn/
Fedora8の場合:  /etc/pki/rpm-gpg/

 GPG鍵をシステムにインストールするには次のようにします。

(例)ファイル名RPM-GPG-KEYに格納されているGPG公開鍵をインストールする。


# rpm --import  RPM-GPG-KEY

 大問4問お疲れさまでした。次回は「ファイルシステム」の問題を出題します。

著者紹介

大竹龍史

有限会社ナレッジデザイン 代表取締役。1980年代に日本コンピュータビジョン社にてサン・マイクロシステムズのWorkstation、Sun2に出合って以来、サン関連のサポート、社内教育、ユーザー教育に従事。1998年、Netscape(現在はサンのSJESプロダクトに引き継がれている)とLinuxのトレーニングを提供する有限会社ナレッジデザインを設立。現在はLinuxとSolarisのシステム管理、ネットワーク管理、サーバ構築を担当。



前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。