Можно ли отменить команду установки apt-get?

Значения пароля контролируются в файле

/etc/pam.d/common-password

Дополнительные сведения о том, как изменить файл, см. в pam_unix manpage

1
задан 20 March 2017 в 14:18

13 ответов

Если вы хотите удалить пакет и его зависимости, установленные в то время, вы должны использовать:

sudo apt-get purge package
sudo apt-get --purge autoremove

, но для отмены действий apt вы можете использовать скрипт apt-undo. Это простой скрипт, который может отменить действия apt, выполненные в Ubuntu. Следует отметить, что этот скрипт может работать, только если вы используете его вместо apt-get для установки / обновления / удаления / очистки / понижения пакетов.

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

sudo add-apt-repository ppa:lkjoel/apt-undo
sudo apt-get update
sudo apt-get install apt-undo

использование:

apt-undo install yourpackages
apt-undo remove yourpackages
apt-undo purge yourpackages
apt-undo upgrade
apt-undo dist-upgrade
apt-undo install yourpackages=old.version
apt-undo install yourpackages=new.version

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

18
ответ дан 25 May 2018 в 02:06
  • 1
    Спасибо, я наткнулся на это, и это звучит точно так, как приказал доктор, пока я не увидел предостережение, которое мне нужно было использовать для установки, чтобы можно было отменить .. – Karthik T 25 January 2013 в 23:28
  • 2
    Хорошо поймал. Однако очень запутанный синтаксис. И я действительно не люблю использовать альтернативы проверенному базовому APT-приложению. Все еще +1! – gertvdijk 25 January 2013 в 23:38

Используйте мощность Unix. Возьмите строку файла журнала, которая у вас есть, и постройте команду, которая отменит действие apt. Например:

$ echo 'Install: libdbusmenu-qt2:amd64 (0.9.2-0ubuntu1, automatic), python-packagekit:amd64 (0.7.2-4ubuntu3, automatic), cups-pk-helper:amd64 (0.2.1.2-1ubuntu0.1, automatic),'|perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //'
libdbusmenu-qt2:amd64 python-packagekit:amd64 cups-pk-helper:amd64

Таким образом, вы можете использовать эту очистку для всех пакетов, которые вы случайно установили, с учетом соответствующей строки из вашего файла журнала:

$ dpkg -P $(echo '(full log line here)' | perl -pe 's/ \(.*?\)//g; s/,//g; s/^Install: //')

(Я использовал [ f3] вместо sed, потому что sed использует тип регулярного выражения, который не поддерживает не-жадные совпадения, что было самым простым способом построения того, что мне было нужно)

7
ответ дан 25 May 2018 в 02:06
  • 1
    Хороший скрипт, но на самом деле это должна быть просто последовательность команд, которые люди могут запомнить, чтобы выполнить это. – gertvdijk 25 January 2013 в 23:53
  • 2
    Спасибо, запугивая сценарий, но я боялся, что это спустится к этому – Karthik T 26 January 2013 в 00:07
  • 3
    Я использовал очень похожий код, чтобы решить мою очень похожую проблему . Я сделал это несколькими шагами, чтобы быть более уверенным в том, что происходит. Сначала я скопировал соответствующий блок текста из журнала apt в новый файл, а затем применил его к нему: perl -pe 's/\(.*?\)(, )?//g' /path/to/apt-history.log Тогда все, что я сделал, было добавлено к выводу с sudo apt-get remove, и мне было хорошо идти! – Insperatus 2 February 2013 в 00:39

После удаления одного пакета, и его можно полностью удалить, добавив -purge, для, apt-get remove --purge <package>, он должен предоставить вам сообщение о том, что пакеты библиотеки, в которые он был втянут, были установлены автоматически и больше не нужны, на в котором вы можете запустить apt-get autoremove, чтобы удалить их.

1
ответ дан 25 May 2018 в 02:06
  • 1
    Спасибо, но autoremove оказалось недостаточным в этом случае. См. Мое редактирование. – Karthik T 25 January 2013 в 23:27

Следуйте за sudo apt-get purge packagename с помощью

sudo apt-get autoremove. 

. Если это метапакет, это должно позаботиться об этом.

Также см. faq at. Как вручную удалить все файлы Cardapio? .

1
ответ дан 25 May 2018 в 02:06
  • 1
    Спасибо, но autoremove оказалось недостаточным в этом случае. См. Мое редактирование. Спасибо за ссылку на часто задаваемые вопросы, очень полезно! – Karthik T 25 January 2013 в 23:26
  • 2
    Некоторые из этих пакетов могут потребоваться другими вещами и не помечены как способные быть авторизованными. Вы посмотрели инструкции по ссылке? Как это? – chaskes 25 January 2013 в 23:32
  • 3
    Инструкции по ссылке довольно ортогональны основной проблеме, и как бы то ни было, я склоняюсь к переустановке своей системы. Спасибо, в любом случае. – Karthik T 26 January 2013 в 00:02
Вставьте длинный список нежелательных пакетов из журнала apt в файл new_file.txt Execute perl -pe 's/\(.*?\)(, )?//g' /path/to/new_file.txt Скопируйте вывод последней команды в буфер обмена или перенесите ее там в первую очередь. Выполнить sudo apt-get remove [вставить содержимое буфера обмена здесь]

Готово.

В принципе нам нужно отформатировать список пакетов из журнала apt в нечто, что может понять apt-get. Скобки, слова между ними и запятые должны идти так, чтобы в них вмешался perl. Да, есть лучшие (более эффективные) способы - но я сделал это, его легко понять, и он работает.

1
ответ дан 25 May 2018 в 02:06
  • 1
    +1 для личного опыта и объяснений, но, как я уже упоминал ранее, я уже сбросил свой Live USB – Karthik T 2 February 2013 в 16:57

Если вы только что добавили ppa и хотите вернуться, вам необходимо выполнить описанные ниже действия. Понять это может не удастся, если вы установили другие пакеты, которые вы не хотите удалять. Я уверен, что это можно сделать с помощью скрипта. Лично я считаю, что это должно быть частью apt, и должно быть лучшее администрирование, какие пакеты устанавливаются из-за зависимостей и которые устанавливаются по запросу пользователя.

1) удалить ppa из / etc /apt/sources.list Помните время, когда вы добавили ppa. Если вам повезло, вам не нужно быть точным.

2) составить список переустановки с момента установки PPA: cat /var/log/dpkg.log | grep 'upgrade'

3) составить список, что нужно удалить, с момента установки PPA: cat /var/log/dpkg.log | grep 'install'

4) удалите все пакеты с шага 3: sudo apt-get remove {список пакетов с шага 3}

5) переустановите все пакеты с шага 2: sudo apt-get install --reinstall {список пакетов с шага 2}

6) Если все пошло не так, и вы не можете придумать решение, верните PPA и переустановите все пакеты из двух списков. [ ! d6]

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

Технически операции «удалить» или «autoremove» не «отменены», хотя они могут быть сделаны, чтобы сделать работу достаточно хорошо в большинстве случаев.

По умолчанию apt-get оставляет пакеты позади , если вы не укажете -o APT::Suggests-Important=0 -o APT::Recommends-Important=0

. Более надежно взглянуть на apt history.log и удалить все установленные пакеты. Я создал небольшой узловой скрипт, облегчающий процесс:

https://github.com/rolfen/apt-history

Кроме того, здесь есть еще один, более ручной подход для «откат»:

https://github.com/rolfen/apt-history

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

Я знаю, что это довольно старый вопрос, но я пришел сюда, чтобы найти помощь, и, возможно, я могу помочь кому-то. У меня была ситуация, похожая на @ Karthik-T's после установки unity8-desktop-session-mir. Я знаю, что это большой. Он вытащил с ним 233 пакета.

Используя autoremove, я удаляю только 34 из них. Дело в том, что во время установки unity8-desktop-session-mir он удалил два пакета (python3-aptdaemon.pkcompat и evolution-data-server-online-accounts). Это указано в /var/log/apt/history.log после секции Install.

Чтобы полностью отменить установку Unity 8, я опубликовал следующее:

sudo apt-get purge unity8-desktop-session-mir sudo apt-get --purge autoremove sudo apt-get install python3-aptdaemon.pkcompat evolution-data-server-online-accounts ( он удалил 8 пакетов, связанных с Unity 8) sudo apt-get --purge autoremove

Это не удалит абсолютно все, что вы установили раньше, но в некоторых случаях достаточно.

PS: возможно, на втором шаге не требуется, как я уже говорил на шаге 4.

0
ответ дан 25 May 2018 в 02:06

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

Похожие вопросы: