Existem várias perguntas que responderei individualmente:
Como baixar (e não instalar) um pacote binário individual?
apt-get
tem uma opção para baixar somente o pacote:
-d Download only - do NOT install or unpack archives
Você encontrará o pacote baixado em /var/cache/apt/archives/
. Neste caso, você terá que adicionar uma nova configuração de lista de fontes ao apt.
Como baixar o pacote de fontes individuais?
apt-get source <package>
ou quando você souber a localização do arquivo .dsc:
dget http://http.debian.net/debian/pool/main/k/knot/knot_1.2.0~rc3-1.dsc
Ambas as abordagens verificam a assinatura nos arquivos
Como fixar o arquivo sources.list, também conhecido como eu não bagunço minha instalação?
Você já apontou para a página de descrição básica para APT Pinning , e eu adicionaria apenas que você provavelmente vai querer ler a página do manual apt_preferences que também tem bons exemplos para realizar as coisas que você precisa. Especialmente veja a seção 'Tracking Stable' em EXAMPLES, pois descreve algo muito próximo de suas necessidades:
Há um comando útil ao tocar com várias fontes e o 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
Isso mostra que a versão instalada é 1.1.3-1 ~ bpo60 + 1, e o candidato é 1.2.0 ~ rc3-1 ~ bpo60 + 1, que será instalado no próximo apt-get upgrade
. Também há alguma versão mais antiga disponível em outro repositório.
Como baixar a chave do arquivo Debian?
A chave do arquivo Debian é publicada no ftp-master . Você precisará importar a chave em seu chaveiro gpg:
$ gpg --import archive-key-6.0.asc
gpg: key 473041FA: public key "Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>" 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
Então você terá que verificar suas assinaturas:
$ gpg --list-sig 473041FA
pub 4096R/473041FA 2010-08-27 [expires: 2018-03-05]
uid Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>
sig 3 473041FA 2010-08-27 Debian Archive Automatic Signing Key (6.0/squeeze) <[email protected]>
sig 7E7B8AC9 2010-08-27 Joerg Jaspert <[email protected]>
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 <[email protected]>
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]
E rastreie as chaves GPG individuais para desenvolvedores Debian, seja rastreando-as manualmente, ou f.e. verificação no projeto Estatísticas da chave PGP . E a menos que haja uma corrente de sua chave PGP / GPG para o repositório de chaves da Debian, você terá que dar um salto de fé em algum ponto do tempo.
Como baixar e verificar pacotes individuais manualmente
Portanto, a outra abordagem é mais complicada, porque os pacotes deb não são assinados individualmente, mas apenas o arquivo Release
é assinado. Assim, você precisará fazer o download e verificar a assinatura nos arquivos Release
e Packages
junto com o pacote individual.
Vou adicionar um exemplo que ficará mais claro.
Imagine que você deseja baixar o pacote Debian para Knot DNS de é o PPA oficial para o Ubuntu preciso da arquitetura amd64.
Você terá que clicar nos diretórios e encontrar esses arquivos:
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
O próximo passo seria verificar a assinatura no arquivo 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
É claro que você precisará verificar a chave em outros meios (como a chave dos mantenedores Debian / Ubuntu, verificando-a no launchpad, etc, etc ...)
Quando você tiver verificado a assinatura correta no arquivo Release
, você pode ir para a próxima etapa - verificando o arquivo Packages.
sha256sum Packages
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Packages
$ grep c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad Release
c96a524398cf6e9db033c8299974fe324eba47cc8190efec6495c74e251330ad 3379 main/binary-amd64/Packages
Como você pode ver, a assinatura pode ser encontrada no arquivo Release
assinado, portanto, verificamos a integridade do arquivo Packages
computando e comparando sua impressão digital SHA-256.
O último passo é semelhante. Você precisa calcular e comparar a impressão digital do pacote individual:
$ 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
Neste ponto, encadernamos o pacote com segurança ao arquivo Release
assinado. Portanto, se você acredita na assinatura no arquivo Release
, pode ter certeza de que o pacote foi baixado intacto.
Você pode ler mais no artigo APT Seguro no Debian Wiki.