Проблема с добавлением PGP-ключа в файл стиля DEB822 в /etc/apt/sources.list.d

Вопрос или проблема

Я пытаюсь создать файл для vs code в /etc/apt/sources.list.d в стиле DEB822 из примеров в man sources.list. Также я прочитал в man apt-key, что apt-key add устарел. У меня есть файл vscode.sources следующего содержания:

Enabled: yes
Types: deb
URIs: http://packages.microsoft.com/repos/code
Suites: stable
Components: main
Signed-By:

Затем я запустил

curl https://packages.microsoft.com/keys/microsoft.asc >> vscode.sources

чтобы получить

Enabled: yes
Types: deb
URIs: http://packages.microsoft.com/repos/code
Suites: stable
Components: main
Signed-By:
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.7 (GNU/Linux)

mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
/32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
NdCFTW7wY0Fb1fWJ+/KTsC4=
=J6gs
-----END PGP PUBLIC KEY BLOCK-----

Но, когда я запускаю apt update, я получаю ошибку

Error: Unable to parse package file /etc/apt/sources.list.d/vscode.sources (1)
Error: The list of sources could not be read.

Где я допустил ошибку?

apt ожидает, что PGP блок ключа будет отступать на один пробел. Также, линия -----BEGIN PGP PUBLIC KEY BLOCK----- должна следоваться одиночной точкой ., также с отступом.

Пример приведен в man sources.list. Я не смог найти более формального определения.

Ответ или решение

Говоря о затруднениях при добавлении PGP-ключа к файлу в стиле DEB822 в директории /etc/apt/sources.list.d, мы сталкиваемся с довольно частой проблемой, которая может возникнуть из-за специфики формата DEB822 и требования корректной структуры файла. Особенности конфигурации репозиториев и правильной интеграции PGP-ключей в поле Signed-By могут быть непрозрачными для разработчиков, не имевших дела с подобными задачами. Рассмотрим данную проблему детально, с объяснениями шагов, каждого потенциального препятствия и предложением решения.

Теория

В текущей версии Debian, начиная с Debian 10 (Buster), а также в Ubuntu, управление источниками программного обеспечения и подписание репозиториев PGP-ключами часто осуществляется с помощью формата DEB822. Этот формат предоставляет более структурированное и управляемое среду по сравнению с традиционным списком источников, записанным в формате /etc/apt/sources.list.

Когда вы создаете файл в формате DEB822, важно соблюдать строгие правила синтаксиса, задающие форматирование и порядок строчек. Поле Signed-By используется для указания пути к PGP-ключу, который будет использоваться для подтверждения подлинности репозитория.

Примеры

На ваш случай, конфигурация в файле vscode.sources изначально выглядела правильно, за исключением блока PGP-ключа. Согласно man sources.list, PGP-ключ должен был быть либо предварительно переопределен в отдельный файл и добавлен как путь в строке Signed-By, либо включаться внутрь файла в строго определенном формате.

Применение

Чтобы устранить возникшую проблему, выполните следующие действия:

  1. Создание отдельного файла для PGP ключа:
    Вместо добавления блока ключа непосредственно в файл источника, создайте отдельный файл с PGP-ключом. Это общий метод для интеграции PGP-ключей:

    curl https://packages.microsoft.com/keys/microsoft.asc -o /usr/share/keyrings/microsoft.asc

    Затем обновите файл vscode.sources, чтобы он включал путь к этому файлу:

    Enabled: yes
    Types: deb
    URIs: http://packages.microsoft.com/repos/code
    Suites: stable
    Components: main
    Signed-By: /usr/share/keyrings/microsoft.asc
  2. Убедитесь в правильности отступов и синтаксиса:
    Если вы выберете оставить ключ внутри файла vscode.sources, убедитесь, что каждая строка ключа отступлена на один пробел и между BEGIN блоком и ключом присутствует строка с одиноким отступленным символом .. Это может выглядеть следующим образом:

    Signed-By:
    .
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.4.7 (GNU/Linux)
    
    mQENBFYxWIwBCADAKoZhZlJxGNGWzqV+1OG1xiQeoowKhssGAKvd+buXCGISZJwT
    LXZqIcIiLP7pqdcZWtE9bSc7yBY2MalDp9Liu0KekywQ6VVX1T72NPf5Ev6x6DLV
    7aVWsCzUAF+eb7DC9fPuFLEdxmOEYoPjzrQ7cCnSV4JQxAqhU4T6OjbvRazGl3ag
    OeizPXmRljMtUUttHQZnRhtlzkmwIrUivbfFPD+fEoHJ1+uIdfOzZX8/oKHKLe2j
    H632kvsNzJFlROVvGLYAk2WRcLu+RjjggixhwiB+Mu/A8Tf4V6b+YppS44q8EvVr
    M+QvY7LNSOffSO6Slsy9oisGTdfE39nC7pVRABEBAAG0N01pY3Jvc29mdCAoUmVs
    ZWFzZSBzaWduaW5nKSA8Z3Bnc2VjdXJpdHlAbWljcm9zb2Z0LmNvbT6JATUEEwEC
    AB8FAlYxWIwCGwMGCwkIBwMCBBUCCAMDFgIBAh4BAheAAAoJEOs+lK2+EinPGpsH
    /32vKy29Hg51H9dfFJMx0/a/F+5vKeCeVqimvyTM04C+XENNuSbYZ3eRPHGHFLqe
    MNGxsfb7C7ZxEeW7J/vSzRgHxm7ZvESisUYRFq2sgkJ+HFERNrqfci45bdhmrUsy
    7SWw9ybxdFOkuQoyKD3tBmiGfONQMlBaOMWdAsic965rvJsd5zYaZZFI1UwTkFXV
    KJt3bp3Ngn1vEYXwijGTa+FXz6GLHueJwF0I7ug34DgUkAFvAs8Hacr2DRYxL5RJ
    XdNgj4Jd2/g6T9InmWT0hASljur+dJnzNiNCkbn9KbX7J/qK1IbR8y560yRmFsU+
    NdCFTW7wY0Fb1fWJ+/KTsC4=
    =J6gs
    -----END PGP PUBLIC KEY BLOCK-----
  3. Обновите списки пакетов:
    После внесения изменений, убедитесь, что списки пакетов обновляются корректно:

    sudo apt update

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

Оцените материал
Добавить комментарий

Капча загружается...