apt-get vs. aptitude vs. synaptic 兼容性

作为一个以前的Debian用户,我“有点”记得我应该只使用一个软件包管理器...要么apt-get、aptitude或synaptic,但不能三个都用,因为可能会冲突,它们不能很好地混合在一起。
我不知道我从哪里听说的,但它留下了记忆印象。所以我想向你确认一下,这是不建议的还是只是一个谣言,并且完全安全。你能确认一下吗?
在调用dpkg之前,是否仍然最干净的安装软件包方式是使用checkinstall命令?

2我自由地在apt-get和synaptic之间切换,取决于我是否需要浏览可用的软件包,而且从来没有出过问题。我从来不明白aptitude的意义所在。 - Chris Conway
我在11.04的开发环境中使用sudo aptitude safe-upgrade。这种方法的优点是,“Safe-upgrade”会将软件包组保留,直到它们全部更新完毕。这意味着它能最大程度地减少系统无法正常工作的次数。 - robin0800
@Chris... 对我来说也一样,我从来没有习惯过Aptitude。接近Synaptic的是我在KDE中使用过KPackage。那个很不错。 - Stephane Rolland
可能是重复的问题,与http://askubuntu.com/questions/7644/possible-problems-in-mixed-use-of-apt-get-aptitude-and-synaptic相似。 - James McMahon
3个回答

所有这些都使用dpkg作为后端。没有一个使用任何专门的数据库,当你使用其他东西时会出问题。
这绝对是城市传说。
如果你想从源代码安装某个东西,最干净的方法是使用checkinstall,或者将其安装到/usr/local目录下。使用软件包管理器更好,因为这样删除该软件包会更容易。

1Stow(http://www.gnu.org/software/stow/)非常适合用于/usr/local的安装。 - James McMahon

唯一真正的区别就是能力。
如果你在交互式安装某个软件包,然后在其他地方卸载该软件包,再回到Aptitude,它会认为你想要重新安装它。你只需要在加载时清除选择(通过菜单很容易)。
它还会运行自动删除旧依赖项的操作。如果你不小心删除了某个元软件包的依赖项及其所有依赖项,这可能是危险的。如果你知道自己在做什么,这不是问题。

这是给服务器用的。我会尽量少安装软件包,尽量少更新,并且只进行安全更新。;-) 所以我想我还是会使用简单的apt-get...虽然我从未学过如何使用aptitude,但这可能是个很好的机会... - Stephane Rolland

Synaptic和apt-get是兼容的。Aptitude与Synaptic不兼容。这是事实,而不是另一个帖子声称的“都市传说”。
今天我想找出我的系统使用的Java运行时环境。谷歌搜索得到以下建议:在命令行中输入:
aptitude search "?provides(java-runtime)"
这生成了以下内容(以及其他行): pi gcj-4.4-jre pi gcj-jre "pi"的意思是它目前没有安装,但已标记为安装。 因此,如果我进入aptitude并要求安装请求的软件包,它将安装gcj-4.4-jre。 然而,在Synaptic中,它既没有安装也没有标记为安装。如果我要求Synaptic安装请求的软件包,它什么也不做。
我对这些东西不是专家,也不知道aptitude将软件包状态存储在哪里,但很明显它与Synaptic不兼容。

谢谢你提出建设性的论点。你指出了一个明显的区别。 - Stephane Rolland