问题描述
随着时间的推移,我安装了许多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