web-dev-qa-db-ja.com

ダウンロードしたパッケージのrpmによる検証

rpmを介してCentOS6にパッケージをインストールしたかった(例:現在の epel-release )。

EDIT:もちろん、私は常にyumを介したインストールを好みますが、どういうわけか、この通常のアプローチを使用してその特定のパッケージをインストールできませんでした。そのため、 EPEL/FAQ はバージョン2より下を推奨します。

安全でないチャネル(http)を介してパッケージをダウンロードしているので、ダウンロードしたファイル自体に付属していない情報を使用して、ファイルの整合性が検証されていることを確認したいと思いました。これは、これらすべてのアプローチに特に当てはまりますか?


私はインターネット上でこれに対するさまざまなアプローチを見てきました:

バージョン1

rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

バージョン2

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm

バージョン3

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-7.noarch.rpm
rpm --import https://fedoraproject.org/static/0608B895.txt
rpm -K epel-release-6-7.noarch.rpm
rpm -i epel-release-6-7.noarch.rpm

rpmがよくわからないので、どう違うのかしら?私の推測( manpage を読んだ後)は

  • 最初のものは、パッケージが以前にインストールされていない場合にのみ使用する必要があります。
  • 2つ目は、インストール後に以前のバージョンのパッケージを追加で削除します。
  • 最初の2つは、rpm -Kによって実行される実際のインストールの前にいくつかの検証手順を省略しています。

したがって、この時点での私の主な質問は

  • 私の推測は正しいですか、それとも何かが足りませんか?
  • rpm --import ...は、最初の2つのアプローチでも暗黙的に実行されますか?そうでない場合は、結局実行する必要はありませんか?
  • これらの追加のチェックはrpm -K ...によって実行されますか?
  • 一般に、rpmを介してパッケージをインストールするための最良の(最も安全で、最も信頼性が高く、最も保守しやすい...)方法は何ですか?
2
moooeeeep

私の推測は正しいですか、それとも何かが足りませんか?

あなたの仮定は正しいです。

rpm --import...最初の2つのアプローチでも暗黙的に実行されますか

いいえ、ちがいます。最初の2つのアプローチでは、パッケージのGPG署名の検証は行われません。パッケージには署名が含まれていますが、keyが含まれていないため、自動的に実行することは実際には不可能です。 yumでさえ、各キーを承認するのは管理者の責任であるため、GPGキーを自動的にインポートしません。

、そうでない場合は、結局そうする必要はありませんか?

いい考えだね。ただし、別の場所からキーを取得する必要があります(-releaseパッケージをインストールするなど)。

これらの追加のチェックはrpm-Kによって実行されますか...関連性はありますか?

rpm -Kは、パッケージ内のすべての署名を検証します。これには、チェックサム(意図しない破損の場合)と、真正性の検証のためのGPG署名(存在する場合)が含まれます。チェックサムはパッケージのインストール時にチェックされますが、GPG署名はあなた次第です。

一般に、rpmを介してパッケージをインストールするための最良の(最も安全で、最も信頼性が高く、最も保守しやすい...)方法は何ですか?

yumを使用します。 yumを使用して、ダウンロードしたパッケージをインストールすることもできます。ファイルをwgetし、キーをrpm --importすると、ダウンロードしたファイルをローカルディスクからyum install epel-release-6-7.noarch.rpmすることができます。

1
chutz

最初: man rpm
次に: man yum
(HTML形式で表示すると便利な場合があります)

実際には、私は通常 YUMフレームワークを使用して新しいパッケージをインストールします を使用します。最新のRedHat/CentOS/Fedoraシステムでは、YUMはパッケージの依存関係を満たし、インストールプロセスを処理します。

doが(curl、wget、またはローカルビルドを介して)rpmファイルを直接ダウンロードすることになった場合、私の頼りになるrpmコマンドラインは次のとおりです。

rpm -ivh packagename.rpm

-iは「インストール」です。 -vは「詳細」です。 -hは「ハッシュ」であり、インストール中に進行状況バーを表示します。

[root@xt ~]# rpm -i ncdu-1.5-1.el5.x86_64.rpm 
<no output>

versus

[root@xt ~]# rpm -iv ncdu-1.5-1.el5.x86_64.rpm 
Preparing packages for installation...
ncdu-1.5-1.el5

versus

[root@xt ~]# rpm -ivh ncdu-1.5-1.el5.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:ncdu                   ########################################### [100%]

rpm -i packagename.rpmがその役割を果たしますが、何年にもわたってこれを行うことで、-ivhを使用する自然な傾向が生まれました。プログレスバーは素晴らしいです。

-Uスイッチは、既存のパッケージをアップグレードするためのものです。繰り返しになりますが、YUMはパッケージの更新も処理できるため、このユースケースは狭くなります。私は通常、以前にインストールされたRPMパッケージのファイルの競合を示すエラーがある場合にのみ-Uを使用します。

rpm -Kを使ったことがありません。私は12年間それを必要としませんでした...それは 実際のrpmパッケージファイル を検証することを意味します、しかしあなたが署名されたYUMリポジトリから(GPGキーを介して)ダウンロードするなら、私は検証は不要です。

1
ewwhite