Il y a plusieurs questions auxquelles je répondrai individuellement:
Comment télécharger (et non installer) un package binaire individuel?
apt-get
a une option pour télécharger uniquement le package:
-d Download only - do NOT install or unpack archives
Vous trouverez le package téléchargé dans /var/cache/apt/archives/
. Dans ce cas, vous devrez ajouter une nouvelle configuration de liste de sources à apt.
Comment télécharger un package source individuel?
apt-get source <package>
ou lorsque vous connaissez l'emplacement du fichier .dsc:
dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc
Les deux approches vérifient la signature des fichiers
Comment épingler les sources.list aka comment ne pas gâcher mon installation?
Vous avez déjà indiqué la page de description de base d' APT Pinning , et j'ajouterais seulement que vous voulez probablement lire la page de manuel apt_preferences qui contient également de bons exemples pour accomplir les choses dont vous avez besoin. Voir en particulier la section 'Suivi stable' dans les EXEMPLES, car elle décrit quelque chose de très proche de vos besoins:
Il y a une commande utile lorsque vous jouez avec plusieurs sources et épinglage APT:
# 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
Cela montre que la version installée est 1.1.3-1 ~ bpo60 + 1, et le candidat est 1.2.0 ~ rc3-1 ~ bpo60 + 1, qui sera installé le prochain apt-get upgrade
. Il existe également une version plus ancienne disponible à partir d'un autre référentiel.
Comment télécharger la clé d'archive Debian?
La clé d'archive Debian est publiée sur ftp-master . Vous devrez importer la clé dans votre trousseau de clés 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
Ensuite, vous devrez vérifier ses signatures:
$ 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]
Et suivez les clés GPG individuelles des développeurs Debian soit en les suivant manuellement, soit en vérifiant le projet PGP Key Statistics . Et à moins qu'il n'y ait une chaîne entre votre clé PGP / GPG et l'archive de clés Debian, vous devrez faire un acte de foi à un moment donné.
Comment télécharger et vérifier manuellement des packages individuels
L'autre approche est donc plus compliquée, car les packages deb ne sont pas signés individuellement, mais seul le Release
fichier est signé. Ainsi, vous devrez télécharger et vérifier la signature Release
et les Packages
fichiers avec le package individuel.
J'ajouterai un exemple qui sera plus clair.
Imaginez que vous souhaitiez télécharger le paquet Debian pour Knot DNS à partir de son PPA officiel pour Ubuntu, précis sur l'architecture amd64.
Vous devrez cliquer sur les répertoires et trouver ces fichiers:
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
La prochaine étape serait de vérifier la signature du Release
fichier:
$ 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
Bien sûr, vous devrez vérifier la clé par d'autres moyens (comme la clé des responsables Debian / Ubuntu, la vérifier depuis le tableau de bord, etc, etc ...)
Une fois que vous avez vérifié la signature correcte dans le Release
fichier, vous pouvez passer à l'étape suivante - vérifier le fichier Packages.
sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad 3379 main/binary-amd64/Packages
Comme vous pouvez le voir, la signature peut être trouvée dans le Release
fichier signé , nous avons donc vérifié l'intégrité du Packages
fichier en calculant et en comparant son empreinte SHA-256.
La dernière étape est similaire. Vous devez calculer et comparer l'empreinte digitale du package individuel:
$ 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
À ce stade, nous avons solidement enchaîné le package au Release
fichier signé . Donc, si vous croyez la signature sur le Release
fichier, vous pouvez être sûr que le package a été téléchargé intact.
Vous pouvez en lire plus dans l' article Secure APT sur Debian Wiki.