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

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

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

上层自动化解决方案很危险,并不总是有效(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的搜索字词列表。

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

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

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

debian的multiarch指南提到了这个命令: apt-get purge ".*:" ,这对于i386是这样的:

 apt-get purge ".*:i386" 

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

 dpkg --remove-architecture i386