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

8

Я использовал sudo apt-get remove pythonкоманду и случайно удалил кучу необходимых пакетов. Я вошел в систему через командную строку и снова установил ubuntu-desktop, но другие пакеты отсутствуют, и я ищу способ легко переустановить эти удаленные пакеты. Поскольку в софт-центре есть журнал, я хотел спросить, как проще всего откатить изменения или извлечь список удаленных пакетов из центра ПО ...

примечание: я набрал sudo apt-get install .... .... ... ...около двух десятков из этих удаленных программ в этом списке, но когда я нажал enter, он не установил ни одну из них, потому что некоторые имена пакетов не были найдены.

Программы были удалены в тот же день.

логан
источник
1
Посмотрите/var/log/apt/history.log
Лекенстейн

Ответы:

16

Прежде всего, позвольте мне сказать, что удаление pythonможет привести к тому, что многие фундаментальные команды больше не работают. Так что я не знаю, будет ли работать то, что следует.

Во-вторых, я предполагаю, что package names couldn't be foundваша ошибка происходит из-за неверно введенного имени в командной строке или из пакета, установленного локально и недоступного в репозиториях.

Затем, чтобы получить журнал удаленных пакетов относительно последнего dpkgдоступного журнала (я не думаю, что вам нужно принимать во внимание старые журналы):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Затем отредактируйте listфайл, созданный в текущем каталоге, и оставьте только строки относительно пакетов, которые вы хотите переустановить, основываясь на отметке времени строки. Допустим, вы сохранили измененный файл в list-mod.

Чтобы переустановить эти пакеты, используйте следующую команду:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Я вставил --simulateопцию, чтобы увидеть, что будет делать команда. Если все в порядке, повторите команду, удалив эту опцию.

Если команда говорит, что некоторые пакеты не могут быть найдены, просто удалите их list-modи попробуйте снова.

enzotib
источник
спасибо, я смог переустановить нужные мне пакеты! Один вопрос, однако, в журнале центра программного обеспечения удалено более 200 пакетов, но в файле списка было около 150, означает ли это, что dpkg.log не содержит автоматических установок / зависимых пакетов? еще раз спасибо за это решение :)
Logan
1
Этот файл журнала содержит каждый установлено, обновлено, удалены или продувают пакет, и с каждым приложением от dpkgк apt-get, aptitude, Synaptic, Центр программного обеспечения, gdebiи т.д. Вы можете взглянуть на старых dpkg.logфайлов см ls -lrt /var/log/dpkg.log*.
энзотиб
1
@enzotib Я запустил скрипт для очистки старых заголовков linux, и я думаю, что регулярное выражение соответствовало многим пакетам, которые я не хотел удалять (очень важные !!). Ваш ответ спас меня от определенной катастрофы.
Шивисупер
1
@enzotib Вы только что спасли меня от переустановки моей ОС после запуска плохого скрипта. Спасибо!
brndn2k
там написано: 0 обновлено, 0 установлено, 0
удалено
2

Итак, я совершаю аналогичную ошибку: sudo apt-get purge python3.6*вместо sudo apt-get purge python3.6.*.

Я смог исправить это довольно быстро, выполнив следующие действия:

  1. Открыл журнал vim /var/log/history.log.
  2. Искал мою плохую команду, используя команду vim /python3.6\*.
  3. Там была строка Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...с длинным списком очищенных пакетов (в случае удаления он начнется с Remove:), который я скопировал в другой файл без Purge:части для работы с ним.
  4. В этом файле я запустил команду vim:, %s/:[^,]*,//gкоторая удалила часть версии и оставила мне список пакетов unity-control-center-signon lxc ....
  5. Наконец я скопировал строку из предыдущего шага и запустил:, sudo apt-get install unity-control-center-signon lxc ...и вот как это было исправлено.
Никита
источник
для меня это было/var/log/apt/history.log
Тейлор