是否可以撤消 apt-get install 命令?

Kar*_*k T 80 uninstall apt

我在我的 Xubuntu 安装(一个 Live USB)上安装了 Carpadio,然后它从存储库的 Ubuntu 端提取了 50 多个包。现在我想撤销这个。然而,对于我所有的狩猎,我找不到比How can I reverse sudo apt get install command更有用的东西,它只是建议apt-get purge. 这没有用,因为它所做的只是删除 2 个包(carpadio 和 carpadio-gnomepanel)。

/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,自动) , geoclue:amd64 (0.12.0-1ubuntu12, 自动), unity:amd64 (5.18.0-0ubuntu1, 自动), 指示器打印机:amd64 (0.1.6-0ubuntu1, 自动), libevolution:amd64 (3.2.3- 0ubuntu6, 自动), libqt4-declarative:amd64 (4.8.1-0ubuntu4.3, 自动), libmtp9:amd64 (1.1.3-1ubuntu0.1, 自动), tracker-miner-fs:amd64 (0.14.0-2ubuntu11) , 自动), 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-0ubuntuiz-, 自动)插件-默认: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.

ger*_*ijk 94

基本上,您必须同时apt-get remove(或 apt-get purge)包在此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.
    
    Run Code Online (Sandbox Code Playgroud)

    该列表基本上只是标记为“自动”的所有包的列表,对它们没有反向依赖。换句话说,就包管理而言,没有理由安装它们。

    注意:无需安装!这只是为了证明 APT 很聪明地告诉你你不需要的包!

  • sudo apt-get autoremove --purge 删除(清除)这些

更多信息

  • 在这个 OP 中,Unity 和它的所有朋友都加入了。我怀疑即使在自动删除之后清除 cardapio 也会删除 Unity 等。 (2认同)

小智 20

当您要删除当时安装的软件包及其依赖项时,您应该使用:

sudo apt-get purge package
sudo apt-get --purge autoremove
Run Code Online (Sandbox Code Playgroud)

但是要撤消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
Run Code Online (Sandbox Code Playgroud)

用法:

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
Run Code Online (Sandbox Code Playgroud)

要撤消,上述aptitude操作在终端中运行以下命令:

apt-undo undo
Run Code Online (Sandbox Code Playgroud)


Rob*_*sak 7

使用 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
Run Code Online (Sandbox Code Playgroud)

因此,鉴于日志文件中的相应行,您可以使用此清除意外安装的所有软件包:

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

(我使用了perl而不是sed因为sed使用了一种不支持非贪婪匹配的正则表达式,这是构建我需要的最简单的方法)


归档时间:

查看次数:

127001 次

最近记录:

6 年,3 月 前