Система Ubuntu не работает после случайного удаления многих пакетов

Я случайно удалил все пакеты, начиная с имени jpeg с:

sudo apt-get remove jpeg*

Это многое испортило, убрал Unity, Firefox, Flash player и т. Д.

Мне как-то удалось восстановить рабочий стол и единство, но потом многие вещи все еще глючили. Например .rpm файлы и .tag.gz просто не откроется вообще.

То, что я хочу, это способ исправить все, что не так. Что-то, что эквивалентно "восстановительной установке" с диском Windows.

Любые советы, кто-нибудь?

6 ответов

Решение

Вы можете установить ubuntu-desktop задача:

sudo apt-get install ubuntu-desktop^

Это установит все пакеты стандартного рабочего стола Ubuntu, который вы удалили. Он не восстановит установленные вами пакеты, которые не являются частью стандартного рабочего стола (т. Е. Переустановит Unity и Firefox, но не Flash Player).

Чтобы установить эти пакеты, вы можете посмотреть в /var/log/apt/history.log и посмотреть, что именно вы удалили.

Примечание: установка ubuntu-desktop^ задача не совпадает с установкой ubuntu-desktop пакет Первый даст APT несколько советов по разрешению зависимостей, связанных с виртуальными пакетами, второй даст APT свободу выбора пакетов (и в итоге установит бесполезные вещи, такие как ubiquity).

Почему возникла проблема? apt-get remove jpeg* не удалит все пакеты, начиная с jpeg, Вместо этого он удалит все пакеты, содержащие jpe во имя Это потому, что apt-get работает с регулярным выражением, поэтому jpeg* означает: все, что содержит jpe, за которым следует ноль или более g.

Лучший способ решить эту проблему - переустановить Ubuntu. (Сначала вы должны выполнить резервное копирование документов, даже если вы планируете переустановить без переформатирования.)

Если вы хотите попытаться исправить систему на месте, то посмотрите файлы журналов менеджера пакетов, чтобы увидеть, какие пакеты были удалены, и переустановите их:

  • /var/log/dpkg.log (полная информация, но трудно читаемая)
  • /var/log/apt/history.log (сокращенно сообщит вам каждый пакет, удаленный или иным образом измененный - вероятно, ваш лучший выбор)
  • /var/log/apt/term.log (если вы удалили пакеты с apt-get в терминале это должно показать то, что вы видели тогда, включая списки того, какие пакеты должны были быть удалены - так что это может быть лучшим способом)

Переустановка только пакетов, имена которых начинаются с jpeg не будет работать, потому что многие (почти наверняка большинство) пакетов, которые были удалены, были удалены, потому что они полагались на эти пакеты.

В будущем я рекомендую тщательно проверить последствия удаления пакета. Если вы работаете из командной строки, вы всегда будете уведомлены. (Если вы не используете -y вариант, в этом случае обычно нет. Я рекомендую не использовать эту опцию, если вы не знаете, что делаете, особенно для удаления.)

Один из способов проверить последствия операции управления пакетами, выполняемой с apt-get, не рискуя им случиться, это бежать apt-get -s вместо sudo apt-get, Это просто имитирует указанное действие и сообщает, какие пакеты будут затронуты в результате и как.

Я бегу sudo apt-get purge wine* в Ubuntu 15.10, так что нет графического интерфейса при загрузке только опция входа в терминал.

Как предположил Элия Каган, я использовал информацию из /var/log/apt/history.logЯ запустил nano на history.log и сделал простой скрипт, который содержал sudo apt-get install на всех очищенных пакетах, которые я нашел в строке:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

Но сначала я должен был вручную удалить текст между всеми: и, в том числе:,

на этом этапе новый скрипт будет полезен, потому что пакетов было сотни. после этого я запустил скрипт и удалил несколько Unable to locate packages (который я установил вручную). запустите скрипт снова и все. Все работает нормально... к счастью

Вот небольшой скрипт на python, где вы можете написать (непригодную) строку пакета из вашей массовой деинсталляции, которая находится на /var/log/apt/history.log, Он выведет строку, которую вы можете скопировать вставить в команду apt-get install, чтобы легко установить все удаленные пакеты.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

Я случайно удалил libssl1.0.0 и моя машина была повреждена. Для восстановления я сделал:

  1. Резервное копирование журналов того, что было удалено cp /var/log/apt/term.log ~/libssl.term.log
  2. Удалите строки, не связанные с действием libssl vi ~/libssl.term.log
  3. Если сеть отсутствует (не могу ping google.com), затем перезагрузитесь в режиме восстановления и включите сеть
  4. Переустановите удаленные пакеты cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

Установите Ubuntu-рабочий стол Установить Ubuntu-рабочий стол пакет

sudo apt-get update && sudo apt-get install ubuntu-desktop

Он установит необходимые пакеты для вашей системы.

Другие вопросы по тегам