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

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

 sudo apt-get remove jpeg* 

Это напугало много вещей, удалило Unity, Firefox, Flash Player и т. Д.

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

Я хочу, чтобы исправить все, что не так. Что-то, что эквивалентно «ремонтной установке» с диском Windows.

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

Вы можете установить задачу 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 (которые я установил вручную). снова запустите сценарий, и вот оно. Все работает нормально … к счастью

Установка ubuntu-desktop Установка ubuntu-desktop пакет

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

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

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

 import re apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE COMMAS" match = re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str) print " ".join(match)