Вопрос или проблема
Я сталкиваюсь с ошибкой, возвращаемой 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/
хранит правила приоритетов. Каждое правило содержит три ключевых элемента:
- Package: определяет, какие пакеты охватывает данное правило.
- Pin: указывает, каким условиям должны соответствовать пакеты (например, источник исходного кода, релиз).
- Pin-Priority: задает числовое значение приоритета, которое определяет предпочтение. Значения выше 1000 обычно означают, что данный источник будет использоваться в первую очередь.
Пример
Посмотрим на ваши файлы конфигурации в /etc/apt/preferences.d/
. Имеются три файла:
-
80netdata
Package: * Pin: origin "repository.netdata.cloud" Priority: 1000
-
ubuntu-pro-esm-apps
Package: * Pin: release o=UbuntuESMApps Pin-Priority: 510
-
ubuntu-pro-esm-infra
Package: * Pin: release o=UbuntuESM Pin-Priority: 510
Каждый из этих файлов правильно формирует правила приоритета, где видны как Pin
, так и Pin-Priority
. Однако важен порядок и формат файлов, а также возможные дополнительные файлы или строки, которые могут не отображаться в вашем описании, что и вызывает проблему.
Применение
Чтобы устранить ошибку, рекомендую выполнить следующие шаги:
-
Проверка дополнительных файлов и строк: Убедитесь, что в директории
/etc/apt/preferences.d/
нет других файлов, которые могут содержать некорректные правила. Например, если случайно оказывается незавершенный или поврежденный файл, это может вызвать ошибку. -
Проверка синтаксиса файлов: Убедитесь, что во всех файлах формат и синтаксис точны, нет опечаток и все строки корректно завершены.
-
Журнализация и проверка старых файлов: Проверьте системный журнал на предмет недавних изменений в этих файлах или в пакете apt. Возможно, обновления привели к изменению конфигурационных файлов.
-
Использование команды
grep
: Выполнитеgrep -r "Pin" /etc/apt/preferences.d/
, чтобы просмотреть все строчки в этой директории, где указано "Pin". Это поможет выявить места, где указан пин, но не указан приоритет. -
Удаление и тестирование: Если Вы не смогли найти источник ошибки, можно временно переместить файлы из
/etc/apt/preferences.d/
, чтобы проверить, исчезнет ли ошибка. Если ошибка исчезает, возвращайте по одному файлу, чтобы определить проблемный. -
Дополнительная диагностика: Запустите
sudo apt-cache policy
, чтобы вывести список всех настроек приоритетов и убедиться, что они применимы правильно.
Действуя согласно предложенному плану, вы сможете более эффективно диагностировать и устранить возникшую проблему. В случае, если указанные действия оказываются недостаточными, возможно, стоит обратиться к дополнительным источникам, например, к сообществам Ubuntu или Debian, где опытные пользователи и специалисты помогут в решении нестандартных задач.