Вопрос или проблема
Я пытаюсь установить зависимости для компиляции Strongswan, так как основные пакеты, похоже, повреждены.
Когда я пытаюсь установить пакет libsoup, я получаю следующую ошибку:
~/strongswan-5.9.14# apt install -f libsoup2.4-dev
Чтение списков пакетов... Готово
Формирование дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Некоторые пакеты не удалось установить. Это может означать, что вы
запросили невозможную ситуацию или, если вы используете нестабильное
распределение, что некоторые необходимые пакеты еще не были созданы
или перемещены из Incoming.
Следующая информация может помочь разрешить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости:
libbrotli-dev : Зависит: libbrotli1 (= 1.1.0-2build2), но должен быть установлен 1.1.0-2+ubuntu22.04.1+deb.sury.org+1
Это на серверной установке, недавно обновленной до 24.04.1 LTS.
Обновление: информация о пакете
# apt policy libbrotli1
libbrotli1:
Установлено: 1.1.0-2+ubuntu22.04.1+deb.sury.org+1
Кандидат: 1.1.0-2+ubuntu22.04.1+deb.sury.org+1
Таблица версий:
*** 1.1.0-2+ubuntu22.04.1+deb.sury.org+1 100
100 /var/lib/dpkg/status
1.1.0-2build2 500
500 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
# apt-get remove libbrotli1
Чтение списков пакетов... Готово
Формирование дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Некоторые пакеты не удалось установить. Это может означать, что вы
запросили невозможную ситуацию или, если вы используете нестабильное
распределение, что некоторые необходимые пакеты еще не были созданы
или перемещены из Incoming.
Следующая информация может помочь разрешить ситуацию:
Следующие пакеты имеют неудовлетворенные зависимости:
shim-signed : Зависит: grub-efi-amd64-signed (>= 1.191~), но он не будет установлен или
grub-efi-arm64-signed (>= 1.191~), но он не установим или
base-files (< 12.3), но должен быть установлен 13ubuntu10.1
Зависит: grub-efi-amd64-signed (>= 1.187.2~), но он не будет установлен или
grub-efi-arm64-signed (>= 1.187.2~), но он не установим
Зависит: grub2-common (>= 2.04-1ubuntu24), но он не будет установлен
E: Ошибка, pkgProblemResolver::Resolve вызвал сбои, это может быть вызвано удерживаемыми пакетами.
Я вижу, что установленный пакет из ppa, и в репозиториях есть пакет. Каков лучший / безопасный способ удалить и переустановить пакет из репозитория, не сломав все?
Для решения этой проблемы я изменил приоритет пинов репозитория:
в /etc/apt/preferences.d я создал файл
lib.pref
Package: *
Pin: origin archive.ubuntu.com
Pin-Priority: 1001
После выполнения
apt update
,
apt policy libbrotli1
теперь показал:
apt policy libbrotli1
libbrotli1:
Установлено: 1.1.0-2+ubuntu22.04.1+deb.sury.org+1
Кандидат: 1.1.0-2build2
Таблица версий:
*** 1.1.0-2+ubuntu22.04.1+deb.sury.org+1 100
100 /var/lib/dpkg/status
1.1.0-2build2 1001
1001 http://archive.ubuntu.com/ubuntu noble/main amd64 Packages
Затем я смог переустановить пакет.
apt reinstall libbrotli1
Чтение списков пакетов... Готово
Формирование дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Следующие пакеты будут ПОНИЖЕНЫ:
libbrotli1
0 обновлено, 0 новых установлено, 1 понижен, 0 удалено и 0 не обновлено.
Необходимо загрузить 331 кБ архивов.
После этой операции будет использовано 3072 Б дополнительного дискового пространства.
Вы хотите продолжить? [Y/n] y
Загрузка: 1 http://archive.ubuntu.com/ubuntu noble/main amd64 libbrotli1 amd64 1.1.0-2build2 [331 kB]
Получено 331 кБ за 0 с (679 кБ/с)
dpkg: предупреждение: понижение libbrotli1:amd64 с 1.1.0-2+ubuntu22.04.1+deb.sury.org+1 до 1.1.0-2build2
(Чтение базы данных ... 119664 файлов и директорий в настоящее время установлено.)
Подготовка к распаковке .../libbrotli1_1.1.0-2build2_amd64.deb ...
Распаковка libbrotli1:amd64 (1.1.0-2build2) поверх (1.1.0-2+ubuntu22.04.1+deb.sury.org+1) ...
Настройка libbrotli1:amd64 (1.1.0-2build2) ...
Обработка триггеров для libc-bin (2.39-0ubuntu8.3) ...
Сканирование процессов...
Сканирование кандидатов...
Сканирование образов linux...
Рабочее ядро, похоже, обновлено.
Перезапуск служб...
systemctl restart clamav-freshclam.service packagekit.service php8.3-fpm.service sogo.service
Ни одного контейнера не нужно перезапускать.
Нет сеансов пользователей с устаревшими двоичными файлами.
Нет гостей VM, на которых работают устаревшие двоичные файлы гипервизора (qemu) на этом хосте.
И затем я смог установить зависимости без проблем.
Я закомментировал записи в lib.pref, чтобы не нарушать будущее, но это там, если есть другой пакет, который нужно обновить из ppa 22.04.
Отличный вопрос и ответ!
Проверьте вывод sudo apt update, чтобы увидеть полное доменное имя архива, которое нужно вставить в lib.pref. В моем случае это было gb.archive.ubuntu.com, а не archive.ubuntu.com
Ответ или решение
Решение проблемы зависимостей APT при установке библиотек для StrongSwan
Введение
В процессе установки зависимостей для компиляции StrongSwan возникла проблема с установкой пакета libsoup
. Ошибка, связанная с несовпадением зависимостей, указывает на конфликты с установленной версией библиотеки libbrotli1
. Данное руководство даст подробные рекомендации по решению возникшей ситуации и безопасной установке необходимых пакетов.
Анализ проблемы
При попытке установить пакет libsoup2.4-dev
, система сообщила о наличии неудовлетворённых зависимостей, в частности:
libbrotli-dev : Depends: libbrotli1 (= 1.1.0-2build2) but 1.1.0-2+ubuntu22.04.1+deb.sury.org+1 is to be installed
Это означает, что установленная версия libbrotli1
не соответствует той, которая требуется для установки libbrotli-dev
.
При проверке через команду apt policy libbrotli1
было установлено, что текущая версия:
Installed: 1.1.0-2+ubuntu22.04.1+deb.sury.org+1
Candidate: 1.1.0-2build2
Решения
1. Изменение приоритета репозитория
Вы корректно решили временно изменить приоритет репозитория для установки пакетов из официальных источников. Создание файла конфигурации в /etc/apt/preferences.d/lib.pref
с помощью следующих строк:
Package: *
Pin: origin archive.ubuntu.com
Pin-Priority: 1001
позволило дать предшествующим версиям из официального репозитория больший приоритет при разрешении зависимостей. После обновления списка пакетов с помощью apt update
, командой apt policy libbrotli1
мы увидели, что установленная версия была «понижена», что стало необходимым условием для дальнейшей операции.
2. Переустановка пакета libbrotli1
Вы выполнили переустановку с помощью команды:
apt reinstall libbrotli1
и получили уведомление о понижении версии пакета:
The following packages will be DOWNGRADED:
libbrotli1
Таким образом, этот шаг подтвердил удачное возвращение к необходимой версии libbrotli1
, что позволило устранить конфликт при установке libsoup
.
3. Установка зависимостей StrongSwan
Теперь, после успешного понижения версии, вы можете без проблем устанавливать необходимые зависимости для StrongSwan:
apt install -f libsoup2.4-dev
Это завершит установку, и вы сможете продолжить компиляцию вашего проекта.
Заключение
Решение проблем зависимостей в APT может потребовать применения различных стратегий, таких как изменение приоритетов репозиториев и понижение версий пакетов. Ваша реализация предложенных шагов продемонстрировала профессиональный подход к устранению проблем и обеспечению стабильности системы.
Если в дальнейшем вам потребуется установить пакеты из PPA, вы можете временно изменять приоритеты, а затем возвращать их в исходное состояние, чтобы избежать конфликтов при обновлениях.
Не забывайте проверять выводы команд apt update
и применять рекомендации по изменению конфигураций в зависимости от ваших нужд.