apt неожиданно завершился с ошибкой: не указан приоритет (или задан ноль) для pin

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

Я сталкиваюсь с ошибкой, возвращаемой apt, и после многих шагов по устранению неполадок я не смог найти причину или решение. Вот вывод команды apt update:

$ sudo apt update
Hit:1 https://nvidia.github.io/libnvidia-container/stable/deb/amd64  InRelease
Hit:2 https://download.docker.com/linux/ubuntu jammy InRelease
Hit:3 https://debian.neo4j.com stable InRelease
Hit:4 http://repository.netdata.cloud/repos/stable/ubuntu jammy/ InRelease
Hit:5 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:6 http://ca.archive.ubuntu.com/ubuntu jammy InRelease
Get:7 https://esm.ubuntu.com/apps/ubuntu jammy-apps-security InRelease [7,568 B]
Hit:8 http://ca.archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:9 http://repository.netdata.cloud/repos/repoconfig/ubuntu jammy/ InRelease
Get:10 https://esm.ubuntu.com/apps/ubuntu jammy-apps-updates InRelease [7,456 B]
Hit:11 http://ca.archive.ubuntu.com/ubuntu jammy-backports InRelease
Get:12 https://esm.ubuntu.com/infra/ubuntu jammy-infra-security InRelease [7,450 B]
Get:13 https://esm.ubuntu.com/infra/ubuntu jammy-infra-updates InRelease [7,449 B]
Hit:14 https://ppa.launchpadcontent.net/linrunner/tlp/ubuntu jammy InRelease
Fetched 29.9 kB in 1s (20.1 kB/s)
Reading package lists... Done
E: No priority (or zero) specified for pin

Ошибка указывает на отсутствие приоритета pin. Я посмотрел в /etc/apt/preferences.d/. Там есть 3 файла, и у всех указан приоритет pin:

$ ll /etc/apt/preferences.d/
total 12K
-rw-r--r-- 1 root root  65 Mar  5 06:20 80netdata
-rw-r--r-- 1 root root 437 Feb 14  2024 ubuntu-pro-esm-apps
-rw-r--r-- 1 root root 429 Feb 14  2024 ubuntu-pro-esm-infra

$ cat /etc/apt/preferences.d/*
Package: *
Pin: origin "repository.netdata.cloud"
Priority: 1000
# Этот файл используется Ubuntu Pro и предоставляется пакетом ubuntu-pro-client.
# Он не оказывает никакого влияния, если службы Ubuntu Pro не используются, так как
# никакие другие репозитории apt не ожидается, что будут соответствовать o=UbuntuESMApps.
#
# Установите приоритет пакетов esm-apps немного выше, чем по умолчанию,
# чтобы они имели преимущество по сравнению с пакетами, не относящимися к ESM, из архива,
# когда эта служба включена.

Package: *
Pin: release o=UbuntuESMApps
Pin-Priority: 510
# Этот файл используется Ubuntu Pro и предоставляется пакетом ubuntu-pro-client.
# Он не оказывает никакого влияния, если службы Ubuntu Pro не используются, так как
# никакие другие репозитории apt не ожидается, что будут соответствовать o=UbuntuESM.
#
# Установите приоритет пакетов esm-infra немного выше, чем по умолчанию,
# чтобы они имели преимущество по сравнению с пакетами, не относящимися к ESM, из архива,
# когда эта служба включена.
Package: *
Pin: release o=UbuntuESM
Pin-Priority: 510

Ничего не менялось в настройках apt уже как минимум 3 месяца, и единственное заметное, что было недавно, это apt update & apt upgrade за день до этого.

Я совершенно потерян. Если есть возможное решение, я был бы очень признателен

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

Ошибка, которую вы наблюдаете, связана с определением соответствующих приоритетов (pin priority) для репозиториев APT. Давайте подробнее разберем теорию, рассмотрим примеры и предложим решение данной проблемы.

Теория

APT — это инструмент управления пакетами на Debian и его производных, таких как Ubuntu. Одним из его мощных инструментов является механизм приоритетов (pinning), который позволяет пользователям определять, из каких источников должны браться пакеты. Это особенно актуально, когда у вас подключено несколько источников, и вы хотите задать определенные предпочтения, например, использовать тестируемые версии пакетов или пакеты из определенных выполнений.

Файл конфигурации /etc/apt/preferences.d/ хранит правила приоритетов. Каждое правило содержит три ключевых элемента:

  1. Package: определяет, какие пакеты охватывает данное правило.
  2. Pin: указывает, каким условиям должны соответствовать пакеты (например, источник исходного кода, релиз).
  3. Pin-Priority: задает числовое значение приоритета, которое определяет предпочтение. Значения выше 1000 обычно означают, что данный источник будет использоваться в первую очередь.

Пример

Посмотрим на ваши файлы конфигурации в /etc/apt/preferences.d/. Имеются три файла:

  1. 80netdata

    Package: *
    Pin: origin "repository.netdata.cloud"
    Priority: 1000
  2. ubuntu-pro-esm-apps

    Package: *
    Pin: release o=UbuntuESMApps
    Pin-Priority: 510
  3. ubuntu-pro-esm-infra

    Package: *
    Pin: release o=UbuntuESM
    Pin-Priority: 510

Каждый из этих файлов правильно формирует правила приоритета, где видны как Pin, так и Pin-Priority. Однако важен порядок и формат файлов, а также возможные дополнительные файлы или строки, которые могут не отображаться в вашем описании, что и вызывает проблему.

Применение

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

  1. Проверка дополнительных файлов и строк: Убедитесь, что в директории /etc/apt/preferences.d/ нет других файлов, которые могут содержать некорректные правила. Например, если случайно оказывается незавершенный или поврежденный файл, это может вызвать ошибку.

  2. Проверка синтаксиса файлов: Убедитесь, что во всех файлах формат и синтаксис точны, нет опечаток и все строки корректно завершены.

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

  4. Использование команды grep: Выполните grep -r "Pin" /etc/apt/preferences.d/, чтобы просмотреть все строчки в этой директории, где указано "Pin". Это поможет выявить места, где указан пин, но не указан приоритет.

  5. Удаление и тестирование: Если Вы не смогли найти источник ошибки, можно временно переместить файлы из /etc/apt/preferences.d/, чтобы проверить, исчезнет ли ошибка. Если ошибка исчезает, возвращайте по одному файлу, чтобы определить проблемный.

  6. Дополнительная диагностика: Запустите sudo apt-cache policy, чтобы вывести список всех настроек приоритетов и убедиться, что они применимы правильно.

Действуя согласно предложенному плану, вы сможете более эффективно диагностировать и устранить возникшую проблему. В случае, если указанные действия оказываются недостаточными, возможно, стоит обратиться к дополнительным источникам, например, к сообществам Ubuntu или Debian, где опытные пользователи и специалисты помогут в решении нестандартных задач.

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

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