Не удается установить libgdal-dev на Ubuntu 22.04 из-за неудовлетворенных зависимостей

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

Я сталкиваюсь с проблемами при попытке установить пакет libgdal-dev на сервере на архитектуре ARM с операционной системой Ubuntu 22.04. Установка не проходит из-за неудовлетворённых зависимостей с несколькими библиотеками. Ниже приведены детали сообщения об ошибке, которое я получаю:

sudo apt-get install libgdal-dev
Чтение списков пакетов... Готово
Формирование дерева зависимостей... Готово
Чтение информации о состоянии... Готово
Некоторые пакеты не могут быть установлены. Это может означать, что вы
запросили невозможную ситуацию или, если вы используете нестабильную
дистрибуцию, что некоторые необходимые пакеты ещё не были созданы
или были перемещены из Incoming.
Следующая информация может помочь разрешить ситуацию:

Следующие пакеты имеют неудовлетворённые зависимости:
 libexpat1-dev : Зависит от: libexpat1 (= 2.4.7-1ubuntu0.2), но будет установлена 2.4.7-1ubuntu0.3
 libtiff-dev : Зависит от: libtiff5 (= 4.3.0-6ubuntu0.7), но будет установлена 4.3.0-6ubuntu0.9
 libxml2-dev : Зависит от: libxml2 (= 2.9.13+dfsg-1ubuntu0.3), но будет установлена 2.9.13+dfsg-1ubuntu0.4
E: Невозможно исправить проблемы, у вас удерживаемые сломанные пакеты.

Моя текущая конфигурация:

  • Операционная система: Ubuntu 22.04 (архитектура ARM)
  • Провайдер сервера: Hetzner Online
  • Версия libexpat1: 2.4.7-1ubuntu0.3 (установлена)
  • Версия libtiff5: 4.3.0-6ubuntu0.9 (установлена)
  • Версия libxml2: 2.9.13+dfsg-1ubuntu0.4 (установлена)

Требуемые версии этих библиотек:

  • libexpat1 (= 2.4.7-1ubuntu0.2)
  • libtiff5 (= 4.3.0-6ubuntu0.7)
  • libxml2 (= 2.9.13+dfsg-1ubuntu0.3)

Шаги, которые я предпринял:

  1. Обновил список пакетов с помощью sudo apt-get update и очистил кэш с помощью sudo apt-get clean.
  2. Попытался понизить версии libexpat1, libtiff5 и libxml2 до требуемых версий с помощью sudo apt-get install libexpat1=2.4.7-1ubuntu0.2 (также пробовал с другими пакетами), но столкнулся с ошибками 404 Not Found.
  3. Проверил доступные версии с помощью apt-cache policy и подтвердил, что требуемые версии указаны в репозитории, но они недоступны.

Вопрос:

  • Есть ли надёжный способ решить эти конфликты зависимостей и успешно установить libgdal-dev на Ubuntu 22.04 для ARM?
  • Есть ли альтернативный способ получить и установить требуемые версии этих библиотек?
  • Столкнулся ли кто-нибудь с подобными проблемами на архитектуре ARM, и как вы их преодолели?

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

Спасибо!

Больше деталей:

Вывод apt policy для затронутых пакетов:

$ apt policy libtiff5 libtiff-dev
libtiff5:
  Установлен: 4.3.0-6ubuntu0.9
  Кандидат: 4.3.0-6ubuntu0.9
  Таблица версий:
 *** 4.3.0-6ubuntu0.9 100
        100 /var/lib/dpkg/status
     4.3.0-6ubuntu0.7 500
        500 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages
        500 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages
     4.3.0-6 500
        500 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 Packages
libtiff-dev:
  Установлен: (нет)
  Кандидат: 4.3.0-6ubuntu0.7
  Таблица версий:
     4.3.0-6ubuntu0.7 500
        500 http://ports.ubuntu.com/ubuntu-ports jammy-updates/main arm64 Packages
        500 http://ports.ubuntu.com/ubuntu-ports jammy-security/main arm64 Packages
     4.3.0-6 500
        500 http://ports.ubuntu.com/ubuntu-ports jammy/main arm64 Packages

Содержимое /etc/apt/sources.list:

Я использую комбинацию репозиториев Hetzner и Ubuntu ports:

deb http://mirror.hetzner.com/ubuntu-ports/packages jammy main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe multiverse
deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse

Решено: Проблемы с версиями пакетов из-за проблем с зеркалом

Проблема:
Я обнаружил, что установил версии пакетов, которые больше не доступны в репозиториях. Эта ситуация возникла из-за проблем с зеркалом Hetzner (как указано на их странице состояния: https://status.hetzner.com/incident/9ea719cc-5ef5-46cf-b286-a76c10da5492). В результате несколько пакетов имели неудовлетворённые зависимости, что не позволяло мне установить или обновить определённое программное обеспечение.

Решение:

  1. Игнорировать репозиторий jammy-updates: Так как версии в jammy-updates были недоступны, я удалил репозитории jammy-updates и jammy-security из своего списка источников.

  2. Понизить версии затронутых пакетов: Я создал скрипт, чтобы автоматически понизить версии пакетов с проблемами зависимостей до версий, доступных в репозитории jammy. Альтернативно, это можно сделать вручную для каждого пакета, проверяя доступную версию с помощью apt policy и выполняя:

    sudo apt-get install "package=available_version" --allow-downgrades -y
    

Вот мой bash-скрипт для автоматизации процесса:
(Примечание: Сначала создайте текстовый файл, содержащий пакеты, которые вы хотите понизить.)

#!/bin/bash

# Чтение пакетов из файла
while IFS= read -r package; do
    # Получение доступной версии из репозитория
    available_version=$(apt-cache policy "$package" | grep -A3 'Version table:' | grep '500' | awk '{print $1}')

    if [ -n "$available_version" ]; then
        echo "Понижая $package до версии $available_version..."
        sudo apt-get install "$package=$available_version" --allow-downgrades -y
    else
        echo "Доступная версия не найдена для $package."
    fi
done < packages.txt

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

Решение проблемы с установкой libgdal-dev на Ubuntu 22.04 из-за неудовлетворенных зависимостей

Разберем проблему, с которой вы столкнулись при установке пакета libgdal-dev. Судя по предоставленным вами данным, наиболее вероятная причина – это проблемы с версиями пакетов и репозиториями. Давайте шаг за шагом разберем, как можно решить эту проблему.

Шаг 1: Проверьте источники пакетов

Возможные проблемы могут быть связаны с тем, что некоторые из версий пакетов, от которых зависит libgdal-dev, недоступны или устарели в вашем текущем списке репозиториев. Убедитесь, что ваш файл /etc/apt/sources.list правильно настроен. Попробуйте заменить строки, связанные с зеркалом Hetzner, на официальные репозитории Ubuntu. Пример:

deb http://archive.ubuntu.com/ubuntu/ jammy main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

После внесения изменений обновите список пакетов:

sudo apt-get update

Шаг 2: Устранение неудовлетворенных зависимостей

Теперь попробуем решить проблему с зависимостями. Поскольку версии пакетов уже установлены, и некоторые из них не соответствуют требованиям, вы можете попробовать их удалить и переустановить. Используйте следующую команду для удаления:

sudo apt-get remove --purge libexpat1-dev libtiff-dev libxml2-dev

Шаг 3: Установка необходимых пакетов с корректными версиями

Теперь попробуем установить все необходимые пакеты заново с использованием следующей команды:

sudo apt-get install libexpat1-dev libtiff-dev libxml2-dev libgdal-dev

Если вы получите ошибки, указывающие на наличие определенных версий пакетов, которые не могут быть установлены, можно попробовать указать нужные версии вручную, как показано ниже:

sudo apt-get install libexpat1=2.4.7-1ubuntu0.3 libtiff5=4.3.0-6ubuntu0.9 libxml2=2.9.13+dfsg-1ubuntu0.4 --allow-downgrades

Шаг 4: Скрипт для автоматизации процесса понижения версий

Если вы хотите автоматизировать процесс понижения версий, вы можете создать скрипт, который будет это делать. Пример скрипта:

#!/bin/bash

# Убедитесь, что у вас есть файл packages.txt с необходимыми пакетами
while IFS= read -r package; do
    available_version=$(apt-cache policy "$package" | grep -A3 'Version table:' | grep '500' | awk '{print $1}')

    if [ -n "$available_version" ]; then
        echo "Понижение $package до версии $available_version..."
        sudo apt-get install "$package=$available_version" --allow-downgrades -y
    else
        echo "Нет доступной версии для $package."
    fi
done < packages.txt

Заключение

При появлении подобных проблем с зависимостями в Ubuntu, особенно на архитектурах ARM, важно проверять доступные версии пакетов и их репозитории.

Если описанные шаги не помогли решить проблему, возможно стоит обратить внимание на статус зеркал (например, в случае с Hetzner) или попробовать поискать другие оффлайн-репозитории, предоставляющие необходимые пакеты.

Если у вас возникнут дополнительные вопросы или проблемы, пожалуйста, не стесняйтесь обращаться за помощью. Удачи!

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

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