個別に回答する質問がいくつかあります。
個別のバイナリパッケージをダウンロードする(インストールしない)方法
apt-get
パッケージのみをダウンロードするオプションがあります:
-d Download only - do NOT install or unpack archives
ダウンロードしたパッケージはにあり/var/cache/apt/archives/
ます。この場合、aptに新しいソースリスト設定を追加する必要があります。
個々のソースパッケージをダウンロードする方法は?
apt-get source <package>
または、.dscファイルの場所がわかっている場合:
dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc
どちらのアプローチもファイルの署名を検証します
sources.listをピン留めする方法、別名インストールを混乱させない方法は?
すでにAPT Pinningの基本的な説明のページを指していますが、必要なことを達成するための素晴らしい例もあるapt_preferencesのマンページを読みたいと思うだけです。特に、使用例の「安定性の追跡」セクションを参照してください。これは、ニーズに非常に近いものについて説明しているためです。
複数のソースとAPT Pinningを使用する場合、便利なコマンドがあります。
# apt-cache policy knot
knot:
Installed: 1.1.3-1~bpo60+1
Candidate: 1.2.0~rc3-1~bpo60+1
Version table:
1.2.0~rc3-1~bpo60+1 0
500 http://deb.knot-dns.cz/debian/ squeeze/main amd64 Packages
*** 1.1.3-1~bpo60+1 0
100 /var/lib/dpkg/status
1.0.5-1~bpo60+1 0
500 http://ppa.sury.org/debian/ squeeze/main amd64 Packages
これは、インストールされたバージョンが1.1.3-1〜bpo60 + 1であり、候補が1.2.0〜rc3-1〜bpo60 + 1であり、nextにインストールされることを示していますapt-get upgrade
。また、さらに別のリポジトリからいくつかの古いバージョンを入手できます。
Debianアーカイブキーをダウンロードする方法は?
Debianアーカイブキーはftp-masterで公開されています。キーをgpgキーリングにインポートする必要があります。
$ gpg --import archive-key-6.0.asc
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>" imported
gpg: Total number processed: 1
gpg: imported: 1 (RSA: 1)
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0 valid: 9 signed: 31 trust: 0-, 0q, 0n, 0m, 0f, 9u
gpg: depth: 1 valid: 31 signed: 38 trust: 25-, 0q, 0n, 1m, 5f, 0u
gpg: depth: 2 valid: 21 signed: 31 trust: 19-, 0q, 0n, 0m, 2f, 0u
gpg: depth: 3 valid: 3 signed: 12 trust: 2-, 0q, 0n, 0m, 1f, 0u
gpg: depth: 4 valid: 1 signed: 8 trust: 1-, 0q, 0n, 0m, 0f, 0u
gpg: next trustdb check due at 2013-09-22
次に、署名を確認する必要があります。
$ gpg --list-sig 473041FA
pub 4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 3 473041FA 2010-08-27 Debian Archive Automatic Signing Key (6.0/squeeze) <ftpmaster@debian.org>
sig 7E7B8AC9 2010-08-27 Joerg Jaspert <joerg@debian.org>
sig P B12525C4 2010-08-27 [User ID not found]
sig D0EC0723 2010-08-27 [User ID not found]
sig 8AEA8FEE 2010-08-27 [User ID not found]
sig A3AE44A4 2010-08-28 [User ID not found]
sig 00D8CD16 2010-08-28 Alexander Reichle-Schmehl <alexander@reichle.schmehl.info>
sig CD15A883 2010-08-28 [User ID not found]
sig 672C8B12 2010-08-28 [User ID not found]
sig 2 C4CF8EC3 2010-08-28 [User ID not found]
sig 2 D628A5CA 2010-08-28 [User ID not found]
そして、手動で追跡するか、PGP Key Statisticsプロジェクトでチェックして、Debian開発者に対する個々のGPGキーを追跡します。そして、PGP / GPGキーからDebianキーアーカイブへのチェーンがない限り、ある時点で信頼を飛ばす必要があります。
個々のパッケージを手動でダウンロードして検証する方法
debパッケージは個別に署名されず、Release
ファイルのみが署名されるため、他のアプローチはより複雑です。したがって、個々のパッケージの署名Release
とPackages
ファイルをダウンロードして検証する必要があります。
より明確な例を追加します。
Knot DNS用のDebianパッケージを、amd64アーキテクチャ上で正確にUbuntu の公式PPAからダウンロードしたいと想像してください。
ディレクトリをクリックして、これらのファイルを見つける必要があります。
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/Release.gpg
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/dists/precise/main/binary-amd64/Packages
wget http://ppa.launchpad.net/cz.nic-labs/knot-dns/ubuntu/pool/main/k/knot/knot_1.2.0~rc3-1~precise+1_amd64.deb
次のステップは、Release
ファイルの署名を検証することです。
$ gpg --verify Release.gpg Release
gpg: Signature made Fri 01 Mar 2013 07:14:38 PM CET using RSA key ID F9C59A45
gpg: Good signature from "Launchpad Datové schránky"
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: 5246 3488 670E 69A0 9200 7C24 F233 1238 F9C5 9A45
もちろん、他の方法でキーを確認する必要があります(Debian / Ubuntuメンテナキーなど、ランチパッドからチェックするなど)。
Release
ファイルの正しい署名を検証したら、次の手順であるパッケージファイルの検証に進むことができます。
sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad 3379 main/binary-amd64/Packages
ご覧のように、署名は署名されたRelease
ファイルにありPackages
ます。そのため、SHA-256フィンガープリントを計算して比較することにより、ファイルの整合性を検証しました。
最後のステップも同様です。個々のパッケージのフィンガープリントを計算して比較する必要があります。
$ sha1sum knot_1.2.0~rc3-1~precise+1_amd64.deb
8b34078e9bfef7aa818b2f926a28838b0ede9f43 knot_1.2.0~rc3-1~precise+1_amd64.deb
$ grep -A 13 "Package: knot$" Packages | grep "^SHA1: "
SHA1: 8b34078e9bfef7aa818b2f926a28838b0ede9f43
この時点で、パッケージを署名済みRelease
ファイルに安全にチェーンしました。そのため、Release
ファイルの署名が信頼できる場合は、パッケージが完全にダウンロードされたことを確認できます。
Debian WikiのSecure APT記事で詳細を読むことができます。