所以我安装了一个包
apt-get install mypackage
apt-get 安装带有依赖项的软件包,并报告在我的磁盘上安装了 10 兆字节。
但我改变主意,所以我走了
apt-get remove mypackage
apt-get 宣布将释放 166 KB。
我不想用剩菜乱扔我的磁盘,所以我尝试
apt-get autoremove mypackage
现在 apt-get 想要从我的磁盘中删除 166 兆字节。
你知道,我如何撤消最后的安装操作,或者只是卸载单个包及其所有依赖项?
或者,是否有另一个我可以使用的包管理工具(即使在不同的发行版上),它会将安装操作大致视为可以完成和撤消的原子操作?
APT 不会将包更改作为事务进行管理,因此没有内置操作可以撤消包安装(或任何其他包操作)。但是,它确实记录了它执行的所有操作,按最终用户请求分组:如果您查看
/var/log/apt/history.log
,您会找到mypackage
安装,以及自动安装的所有其他软件包的列表。您可以使用它手动撤消安装。您也可以使用它
aptitude
来代替您的常规包管理:autoremove
默认情况下它有效。不过,这现在对您没有帮助,因为它需要删除与apt autoremove
.正如Weijun Zhou所指出的,将包更改作为可以撤消的单元进行管理(在某些情况下)
yum
。将列出存储在历史记录中的事务,或者可用于回滚历史记录或撤消特定事务(如果可能)。我不确定或者是否可以在基于 Debian 的系统上正确使用 APT 代替;如果您想将这些工具用于所有包管理,您可能需要切换到 Fedora、RHEL 或 CentOS。dnf
dnf history
dnf history rollback
dnf history undo
yum
dnf
顺便一提:
我发现“撤消”安装操作的最可靠方法是查看 apt 日志并卸载此操作安装的所有软件包。
因此,我为我的问题创建了一个解决方案。它有助于解析 apt 日志和恢复操作。
这就是我将如何使用它:
列出最新
apt
操作:显示操作#100(最后一个)安装的所有包的详细信息
卸载这些软件包及其配置。
警告:为安全起见,仅对最后一个安装命令执行此操作,并一次回滚一个命令。
受到斯蒂芬回答的启发,我使用了
cockpit
打印要删除以供使用的软件包的可复制粘贴列表sudo apt remove <paste>
有关 grep 命令的说明,请参阅:grep -Po '...\K...' 做什么?怎样才能达到这种效果?