вторник, 16 июля 2019 г.

Проблемы с обновлением ключа репозитория

В этом году я повторил свой промах с GPG ключем репозитория и снова пропустил срок обновления ключа (аналогично в 2015 и 2017 годах). Но в этом году ситуация немного отличается от прошлого раза и поправить ее стало сложнее.

Продление ключа и отправка его на pool.sks-keyservers.net ничего не дала и мне продолжают приходить письма, что мой репозиторий сломан. В баг трекере Midnight Commander даже завели баг на эту тему.

Вчера отправил обновленный ключ через веб-форму и сегодня его начало находить. Но пока не ясно что делать с вариантом apt-add-repository, который упоминали в тикете.

$ sudo apt-add-repository --keyserver pool.sks-keyservers.net 'deb http://www.tataranovich.com/ubuntu bionic main'
Ign:1 http://www.tataranovich.com/ubuntu bionic InRelease
Hit:2 http://www.tataranovich.com/ubuntu bionic Release
Err:3 http://www.tataranovich.com/ubuntu bionic Release.gpg                
  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 836CC41976FB442E
Get:4 http://ftp.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB]     
Hit:5 http://ftp.ubuntu.com/ubuntu bionic InRelease
Fetched 88.7 kB in 1s (103 kB/s)
Reading package lists... Done
W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://www.tataranovich.com/ubuntu bionic Release: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 836CC41976FB442E
W: Failed to fetch http://www.tataranovich.com/ubuntu/dists/bionic/Release.gpg  The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 836CC41976FB442E
W: Some index files failed to download. They have been ignored, or old ones used instead.

Хотя вариант с apt-key adv уже работает без ошибок

$ sudo apt-key adv --keyserver pool.sks-keyservers.net --recv-keys 0x836CC41976FB442E
Executing: /tmp/apt-key-gpghome.C12VZjWsDg/gpg.1.sh --keyserver pool.sks-keyservers.net --recv-keys 0x836CC41976FB442E
gpg: key 836CC41976FB442E: 1 signature not checked due to a missing key
gpg: key 836CC41976FB442E: public key "Tataranovich.com APT Repository <pkg-master@tataranovich.com>" imported
gpg: Total number processed: 1
gpg:               imported: 1

5 комментариев:

  1. вариант с апт-кей в скриптах тоже бессмысленен

    Настраивается пакет tataranovich-keyring (2019.07.07) …
    Warning: apt-key should not be used in scripts (called from postinst maintainerscript of the package tataranovich-keyring)

    вместо
    apt-key add /usr/share/keyrings/tataranovich-keyring.gpg

    apt-key del 2EE7EF82
    apt-key del 373FD74C
    apt-key del 76FB442E

    лучше всего сразу класть файл файл ключа в /etc/apt/trusted.gpg.d внутри пакета как в ubuntu-keyring
    с точки зрения системы пакетов это правильнее.

    ОтветитьУдалить
    Ответы
    1. Верное замечание. Но последнее время мало времени чтобы полноценно заниматься репозитарием.

      Удалить
    2. добавить в этот пакет еще и ссылки на репозиторий в /etc/apt/sources.list.d и вообще все будет хорошо %)

      Удалить
    3. Добавлять что-то в APT sources не планирую. Мне всегда не нравилось своеволие пакетов, которые меняют конфигурацию APT.

      Удалить
    4. имхо зря. создаешь пакет tataranovich_sources.deb в котором лежит и соурс.лист и ключ для apt т.е.
      /etc/apt/sources.list.d/tataranovich.list
      /etc/apt/trusted.gpg.d/tataranovich_expire****.gpg

      вместо кучи строк и текста как где и чем устанавливать ключи и прописывать источники, пишешь скачать и установить "sudo dpkg -i tataranovich_sources.deb" что наглядно и понятно.

      сам пакет кладешь так же в репозиторий и за год до окончания работы старого ключа добавляшеь в него новый ключ. за год ключ добавляется в ключницу всем пользователям и остается только заменить его в генераторе пакетов репозитория и удалить из пакета tataranovich_sources.deb старый ключ.

      apt/sources.list.d и apt/trusted.gpg.d для такого и созданы.

      Удалить