Назад | Перейти на главную страницу

Как репосинхронизировать солтстэк? Ошибка reposync с сообщением об ошибке «Удаление […] из-за отсутствия ключа GPG».

В системе RHEL 7.4 я добавляю репозиторий с последней версией соли следующим образом:

yum -y install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

Обратите внимание, среди прочего, это создает следующие два ключевых файла GPG:

/etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
/etc/pki/rpm-gpg/saltstack-signing-key

Для дальнейшего использования обратите внимание, что отпечаток ключа CentOS заканчивается на f4a80eb5:

# gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt

pub  4096R/F4A80EB5 2014-06-23 CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>
      Key fingerprint = 6341 AB27 53D7 8A78 A7C2  7BB1 24C6 A8A7 F4A8 0EB5

Попытка загрузить reposync:

mkdir /root/foobar

reposync --gpgcheck --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata

Он не работает с такими ошибками:

Removing babel-0.9.6-8.el7.noarch.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.i686.rpm, due to missing GPG key.
Removing libyaml-0.1.4-11.el7_0.x86_64.rpm, due to missing GPG key.

Поэтому я вручную загружаю все файлы, которые не удалось (в цикле for), и проверяю подписи их ключей подписи. Все они одинаковы, поэтому вот только один из них, например:

wget http://repo.saltstack.com/yum/redhat/7/x86_64/latest/base/babel-0.9.6-8.el7.noarch.rpm

rpm -K babel-0.9.6-8.el7.noarch.rpm

babel-0.9.6-8.el7.noarch.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5)

Обратите внимание на ключ PGP#f4a80eb5 соответствует ключу, указанному выше, F4A8 0EB5. Так почему же он не проходит проверку gpg?

Вот что я пробовал:

Я наткнулся на ответ! Похоже на то, rpm должен хранить хранилище ключей отдельно от /etc/pki/rpm-gpg, и этого кажется недостаточным для gpgkey= строка, которую необходимо указать в файле репо.

После этого reposync работает и правильно проверяет все подписи всех файлов:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt

Также см где rpm устанавливает специальные ключи gpg?. Ключи хранятся в базе данных rpm, их можно запросить и удалить с помощью следующих команд:

List the installed keys
    rpm -qa gpg-pubkey*

Get info about a particular installed key
    rpm -qi gpg-pubkey-db42a60e

Remove a particular installed key
    rpm -e gpg-pubkey-db42a60e

В отличие от ответа @sciurus, эта информация не на странице руководства (по крайней мере, не в RHEL 7.4).