
В нем перечислено 1546 пакетов для удаления. Включая xorg
, xserver
и другие основные пакеты. Я ввел "да" в прошлом, и, как и ожидалось, это привело к поломке ОС, мне пришлось переустанавливать ее с нуля. На этот раз я ответил "нет" и попробовал:
sudo apt-get -y update --fix-missing
но он все равно хочет удалить все. Как мне это исправить, пожалуйста!
решение1
Чаще всего это происходит, когда люди прикручивают Desktop к Minimal установке. Но это может произойти, когда вы прикручиваете ЛЮБОЙ основной стек к системе Ubuntu.
В примере с рабочим столом это означает, что весь стек рабочего стола висит на одном метапакете (например, пакете ubuntu-desktop
). Когда вы удаляете какой-либо элемент или приложение рабочего стола --что удаляет метапакет рабочего стола -- это действие делает весь стек рабочего стола пригодным для автоматического удаления.
Профилактика
При использовании настоящего установщика рабочего стола есть дополнительный уровень защиты от маркировки apt, который не позволяет пользователям автоматически удалить весь свой рабочий стол.
Вы также можете явно установить (или пометить apt-mark) используемые вами приложения. Таким образом, большинство зависимостей вашего рабочего стола не будут автоматически удалены.
sudo apt install shotwell # Example of explicitly installing sudo apt-mark manual shotwell # Example of apt-marking
установка с использованием пакетов задач, например, Ubuntu MATE можно установить с помощью
sudo apt-get install ubuntu-mate-desktop^
Обратите внимание
^
, это означает задачу; установка таким способом предотвратит разрушение системы, если кто-то захочет выполнить потенциально опасные команды, такие какsudo apt autopurge ubuntu-mate-desktop
meta-package.
Восстановление
Вы можете просто переустановить пакет задач рабочего стола.
sudo apt install --reinstall ubuntu-desktop^ # Example of re-installing a Ubuntu desktop task
Вы также можете скопировать длинный список удалений и вставить этот список в команду установки. Обратите внимание, чтоименованиепакет делает его неподходящим для будущих автоудалений, но вас беспокоит слишком много автоудалений, а не слишком мало. Если вам нужно восстановить этот список, он в вашем
/var/log/apt/history.log
файле.
решение2
Если вы считаете, что autoremove удаляет то, что вы хотите сохранить, для каждого пакета вам следует:
- используйте
dpkg -l | grep $shortpackagename
для проверки, установлена ли более новая версия, в этом случае можно удалить старую версию - используйте
apt rdepends $packagename
, чтобы увидеть, есть ли родительский пакет, который вам также нужен. Если есть, установите этот родительский пакет или обратную зависимость этого родительского пакета - Если нет (очевидного) родительского зависимого пакета, который вы хотите сохранить, но вы все равно хотите его сохранить,
apt install $packagename
чтобы он не был удален функцией autoremove.
Хороший пример вышесказанного (как упоминалось в комментариях): если autoremove хочет удалить, xorg
то установите его ubuntu-desktop
, и вы, вероятно, обнаружите, что у многих autoremove теперь будет установлена родительская зависимость, и список станет короче.
Как только список станет достаточно коротким и в нем останутся либо устаревшие пакеты, либо вещи, которые вам точно не нужны, можно смело использовать функцию автоматического удаления.
Такая ситуация не является нормальной и не возникает автоматически. Она вызвана тем, что в какой-то момент из системы удаляется что-то критическое, что приводит к удалению важного родительского пакета (например, ubuntu-desktop).