yos*_*ile 37 64-bit package-management uninstall 32-bit
随着时间的推移,我安装了许多不再需要的 i386 软件包。如何清理系统并只使用 amd64 软件包?
Pyt*_*Nic 32
其他自动化解决方案很危险,并不总是有效 (1),所以这里有另一种方式
sudo aptitude purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
Run Code Online (Sandbox Code Playgroud)
或者
sudo apt-get purge `dpkg --get-selections | grep ":i386" | awk '{print $1}'`
Run Code Online (Sandbox Code Playgroud)
(尝试始终且仅使用其中一种工具。由于 aptitude 在有依赖性问题时更好,因此我更喜欢这样。)
好主意也
dpkg --remove-architecture i386
Run Code Online (Sandbox Code Playgroud)
有可能
dpkg --print-foreign-architectures
Run Code Online (Sandbox Code Playgroud)
(1) 其他命令也列出了名称中只有 i386 的包(虽然它们是针对 64 位架构的),正则表达式不起作用,dpkg 显示已经删除但仍有配置文件的包(dpkg -l 显示“rc”而不是“ii”作为状态)。
Mat*_*ode 23
我把我所有的 32 位软件包都像这样:
sudo apt-get remove `dpkg --get-selections | grep i386 | awk '{print $1}'`
Run Code Online (Sandbox Code Playgroud)
Hen*_*enk 18
如果他们不妨碍你,我会把他们留在原地。
如果您坚持删除,请使用dpkg -l | grep i386
来创建 i386-packages 列表。您可以在仔细检查诸如sudo apt-get purge <package-name>
.
Fra*_*sco 13
在Debian的multiarch指南中提到此命令:apt-get purge ".*:<arch>"
,这看起来是这样的i386
:
sudo apt-get purge ".*:i386"
Run Code Online (Sandbox Code Playgroud)
然后您可以从 dpkg 中删除架构:
sudo dpkg --remove-architecture i386
Run Code Online (Sandbox Code Playgroud)
小智 9
如果有人想知道,有一种更加理智和优雅的方式来做到这一点。最后一个先前的答案希望做同样的事情,但该搜索失败了,因为体系结构实际上不是包名称的一部分,除非在特殊情况下。
以 root 用户(或使用 sudo)运行:
aptitude remove ~i~ri386
Run Code Online (Sandbox Code Playgroud)
如果您还没有使用 aptitude 而不是 apt-get,请使用。真是太棒了。您可以在此处找到 aptitude 的搜索词列表。
还有另一种降低风险的方法:
sudo apt-get remove "^.*:i386$"
Run Code Online (Sandbox Code Playgroud)
这将只匹配以 结尾的包":i386"
,这是所有i386
架构 Debian 包的标准命名约定。