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

Я установил Carpadio на мою установку Xubuntu (Live USB), которая затем вытащила более 50 пакетов, как я полагаю, со стороны Ubuntu хранилища. Теперь я хотел бы отменить это. Однако, несмотря на всю мою охоту, я не могу найти ничего более полезного, чем . Как мне отменить команду sudo apt get install , которая просто предлагает apt-get purge. Это бесполезно, поскольку все, что он делает - это удаляет 2 упаковки (карпадио и карпадио-гномепанель).

/var/log/apt/history.log содержит список всех пакетов, которые были установлены вместе с этой командой. Так что мне было интересно, есть ли какой-нибудь простой способ убрать их всех? ? Иначе я могу просто переустановить, это была новая установка, но мне любопытно.

Небольшой образец журнала истории (1 / 5-1 / 10 от всего списка)

Командная строка: apt-get install cardapio-gnomepanel
Установка: libdbusmenu -qt2: amd64 (0.9.2-0ubuntu1, автоматический), python-packagekit: amd64 (0.7.2-4ubuntu3, автоматический), cups-pk-helper: amd64 (0.2.1.2-1ubuntu0.1, автоматический), геоклей: amd64 (0.12.0-1ubuntu12, автоматический), unity: amd64 (5.18.0-0ubuntu1, автоматический), индикатор-принтеры: amd64 (0.1.6-0ubuntu1, автоматический), libevolution: amd64 (3.2.3-0ubuntu6, автоматический) ), libqt4-декларативный: amd64 (4.8.1-0ubuntu4.3, автоматический), libmtp9: amd64 (1.1.3-1ubuntu0.1, автоматический), tracker-miner-fs: amd64 (0.14.0-2ubuntu1, автоматический) , gir1.2-rb-3.0: amd64 (2.96-0ubuntu4.2, автоматический), python-aptdaemon.pkcompat: amd64 (0.43 + bzr805-0ubuntu7, автоматический), gnome-media: amd64 (3.4.0-0ubuntu3.1 , автоматический), metacity: amd64 (2.34.1-1ubuntu11, автоматический), nautilus: amd64 (3.4.2-0ubuntu6, автоматический), libcompizconfig0: amd64 (0.9.7.0 ~ bzr428-0ubuntu6, автоматический), compiz-plugins-default : amd64 (0.9.7.12-0ubuntu1, автоматический), libunistring0: amd64 (0.9.3-5, автоматический), libebackend-1.2-1: amd64 (3.2.3-0ubuntu7, автоматический), ubuntu-docs: amd64 (12.04. 6, автоматический), python-mako: amd64 (0.5.0-1, автоматический),

Всем, кто предложил autoremove: я не уверен почему, но я получил только 1 другой пакет, связанный с python (python-keybinder или что-то еще), как «ненужный», и это все, что удалось удалить с помощью autoremove.

Между установкой и деинсталляцией устанавливались только основные изменения xubuntu-restricted-extras.

66
задан 20 March 2017 в 13:18

10 ответов

В основном Вы будете иметь обоим apt-get remove (или склонный - получают чистку), пакет, и работать apt-get autoremove после этого, чтобы иметь его возвращаются установка package-one.

Давайте посмотрим на целый процесс:

  • sudo apt-get install package-one установки, которые 50 зависимостей с ним отметили "автоматический", равно как и видны из выборки журнала в Вашем вопросе

  • sudo apt-get purge package-one удаляет (производит чистку) всего один, но действительно выполните это!

    Весь после действий установки (при выполнении кого-либо) приведет к информационному сообщению с больше необходимыми пакетами:

    The following packages were automatically installed and are no longer required:
      package-two package-three [...]
    Use 'apt-get autoremove' to remove them.
    

    Этот список является в основном просто списком всех пакетов, отмеченных как "автоматический" без обратной зависимости от них. Другими словами, нет никакой причины для них, чтобы быть установленной, что касается управления пакетом.

    Примечание: Никакая установка не необходима! Это должно только продемонстрировать, что APT умен сказать Вам о Ваших ненужных пакетах!

  • sudo apt-get autoremove --purge удаляет (производит чистку) их

Больше информации

79
ответ дан 20 March 2017 в 13:18

Следуйте sudo apt-get purge packagename с

sudo apt-get autoremove. 

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

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

0
ответ дан 20 March 2017 в 13:18

Используйте силу 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: //')

(я использовал perl вместо sed, потому что sed использует тип регулярного выражения, которое не поддерживает несжадные совпадения, что было самым простым способом построения того, что мне нужно)

0
ответ дан 20 March 2017 в 13:18

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

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 действия выполняются следующим образом Команды в терминале:

apt-undo undo
0
ответ дан 20 March 2017 в 13:18

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

0
ответ дан 20 March 2017 в 13:18

Если вы только что добавили 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 и переустановите все пакеты из двух списков.

0
ответ дан 20 March 2017 в 13:18
1117 Я знаю, что это довольно старый вопрос, но я пришел сюда в поисках помощи, и, возможно, я могу кому-то помочь. У меня была ситуация, похожая на @ Karthik-T, после установки 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, я выпустил следующее:

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

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

PS: возможно, autoremove на втором шаге не является необходимым, как я снова издал на четвертом шаге.

0
ответ дан 20 March 2017 в 13:18

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

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

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

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

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

https://unix.stackexchange.com/a/236711

0
ответ дан 20 March 2017 в 13:18

Для отмены последней способной установки, можно также использовать что-то вроде этого:

sudo apt purge $(grep "Install:" /var/log/apt/history.log | tail -n 1 | tr " " "\n" | grep ":amd64\|:i386" | tr "\n" " ")

Это поймает последнюю способную установку из истории и производит чистку, все здесь установили пакеты.

можно создать функцию, вызванную aptpurgelastinstall, чтобы иметь его всегда под рукой (добавит код к ~/.bashrc):

echo 'aptpurgelastinstall () { sudo apt purge $(grep "Install:" /var/log/apt/history.log | tail -n 1 | tr " " "\n" | grep ":amd64\|:i386" | tr "\n" " ") ; }' >> .bashrc

Теперь просто необходимо ввести aptpurgelastinstall в оболочке для восстановления последней установки.

1
ответ дан 15 October 2019 в 18:07

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

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