× К оглавлению На главную Об авторе

Дата и время публикации:    
Дата и время модификации:

 


Исправление зависимостей сломанных пакетов DEB путем приведения их к актуальным версиям.

1. Характер неисправности

Так как у меня система с дистрибутивом Debian/Bullseye на момент стабилизации простояла уже два года и притерпела многие итерации смены программного обеспечения через процедуру apt update, поэтому во время попытки установки пакета libgtk-3-dev была выявлена ошибка с "битыми" зависимостями, а именно несоответствие версий установленных с ожидаемыми, как показано на рисунке 1-1

Рисунок 1-1

Как показано на рисунке 1-1, битые зависимости у двух пакетов libthai-dev и libwayland-dev, которые должны быть установлены для удовлетворения зависимостей пакету libgtk-3-dev

Кроме того, так же были выявлены подобные проблему у пакета libdw-dev(последующая публикация), как показано на рисунке 1-2

Рисунок 1-2

Фиксируемая ошибка выдаваемая APT печатается на английском языке как "Unable to correct problems, you have held broken packages"

Ошибка "broken packages" свидетельствует об отсутствии в менеджере APT автоматического механизма разрешения проблем, связанных с откатом на ранние версии и требующие от администратора ручного вмешательства для их разрешения, о которых и расскажу далее.

2.Решение

2.1 Суть решения

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

Исправление зависимостей пакету libthai-dev

libthai0 — библиотеки поддержки тайского языка. Поэтому смело производим установку, а именно откат, версии разрешающую проблему несоответствия версий, как показано в дампе 2-1-1

Дамп 2-1-1

~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ sudo apt install libthai0=0.1.28-3
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово         
Следующие пакеты будут заменены на СТАРЫЕ версии:
  libthai0
Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
Необходимо скачать 54,2 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 0 B.
Хотите продолжить? [Д/н] y
Пол:1 http://deb.debian.org/debian bullseye/main amd64 libthai0 amd64 0.1.28-3 [54,2 kB]
Получено 54,2 kB за 0с (482 kB/s)   
dpkg: предупреждение: снижение версии libthai0:amd64 с 0.1.28-4 до 0.1.28-3
(Чтение базы данных … на данный момент установлено 282267 файлов и каталогов.)
Подготовка к распаковке …/libthai0_0.1.28-3_amd64.deb …
Распаковывается libthai0:amd64 (0.1.28-3) на замену (0.1.28-4) …
Настраивается пакет libthai0:amd64 (0.1.28-3) …
Обрабатываются триггеры для libc-bin (2.31-13) …

2.2.1 Исправление зависимостей пакету libwayland-dev

Пакет имеет следующие зависимости в виде дополнительно устанавливаемых разделяемых библиотек, обеспечивающих программисту на языке программирования С++ интерфейса к графическому серверу по протоколу протоколу Wayland — все бы было бы прекрасно, если бы не одно НО!

Данный пакет зависит от основных библиотек, реализующих обратную совместимость с ранее написанными прикладных графических прикладных программ и использующие прослойку X-сервера, который обеспечивает доступ к композитному серверу по протоколу Wayland, в виде программного интерфейса :

libwayland-client0 — клиентской части;

libwayland-cursor0 — управлению курсором;

libwayland-server0 — серверная часть;

libwayland-egl1 — платформы Wayland EGL.

Чтобы понять, что эти пакеты являются критичными, хотя не входят в ядро композитного менеджера Wayland, об архитектуре которого рассказывал уже ранее [3.2], нужно выполнить lsof по отношению к динамической библиотеки libwayland-server.so.0, как показано в дампе 2-2-1

Дамп 2-2-1

sudo lsof | grep libwayland-server.so.0

Чтобы узнать, что пакет libwayland-server0 , предаставляющий библиотеку libwayland-server.so.0, не так просто обновить, как ранее libthai0, потому что его используют основные графические приложения, такие как chromium, gnome-shell, evolution и многие другие.

2.2.2 Рекомендации по выполнению операции

Поэтому до начала установки вышеперечисленных пакетов к актуальным версиям нужно выполнить следующие рекомендуемые действия:

  • Перевести систему в консольный режим c использованием клавиш CTRL + ALT + F3 [3.3] и только затем приступить к данным критическим операциям.
  • 2.2.3 Установка актуальной версии

    Установку (возврат) к актуальной версии пакета libwayland-client0 произвел, как показано в дампе 2-2-2

    Дамп 2-2-2

    ~$ sudo apt install libwayland-client0=1.18.0-2~exp1.1
    [sudo] пароль для user:                                                         
    Чтение списков пакетов… Готово                                                  
    Построение дерева зависимостей… Готово                                          
    Чтение информации о состоянии… Готово                                           
    Следующие пакеты будут заменены на СТАРЫЕ версии:                               
      libwayland-client0                                                            
    Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
    Необходимо скачать 26,9 kB архивов.                                             
    После данной операции объём занятого дискового пространства возрастёт на 0 B.   
    Хотите продолжить? [Д/н] y                                                      
    Пол:1 http://deb.debian.org/debian bullseye/main amd64 libwayland-client0 amd64 1.18.0-2~exp1.1 [26,9 kB]
    Получено 26,9 kB за 0с (258 kB/s)                                               
    dpkg: предупреждение: снижение версии libwayland-client0:amd64 с 1.19.0-2 до 1.18.0-2~exp1.1
    (Чтение базы данных … на данный момент установлено 282298 файлов и каталогов.)
    Подготовка к распаковке …/libwayland-client0_1.18.0-2~exp1.1_amd64.deb …
    Распаковывается libwayland-client0:amd64 (1.18.0-2~exp1.1) на замену (1.19.0-2) …
    Настраивается пакет libwayland-client0:amd64 (1.18.0-2~exp1.1) …
    Обрабатываются триггеры для libc-bin (2.31-13) …
    

    Установку (возврат) к актуальной версии пакета libwayland-client0 произвел, как показано в дампе 2-2-3

    Дамп 2-2-3

    ~$ sudo apt install libwayland-cursor0=1.18.0-2~exp1.1
    Чтение списков пакетов… Готово
    Построение дерева зависимостей… Готово
    Чтение информации о состоянии… Готово         
    Следующие пакеты будут заменены на СТАРЫЕ версии:
      libwayland-cursor0
    Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
    Необходимо скачать 14,6 kB архивов.
    После данной операции объём занятого дискового пространства возрастёт на 0 B.
    Хотите продолжить? [Д/н] y
    Пол:1 http://deb.debian.org/debian bullseye/main amd64 libwayland-cursor0 amd64 1.18.0-2~exp1.1 [14,6 kB]
    Получено 14,6 kB за 0с (178 kB/s)               
    dpkg: предупреждение: снижение версии libwayland-cursor0:amd64 с 1.19.0-2 до 1.18.0-2~exp1.1
    (Чтение базы данных … на данный момент установлено 282298 файлов и каталогов.)
    Подготовка к распаковке …/libwayland-cursor0_1.18.0-2~exp1.1_amd64.deb …
    Распаковывается libwayland-cursor0:amd64 (1.18.0-2~exp1.1) на замену (1.19.0-2) …
    Настраивается пакет libwayland-cursor0:amd64 (1.18.0-2~exp1.1) …
    Обрабатываются триггеры для libc-bin (2.31-13) …
    

    Установку (возврат) к актуальной версии пакета libwayland-cursor0 произвел, как показано в дампе 2-2-4

    Дамп 2-2-4

    ~$ sudo apt install libwayland-server0=1.18.0-2~exp1.1
    Чтение списков пакетов… Готово
    Построение дерева зависимостей… Готово
    Чтение информации о состоянии… Готово         
    Следующие пакеты будут заменены на СТАРЫЕ версии:
      libwayland-server0
    Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
    Необходимо скачать 34,4 kB архивов.
    После данной операции объём занятого дискового пространства возрастёт на 0 B.
    Хотите продолжить? [Д/н] y
    Пол:1 http://deb.debian.org/debian bullseye/main amd64 libwayland-server0 amd64 1.18.0-2~exp1.1 [34,4 kB]
    Получено 34,4 kB за 0с (417 kB/s)               
    dpkg: предупреждение: снижение версии libwayland-server0:amd64 с 1.19.0-2 до 1.18.0-2~exp1.1
    (Чтение базы данных … на данный момент установлено 282298 файлов и каталогов.)
    Подготовка к распаковке …/libwayland-server0_1.18.0-2~exp1.1_amd64.deb …
    Распаковывается libwayland-server0:amd64 (1.18.0-2~exp1.1) на замену (1.19.0-2) …
    Настраивается пакет libwayland-server0:amd64 (1.18.0-2~exp1.1) …
    Обрабатываются триггеры для libc-bin (2.31-13) …
    

    Установку (возврат) к актуальной версии пакета произвел libwayland-egl1, как показано в дампе 2-2-5

    Дамп 2-2-5

    ~$ sudo apt install libwayland-egl1=1.18.0-2~exp1.1
    Чтение списков пакетов… Готово
    Построение дерева зависимостей… Готово
    Чтение информации о состоянии… Готово         
    Следующие пакеты будут заменены на СТАРЫЕ версии:
      libwayland-egl1
    Обновлено 0 пакетов, установлено 0 новых пакетов, 1 пакетов заменено на старые версии, для удаления отмечено 0 пакетов, и 0 пакетов не обновлено.
    Необходимо скачать 8 448 B архивов.
    После данной операции объём занятого дискового пространства возрастёт на 0 B.
    Хотите продолжить? [Д/н] y
    Пол:1 http://deb.debian.org/debian bullseye/main amd64 libwayland-egl1 amd64 1.18.0-2~exp1.1 [8 448 B]
    Получено 8 448 B за 0с (104 kB/s)               
    dpkg: предупреждение: снижение версии libwayland-egl1:amd64 с 1.19.0-2 до 1.18.0-2~exp1.1
    (Чтение базы данных … на данный момент установлено 282298 файлов и каталогов.)
    Подготовка к распаковке …/libwayland-egl1_1.18.0-2~exp1.1_amd64.deb …
    Распаковывается libwayland-egl1:amd64 (1.18.0-2~exp1.1) на замену (1.19.0-2) …
    Настраивается пакет libwayland-egl1:amd64 (1.18.0-2~exp1.1) …
    Обрабатываются триггеры для libc-bin (2.31-13) … 
    

    После чего, мне осталось обратно возвратится в графический режим одновременным нажатием клавиш CTRL+ALT+F1, войти в сессию и программе эмуляции терминала запустить обновление пакета libgtk-3-dev, как показано на рисунке 2-2-6

    Рисунок 2-2-6

    2.3 Исправление зависимостей пакета libdw-dev

    libdw-dev — предоставляет библиотеку , которая обеспечивает доступ к отладочной информации DWARF исполняемого файла в формате ELF

    Поэтому откат версии разрешающую проблему несоответствия версии установленной к ожидаемой, подобным же образом, как показано в дампе 2-3-1

    Дамп 2-3-1

    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ sudo apt install libdw1=0.183-1
    

    которая закончилась с требованием разрешить версии пакета, как показано на рисунке 2.3.2

    Рисунок 2-3-2

    libelf1 – предоставляет разделяемую библиотеку, позволяющую осуществлять чтение и запись файлов ELF на высоком уровне и которую используют программы из пакета elfutils, поэтому производим приведение пакета libelf1 таким же образом к нужной версии, как показано в дампе 2.3.4

    Дамп 2-3-4

    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ sudo apt install libelf1=0.183-1
    

    При этом выяснилось, что пакет qemu-system-* не дают произвести операцию обновления, как показано в дампе 2-3-5

    Дамп 2-3-5

    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ sudo apt remove qemu-system-x86
    ...
    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ sudo apt autoremove
    

    После чего, была произведена установка пакета libelf1 , который потянул обновление практически всех пакетов Debian/Bullsey, которые перечисляются ниже, на рисунке 2.3.6

    Рисунок 2-3-6

    Поэтому пришлось произвести действия, описанные в п.2.2.2 (настоящего документа) и затем уже приступить к критической операции приведения в консольном режиме основной части пакетов системы к актуальной.

    После чего, система была перезагружена и выполнена её переустановка для восстановления работы графического режима:

    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ apt autormove
    ~/Build/Libreoffise7x-env/src/libreoffice-7.2.0.4$ apt install gnome
    

    После чего, инцидент с неправильными версиями был исчерпан, как показано на рисунке 2-3-7

    Рисунок 2-3-7

    Библиография

    3.1 Проект NilsBrause/waylandpp

    3.2 Архитектура и использование Wayland

    3.3 Нow to switch to non graphical view in ubuntu

    Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

    Об авторе можно прочитать здесь.

    Copyright © 2015-2019 Андрей Ржавсков