Понижение версий пакетов в Ubuntu

23.08.2021

Продолжаю приключения со свежей нестабильной версией Ubuntu 21.04. Сегодня будем устанавливать пакет, который зависит от более старой версии другого пакета, свежего выпуска которого еще не было, но будет, а ждать некогда и надо чтобы здесь и сейчас работало.

Статья немного опоздала, все что здесь написано совершалось 10.06.2021

На этот раз не удалось поставить php7.3-gd последующей причине:

•••
bash
> apt install php7.3-gd Чтение списков пакетов… Готово Построение дерева зависимостей… Готово Чтение информации о состоянии… Готово Некоторые пакеты не могут быть установлены. Возможно, то, что вы просите, неосуществимо, или же вы используете нестабильную версию дистрибутива, где запрошенные вами пакеты ещё не созданы или были удалены из Incoming. Следующая информация, возможно, вам поможет: Следующие пакеты имеют неудовлетворённые зависимости: php7.3-gd : Зависит: php7.3-common (= 7.3.28-2+ubuntu20.04.1+deb.sury.org+1) но 7.3.28-2+ubuntu21.04.1+deb.sury.org+1 должен быть установлен E: Невозможно исправить ошибки: у вас зафиксированы сломанные пакеты.

Особы интерес в ответе вызывает следующая строка:

•••
bash
php7.3-gd : Зависит: php7.3-common (= 7.3.28-2+ubuntu20.04.1+deb.sury.org+1) но 7.3.28-2+ubuntu21.04.1+deb.sury.org+1 должен быть установлен

php7.3-common - это пакет php, который включает в себя общие файлы для пакетов PHP, общие утилиты и библиотеки, вообще все общее для всех упакованных версий PHP.

Проверяем данные пакета php7.3-common, точнее нас интересует версия (на самом деле ответ команды ниже выдает намного больше информации, которая может рассказать о том, что такое php7.3-common):

•••
bash
> apt-cache showpkg php7.3-common Package: php7.3-common Versions: 7.3.28-2+ubuntu21.04.1+deb.sury.org+1 (/var/lib/dpkg/status) ...

Нас интересует только версия, поэтому можно короче:

•••
bash
> dpkg -s php7.3-common | grep Version Version: 7.3.28-2+ubuntu21.04.1+deb.sury.org+1

php7.3-gd треубет php7.3-common версии 7.3.28-2+ubuntu20.04.1+deb.sury.org+1, а на данный момент на сервере имеется версия 7.3.28-2+ubuntu21.04.1+deb.sury.org+1.

Варианты:

  • подождать пока выкатят обвновления, 1 июля (через 20 дней как мне пришлось произвести даунгрейд) так и произошло - php7.3-gd_7.3.29-1+ubuntu21.04.1+deb.sury.org+1 пакеты появиилсь в репозитории
  • даунгрейдить - понижать версию зависимого пакета
При помощи даунгрейда (понижения версии) зависимого пакета можно установить зависящий рабочий пакет.

Даунгрейдим пакет php7.3-common:

•••
bash
> apt install php7.3-common=7.3.28-2+ubuntu20.04.1+deb.sury.org+1 Чтение списков пакетов… Готово Построение дерева зависимостей… Готово Чтение информации о состоянии… Готово Следующий пакет устанавливался автоматически и больше не требуется: libzip4 Для его удаления используйте «sudo apt autoremove». Следующие пакеты будут УДАЛЕНЫ: libapache2-mod-php7.3 php-pear php7.3 php7.3-cli php7.3-curl php7.3-fpm php7.3-json php7.3-mbstring php7.3-mysql php7.3-opcache php7.3-readline php7.3-xml php7.3-zip Следующие пакеты будут заменены на СТАРЫЕ версии: php7.3-common Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 13 пакетов, и 9 пакетов не обновлено. Необходимо скачать 581 kB архивов. После данной операции объём занятого дискового пространства уменьшится на 20,3 MB. dpkg: предупреждение: снижение версии php7.3-common с 7.3.28-2+ubuntu21.04.1+deb.sury.org+1 до 7.3.28-2+ubuntu20.04.1+deb.sury.org+1

Теперь установка зависящего пакета пройдет успешно, и он будет успешно работать.