从 apt-get 切换到 aptitude 会导致问题吗?

从 apt-get 切换到 aptitude 会导致问题吗?

我一直在考虑改用 aptitude,但我听人说“如果你已经在使用 apt-get,那么你应该等到下次安装后再改用”。为什么人们会这么说?这会导致什么样的问题(如果有的话)?

答案1

apt-get 和 aptitude 是不同的 UI,但它们属于同一包管理系统,APT,高级封装工具。例如,两者都使用 进行配置/etc/apt/apt.conf,都使用相同的文件空间和格式来表示包状态,并使用相同的文件空间来存储下载的 .debs。

它们的不同之处在于它们的内部规则系统,用于表示软件包之间的潜在冲突、如何解决这些冲突(例如在apt-get dist-upgradevs.期间aptitude full-upgrade),以及如何在与用户交互时表达这些冲突。一般来说,两者都可能在棘手的情况下做错事,但 apt-get 出错的可能性比 aptitude 大得多。

答案2

这里已经有很多好的建议,但让我补充一点没有人提到的。如果如果你决定切换,你可能需要运行这个命令,具体取决于你正在做的事情apt-get

aptitude keep-all

这个命令会重置aptitude对哪些包是孤立包以及哪些包应该被删除的认识。

这就是它有时有用的原因:目前,apt-getaptitude都会跟踪作为其他依赖项自动安装的软件包。因此,例如,如果您安装mpd,您可能会获得lib-so-and-so依赖项。它们这样做,以便如果您稍后删除mpdlib-so-and-so也会被删除。但aptitudeapt-get以不同的方式处理此清理。aptitude立即尝试删除所有孤立的依赖项;但apt-get只是建议您运行apt-get autoremove以进行清理。(所有这些背后的逻辑是,您只在mpd需要它时才获得该库。如果你不保留mpd,则不再需要该库。如果其他包仍然依赖于它,那么aptitudeapt-get都会知道这一点并且不会尝试删除该库。)

我的观点是什么?好吧,如果你一直看到不断的提示让你运行apt-get autoremove,然后你切换到aptitude,那么你可能会在第一次尝试安装某些东西时大吃一惊。aptitude将立即尝试删除所有这些孤立程序。一般来说,这会没问题(毕竟它们是孤立程序,没有必要),但有一个复杂的情况。桌面元包都涉及复杂的依赖链,其中每个单独的程序都作为虚拟包包装器的依赖项被拉入。例如,如果你因为安装了包而安装了 Gnome gnome,那么你所有的常规桌面程序都是作为依赖项安装的。如果你卸载了其中一个程序(例如,Ekiga 或 Gedit),那么在aptitude其他人看来,你的桌面也应该被删除。请注意aptitude 总是在删除内容之前会询问,但人们经常不读就输入“Y”。根据我的经验,这是 Debian 新手最常见的抱怨/困惑。

两条一般建议:

  1. 总是aptitude在对任何事情说“是”之前,请仔细阅读或的输出apt-get
  2. aptitude -s safe-upgrade请记住,您可以随时使用或进行试运行aptitude -s install foo-s|--simulate标志是您的朋友。

答案3

几年前,Debian 邮件列表上就有人说,从 apt-get 切换到 aptitude 是有风险的。这是两个 Debian 版本(大约 10 年前)以前的事了。现在所有这些问题似乎都解决了,而且我肯定没有在 Debian 或 Ubuntu 上看到问题。

答案4

它们不就是同一后端的不同接口吗?

相关内容