В системе 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?
Вот что я пробовал:
Я редактировал /etc/yum.repos.d/salt-latest.repo
и изменил gpgkey=
линия. У меня была одна и та же ошибка со всеми тремя вариантами. Насколько я могу судить, изменение gpgkey=
строка не действует:
gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
gpgkey=file:///etc/pki/rpm-gpg/saltstack-signing-key,file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7-Salt
Я пробовал бежать reposync
без --gpgcheck
. Работает, но, очевидно, так использовать плохо.
reposync --plugins --repoid=salt-latest --download_path=/root/foobar --newest-only --downloadcomps --delete --download-metadata
Интересно, отказывается ли reposync использовать ключ, потому что он слишком слабый? MD5. Но я не мог придумать, как это подтвердить или опровергнуть.
Интересно, действительно ли у ключа есть срок годности? Но я тоже не мог найти способа подтвердить или опровергнуть это.
Я наткнулся на ответ! Похоже на то, 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).