Как заставить rpm и yum терпеть неудачу, если отсутствует подпись GPG или в противном случае не может быть проверена?

Как я могу заставить rpm и yum терпеть неудачу, если подпись GPG отсутствует в пакете или иначе не может быть проверена из-за недостающего ключа? В приведенном ниже примере предположим, что RPM подписан, но ключ не установлен.

С RPM я вижу предупреждение, но мне бы хотелось, чтобы это не сработало, поэтому я вынужден вручную установить ключ подписи.

 # rpm -q gpg-pubkey --qf '%{name}-%{version}-%{release} --> %{summary}\n' gpg-pubkey-c105b9de-4e0fd3a3 --> gpg(CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>) # rpm -ivh http://yum.example.com/company-release-el-6.noarch.rpm Retrieving http://yum.example.com/company-release-el-6.noarch.rpm warning: /var/tmp/rpm-tmp.3VmFk2: Header V4 RSA/SHA1 Signature, key ID 3bd6ec30: NOKEY Preparing... ########################################### [100%] 1:company-release ########################################### [100%] 

С yum я не вижу предупреждений, связанных с тем, что ключ подписи не установлен.

 # yum install -vy http://yum.example.com/company-release-el-6.noarch.rpm 

Есть ли дополнительные флаги, которые я могу передать этим командам или настройку конфигурации, которую я могу изменить, чтобы изменить поведение? Или я должен загрузить RPM и запустить rpm --checksig перед установкой?

2 Solutions collect form web for “Как заставить rpm и yum терпеть неудачу, если отсутствует подпись GPG или в противном случае не может быть проверена?”

Главное, чтобы понять, что GPG проверяет пакеты, заключается в том, что подпись GPG встроена в пакет, а ключи GPG хранятся в rpmdb. Нет безопасного API, чтобы спросить: «Каким ключом является пакет X, подписанный с», вы можете только спросить: «Является ли пакет X подписанным ключом в rpmdb» и «Существует ли ключ Y в rpmdb». Также обратите внимание, что это означает, что пакет может быть подписан только одним ключом, а изменение сигнатуры изменяет пакеты.

Yum выполняет несколько шагов при загрузке пакета из репозитория, настроенного с помощью «gpgcheck = 1» (по умолчанию).

  1. После загрузки первого пакета из репозитория выполняется простой «этот пакет, подписанный с известным gpgkey». Если это так, ничего не делается. Если это не предупреждение, отображается пользователю. Это чисто информационное.

  2. Перед началом транзакции yum проверяет, что пакет подписан с известным gpgkey (один уже установлен в rpmdb), если он является действительным и никаких других шагов не выполняется. Если нет, то он продолжается до # 3.

  3. Yum загружает все файлы, указанные в данных «gpgkey» для репозитория, из которого поступает пакет. Yum анализирует это, игнорируя любые ключи, уже присутствующие в rpmdb. Если новых ключей нет, yum не удастся.

  4. Если для репозитория указан «gpgcakey», тогда yum загрузит все файлы, указанные в данных «gpgcakey». Yum анализирует это, игнорируя любые ключи, уже присутствующие в этом репозитории gpg keyring. Если после парсинга файла не установлено gpgcakeys, yum завершится с ошибкой. Если есть новые gpgcakeys, то если они уже импортированы как ключи CA для другого репо. они автоматически импортируются. Если это первый тип, мы видели этот ключ CA, пользователю спрашивают, хочет ли он установить ключ (если не указано значение -y). Если он говорит «нет» ни одному ключу, yum не удается (хотя все импортированные ключи остаются в режиме репо. Gpg).

  5. Если есть хотя бы один действительный «gpgcakey», yum попытается загрузить файл «gpgkey» .asc. Если этого не существует, yum переходит к шагу # 6, как если бы не было gpgcakey. Если он существует, то «gpgkey» проверяется на «gpgcakey», и если он пройдет, он добавляется в rpmdb, если он не выполняется, тогда yum не удается (хотя все импортированные ключи остаются в rpmdb).

  6. Если появились новые gpgkeys, пользователь спрашивает, хочет ли он установить каждый ключ (если не указано значение -y). Если он скажет «нет» на какой-либо ключ, yum терпит неудачу.

  7. После установки новых клавиш yum снова проверяет подпись пакета на gpgkeys в rpmdb. Если это не удается, yum терпит неудачу.

Поместите localpkg_gpgcheck=1 в /etc/yum.conf и убедитесь, что вы всегда используете yum для установки rpms.

Если у вас есть rpm в локальной файловой системе, просто выполните

 yum install <rpm-on-local-filesys> 

Убедитесь, что вы также установили их во всех репозиториях в файле /etc/yum.repos.d

 gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/SOME-APPROVED-GPG-KEY 

Как вы упомянули, лучшее, что вы получите от установки через rpm, – это предупреждение, и нет никаких средств для его настройки, чтобы отказаться от установки на неподходящем ключе GPG.

  • Не удалось установить «libdvdcss» с yum после обновления на «Fedora 20 Heisenburg»
  • Как работает «groupinstall»? (Как преобразовать групповую установку в обычную программу multi yum install <package> -y?)
  • Самый безобидный пакет для установки для тестирования yum?
  • Обновление Yum не работает должным образом в centos
  • Использование YUM для пакетов CentALT
  • Установите ssl на CentOS Apache server
  • Как узнать, безопасен ли пакет для обновления в CentOS?
  • Как удалить пакет, который не установлен?
  • Установка постфикса из репозитория centosplus «Не удалось разрешить хост: mirror.linode.com; Неизвестная ошибка"
  • Как я могу отлаживать прерывистый сбой mkinitrd при обновлении ядра в CentOS 7?
  • Проблема зависимости в Fedora 19
  • Linux и Unix - лучшая ОС в мире.