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

16

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

sudo apt-get remove jpeg*

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

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

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

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

    
задан Programming Noob 30.01.2013 в 13:24
источник

5 ответов

30

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

sudo apt-get install ubuntu-desktop^

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

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

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

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

ответ дан Andrea Corbellini 30.01.2013 в 13:41
источник
5

Лучший способ решить эту проблему - переустановить 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 . Это просто имитирует указанное действие и сообщает о том, какие пакеты будут затронуты как результат и как.

    
ответ дан Eliah Kagan 30.01.2013 в 13:40
1

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

    
ответ дан kominato 23.01.2016 в 11:35
0

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

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

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

    
ответ дан Tachyons 30.01.2013 в 13:45
0

Вот небольшой скрипт 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)
    
ответ дан joaoroque 29.09.2015 в 16:18