当前位置: 首页>>技术问答>>正文


如何从Ubuntu 64bit中删除所有i386软件包?

, , , ,

问题描述

随着时间的推移,我安装了许多i386软件包,我不再需要它。如何清理系统并仅使用amd64软件包?

最佳解决方法

如果他们不在你的路上,我会把他们留在原地。如果您坚持删除,请使用dpkg -l | grep i386创建i386包列表。您可以在仔细检查sudo apt-get purge <package-name>之后删除这些内容。

次佳解决方法

上层自动化解决方案很危险,并不总是有效(1),所以这是另一种方式

sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

要么

sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`

(尝试使用始终只使用其中一个工具。由于aptitude在遇到依赖性问题时更好,我更喜欢。)

也好主意

dpkg --remove-architecture i386

有可能

dpkg --print-foreign-architectures

(1)前面的命令还列出了名称中只包含i386的软件包(尽管它们用于64位架构),正则表达式不起作用,dpkg显示已删除的软件包,但仍保留配置文件(dpkg -l显示”rc”而不是”ii”作为状态)。

第三种解决方法

我把我所有的32位软件包都搞砸了:

sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`

第四种方法

如果有人想知道,有一个更加理智和优雅的方式来做到这一点。最后一个答案希望做同样的事情,但搜索失败,因为架构实际上不是包名称的一部分,除非在特殊情况下。

以root(或sudo)运行:

aptitude remove ~i~ri386

如果你没有使用aptitude而不是apt-get,那就做吧。这真的很棒。你可以找到aptitude的搜索条件here列表。

第五种方法

这是另一种风险更低的方式:

apt-get remove "^.*:i386$"

这将仅专门匹配以":i386"结尾的包,这是所有i386架构Debian软件包的标准命名约定。

第六种方法

debian’s multiarch guide提到了这个命令:apt-get purge ".*:<arch>",对于i386看起来像这样:

apt-get purge ".*:i386"

然后,您可以从dpkg中删除该体系结构:

dpkg --remove-architecture i386

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/6459.html,未经允许,请勿转载。