Вопрос или проблема
На момент написания этого текста пакеты lxqt в debian unstable в настоящее время повреждены, и apt dist-upgrade
удалил их, потому что они несовместимы с обновленным qt5. Это означало, что я потерял свою единственную среду рабочего стола, и машина загружалась в sddm без выбора типа сессии.
Краткосрочное решение (после восстановления системы с помощью дебиевских снимков) — использовать apt-mark hold lxqt
, чтобы заблокировать dist-upgrade от любых изменений в пакете lxqt.
Мне нужно постоянное решение — в конечном итоге хранители пакетов lxqt для debian обновят свои пакеты, и появится новый lxqt, совместимый с доступным libqt5core5t64, но поскольку я использовал apt-mark hold
, dist-upgrade не обновит его.
Как я могу сделать так, чтобы apt считал lxqt
“критически важным для системы” (как это делает с такими пакетами, как libc), чтобы он продолжал разрешать обновления для него, но не позволял его удаление с помощью dist-upgrade?
“Критически важные для системы” пакеты — это те, которые помечены как существенные, а также все пакеты, от которых они зависят (последние известны как транзитивно существенные). Чтобы заставить apt
считать lxqt
критически важным для системы, вы можете создать зависимый пакет и сделать его существенным.
Для этого установите пакет equivs
и выполните
equivs-control essential-lxqt.control
Затем отредактируйте essential-lxqt.control
:
- измените строку
Package:
наPackage: essential-lxqt
- после строки
Package:
добавьтеPriority: required
иEssential:yes
- раскомментируйте строку
Depends:
и измените ее наDepends: lxqt
Чтобы собрать пакет, выполните
equivs-build essential-lxqt.control
и установите полученный пакет.
Для будущего может быть полезно запускать apt upgrade
вместо apt dist-upgrade
; это обновит и установит новые пакеты по мере необходимости, без удаления каких-либо пакетов. apt dist-upgrade
необходим только в том случае, если apt upgrade
указывает, что он не может обновить один или несколько пакетов; в таких обстоятельствах, запустите apt upgrade
все равно (чтобы обновить то, что он может обновить), затем apt dist-upgrade
, но проверьте, что последний собирается сделать, прежде чем позволить ему обрабатывать (поэтому не запускайте apt -y dist-upgrade
).
Ответ или решение
Как предотвратить удаление пакета при дистрибутивном обновлении без использования apt-mark hold
Ваша проблема с удалением пакетов LXQt в Debian Unstable, из-за несовместимости с обновленной версией Qt5, затрагивает важные аспекты управления пакетами в Debian. Удаление LXQt от системы могло привести к утрате рабочего стола и, как следствие, к затруднениям в управлении системой. Решение с использованием apt-mark hold
— временная мера и не является идеальным вариантом по причине необходимости в последующем обновлении LXQt. В этом ответе я расскажу о том, как можно обойти данную проблему на постоянной основе.
Понимание системной критичности пакетов
В Debian-пакеты, которые помечены как essential (существенные) или те, которые являются зависимостями этих пакетов (то есть транзитивно существенные), являются системно критичными. Так, вы можете сделать LXQt критичным для системы, создав специальный зависимый пакет, который будет иметь такую статус.
Шаги для создания зависимого пакета
-
Установка инструмента
equivs
:
Убедитесь, что у вас установлен пакетequivs
. Вы можете сделать это с помощью следующей команды:sudo apt install equivs
-
Создание файла управления для зависимого пакета:
Создайте файл управления пакетом. Сначала выполните команду:equivs-control essential-lxqt.control
Это создаст файл
essential-lxqt.control
, который вы будете редактировать. -
Редактирование файла управления:
Откройте созданный файл в текстовом редакторе и внесите следующие изменения:- Измените строку
Package:
на:Package: essential-lxqt
- Добавьте строки:
Priority: required Essential: yes
- Раскомментируйте строку
Depends:
и измените ее на:Depends: lxqt
- Измените строку
-
Сборка и установка пакета:
Теперь соберите пакет с помощью команды:equivs-build essential-lxqt.control
Установите полученный пакет с помощью следующей команды:
sudo dpkg -i essential-lxqt_*.deb
Альтернативные рекомендации
В дополнение к вышеописанным шагам, вам стоит рассмотреть возможность использования команды apt upgrade
вместо apt dist-upgrade
. Команда apt upgrade
осуществляет обновление и установку новых пакетов без удаления существующих. Используйте apt dist-upgrade
только в случаях, когда это действительно необходимо, и внимательно следите за тем, что будет сделано.
Заключение
Использование метода с созданием зависимого пакета позволяет вам управлять критичностью пакета LXQt в вашей системе без необходимости блокировать его обновления. Это не только обеспечит поддержку обновлений, но и защитит вашу рабочую среду от случайного удаления во время дистрибутивного обновления. Надеюсь, эти шаги помогут вам сохранить продуктивность и избежать повторных проблем.