Jem*_*ake 5 aptitude ubuntu debian
我正在将一些 Debian 机器从 i386 arch 升级到 amd64。这个过程相当简单:
所有这一切都进行得相当顺利,我已经能够编写有帮助的脚本,但后来遇到了一个问题:当我运行 aptitude 时,它认为我仍然想安装所有内容的旧 i386 版本(除了amd64 版本)。所以,我的能力屏幕看起来像这样:
ii iptables ...
pi iptables:i386 ...
ii iptraf ...
pi iptraf:i386 ...
Run Code Online (Sandbox Code Playgroud)
因此,像 iptables:i386 这样的软件包将显示为“已清除,但标记为安装”。这导致了数百次碰撞。到目前为止,我只是一一浏览并取消选择它们。我尝试使用“dpkg --set-selections”时运气不佳
所以,官方问题是:有人知道一个技巧来“取消安装标记”(在 aptitude 中)每个已经安装了 amd64 版本的软件包的 i386 版本吗?
aptitude 的包操作存储在 中/var/lib/aptitude/pkgstates
,这与任何dpkg
状态都是分开的。在尝试以下操作之前,您可能需要备份上述文件,以防结果不理想并且您很难返回到原来的位置。以下应该执行您正在寻找的操作(请记住首先退出任何正在运行的 aptitude 实例并以 root 身份运行):
aptitude -F %p search '~ri386 ~ainstall' | cut -d : -f 1 >i386
aptitude -F %p search '~ramd64 ~i | ~ramd64 ~ainstall' | cut -d : -f 1 | sort >amd64
aptitude --schedule-only keep $(comm -13 amd64 i386 | sed 's/$/:i386/')
rm i386 amd64
Run Code Online (Sandbox Code Playgroud)
当您重新启动 GUI 时,希望您能找到所需的内容:)
归档时间: |
|
查看次数: |
1137 次 |
最近记录: |