Дата и время публикации:
Дата и время модификации:
Исправление зависимостей сломанных пакетов 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 Рекомендации по выполнению операции
Поэтому до начала установки вышеперечисленных пакетов к актуальным версиям нужно выполнить следующие рекомендуемые действия:
- Сохранить на резервный носитель все пользовательские данные и при необходимости системные настройки, если таковые имеются;
- Завершить сеанс пользователя;
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