我一直在考虑改用 aptitude,但我听人说“如果你已经在使用 apt-get,那么你应该等到下次安装后再改用”。为什么人们会这么说?这会导致什么样的问题(如果有的话)?
答案1
apt-get 和 aptitude 是不同的 UI,但它们属于同一包管理系统,APT,高级封装工具。例如,两者都使用 进行配置/etc/apt/apt.conf
,都使用相同的文件空间和格式来表示包状态,并使用相同的文件空间来存储下载的 .debs。
它们的不同之处在于它们的内部规则系统,用于表示软件包之间的潜在冲突、如何解决这些冲突(例如在apt-get dist-upgrade
vs.期间aptitude full-upgrade
),以及如何在与用户交互时表达这些冲突。一般来说,两者都可能在棘手的情况下做错事,但 apt-get 出错的可能性比 aptitude 大得多。
答案2
这里已经有很多好的建议,但让我补充一点没有人提到的。如果如果你决定切换,你可能需要运行这个命令,具体取决于你正在做的事情apt-get
:
aptitude keep-all
这个命令会重置aptitude
对哪些包是孤立包以及哪些包应该被删除的认识。
这就是它有时有用的原因:目前,apt-get
和aptitude
都会跟踪作为其他依赖项自动安装的软件包。因此,例如,如果您安装mpd
,您可能会获得lib-so-and-so
依赖项。它们这样做,以便如果您稍后删除mpd
,lib-so-and-so
也会被删除。但aptitude
和apt-get
以不同的方式处理此清理。aptitude
立即尝试删除所有孤立的依赖项;但apt-get
只是建议您运行apt-get autoremove
以进行清理。(所有这些背后的逻辑是,您只在mpd
需要它时才获得该库。如果你不保留mpd
,则不再需要该库。如果其他包仍然依赖于它,那么aptitude
和apt-get
都会知道这一点并且不会尝试删除该库。)
我的观点是什么?好吧,如果你一直看到不断的提示让你运行apt-get autoremove
,然后你切换到aptitude
,那么你可能会在第一次尝试安装某些东西时大吃一惊。aptitude
将立即尝试删除所有这些孤立程序。一般来说,这会没问题(毕竟它们是孤立程序,没有必要),但有一个复杂的情况。桌面元包都涉及复杂的依赖链,其中每个单独的程序都作为虚拟包包装器的依赖项被拉入。例如,如果你因为安装了包而安装了 Gnome gnome
,那么你所有的常规桌面程序都是作为依赖项安装的。如果你卸载了其中一个程序(例如,Ekiga 或 Gedit),那么在aptitude
其他人看来,你的桌面也应该被删除。请注意aptitude
总是在删除内容之前会询问,但人们经常不读就输入“Y”。根据我的经验,这是 Debian 新手最常见的抱怨/困惑。
两条一般建议:
- 总是
aptitude
在对任何事情说“是”之前,请仔细阅读或的输出apt-get
。 aptitude -s safe-upgrade
请记住,您可以随时使用或进行试运行aptitude -s install foo
。-s|--simulate
标志是您的朋友。
答案3
几年前,Debian 邮件列表上就有人说,从 apt-get 切换到 aptitude 是有风险的。这是两个 Debian 版本(大约 10 年前)以前的事了。现在所有这些问题似乎都解决了,而且我肯定没有在 Debian 或 Ubuntu 上看到问题。
答案4
它们不就是同一后端的不同接口吗?