Как заставить работать проверку источника apt-get?

9052
user28464

Пример (с использованием Debian Wheezy):

sudo apt-get source hello 

Результат:

Reading package lists... Done Building dependency tree  Reading state information... Done Need to get 705 kB of source archives. Get:1 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (dsc) [1287 B] Get:2 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (tar) [697 kB] Get:3 http://ftp.us.debian.org/debian/ testing/main hello 2.8-3 (diff) [6598 B]  Fetched 705 kB in 8s (80.6 kB/s)  gpgv: keyblock resource `/root/.gnupg/trustedkeys.gpg': file open error gpgv: Signature made Wed Feb 13 10:30:20 2013 UTC using RSA key ID 9F1B8B32 gpgv: Can't check signature: public key not found dpkg-source: warning: failed to verify signature on ./hello_2.8-3.dsc dpkg-source: info: extracting hello in hello-2.8 dpkg-source: info: unpacking hello_2.8.orig.tar.gz dpkg-source: info: unpacking hello_2.8-3.debian.tar.gz 

Пакет dpkg-dev и debian-keyring уже установлен.

Я попытался запустить apt-get source от имени пользователя, в качестве пользователя root заранее использовал «gpg --recv-keys 9F1B8B32» от имени пользователя и от имени пользователя root. Ничто не помогло проверить загруженные источники.

Как я могу избавиться от этого предупреждения «dpkg-source: warning: не удалось проверить подпись»?

7
попробуйте это с `gpg --keyserver keyring.debian.org --recv-keys 9F1B8B32`? Angs 10 лет назад 0
Не помогло... user28464 10 лет назад 0
У меня работал с apt-get source hello-debhelper, и я был root в root dir. ling 9 лет назад 0

4 ответа на вопрос

9
Matija Nalis

do

apt-get install debian-keyring 

to install all debian developer keyrings. It would check after that.

Пакет dpkg-dev и debian-keyring уже установлен. Отредактировал оригинальный вопрос с этой информацией. user28464 10 лет назад 0
@ user28464, что самое странное, вы можете попробовать "apt-get update; apt-get install --reinstall debian-keyring"? что возвращает "ls -l / usr / share / keyrings"? Matija Nalis 10 лет назад 0
К сожалению, он должен читать `apt-get install debian-keyring / sid`, чтобы работать большую часть времени. Tino 9 лет назад 0
Это (без / sid) сработало для меня в Debian Jessie JinnKo 8 лет назад 1
1
ZakW

Это именно то, что debian-keyringвам нужно ( .dscпроверяемый файл подписан сопровождающим), но при установке debian-keyringвсе еще требуется выполнить некоторые сантехнические работы, чтобы gpgрассмотреть ключи разработчика (автоматическое рассмотрение их будет червем, что, вероятно, объясняет, почему сантехника не работает). сделано как часть постустановки).

Если это разовое, перепроверьте .dscпосле выборки, используя:

gpg --keyring /usr/share/keyrings/debian-maintainers.gpg --verify *.dsc 

Если вы будете получать несколько, добавьте:

keyring /usr/share/keyrings/debian-maintainers.gpg 

к вашему ~/.gnupg/gpg.conf; с тех пор gpggpgv) будут рассматривать ключи разработчика / сопровождающего для проверки подписи. (Если вы параноик, вы можете использовать его, /usr/share/keyrings/debian-keyring.gpgвключая полных разработчиков, но не сопровождающих.)

Ни один из подходов не сделает ключи действительными, но это, вероятно, то, что вы хотите - если вы получили debian-keyringс помощью правильно настроенного apt-get/ aptitudeи была проверена подпись этого пакета, вы можете иметь разумную уверенность в том, что эти ключи действительно принадлежат разработчикам / сопровождающим.

Разве это не то, что `apt-get source` использует` dscverify` для проверки подписей? Страница руководства squeeze для `dscverify` перечисляет` / usr / share / keyrings / debian-maintenanceers.gpg` в качестве одного из мест для поиска цепочки ключей debian. x-yuri 8 лет назад 0
0
Tino

Важная деталь, отсутствующая здесь, заключается в том, что вам нужен набор ключей sid, а не набор ключей stable, потому что только набор ключей sid несет всех разработчиков. Обратите внимание на /sidследующую строку:

apt-get install debian-keyring/sid 

Чтобы получить, sidвам обычно нужна следующая строка /etc/apt/source.list:

deb http://http.debian.net/debian/ sid main 

(И не забудьте apt-get updateпотом.)

Но будьте осторожны! Если sidсидит в вашей sources.listсистеме, она склонна превращаться sidпротив вашей воли. Чтобы предотвратить это, добавьте строку, /etc/apt/apt.confкоторая выглядит следующим образом:

APT::Default-Release "stable"; 

(Есть множество других способов предотвратить sidэто, это самый простой из известных мне).

Заметки:

  • Ключ к этому решению был найден по адресу http://debian.distrosfaqs.org/debian-user/signature-of-wheezys-linux-source-package/
  • Прежде чем я нашел это, я наткнулся на тысячи страниц, говорящих вам просто получить недостающий ключ с сервера ключей: никогда не делайте такую ​​глупость, чтобы проверить подпись! Если MitM смог выслать вам поддельный пакет, тот же самый может послать вам поддельный ответ сервера ключей. Следовательно, ключ, извлеченный из сервера ключей, является просто змеиным маслом. (И в контексте безопасности вера в «змеиную нефть», вероятно, самая глупая вещь, которую вы можете сделать.)
0
x-yuri

Judging from "gpgv: keyblock resource `/root/.gnupg/trustedkeys.gpg': file open error" line, you must be running into gpg's bug. In the end apt-get source runs gpg with --no-option switch. Which fails if no homedir (~/.gnupg) exists. One can remedy this with: gpg -k. More details here.