我试图弄清楚如何安装 libgtk2.0-dev,发现我必须使用
sudo aptitude install
代替
sudo apt-get install
为什么有这两种不同的获取物品的方式?
答案1
apt-get
和aptitude
都是 dpkg 的前端。使用其中一个,但要保持一致。Aptitude 较新,应该更容易使用。它还统一了一些功能apt-*
。您可以使用aptitude
它来搜索和使用 apt-* 安装时您需要apt-get
分别apt-cache
进行安装和搜索。
我通常在复制和粘贴命令时apt-get
用 替换所有示例。aptitude
不带任何选项运行aptitude
以获取选择包的界面。我从未使用它,所以我不知道它有多友好。
答案2
apt-get和资质都是接口软件包,Debian 软件包管理器。
资质晚于易于-命令套件,并具有后者所没有的一些可用性功能,但我还没有遇到过你有使用其中一个而不是另一个。
维基百科条目资质声称它最初是易于-套房:
资质是高级打包工具 (APT) 的前端。它显示软件包列表并允许用户以交互方式选择要安装或删除的软件包。[...]尽管 aptitude 是一个单一的可执行文件,但它提供了与 apt 系列工具(apt-get、apt-cache、apt-listchanges 等)类似的 CLI 功能。Aptitude 还模拟了大多数 apt-get 命令行选项,允许它作为某些 apt-get 用法的替代品。
答案3
长期使用 Debian 的用户告诉我,aptitude
Debian 有自己的数据库,它与apt
保存数据库的数据库一起维护。这意味着,同时使用这两种数据库有时会产生一些令人困惑的事情,特别是aptitude
当它似乎有一个稍微过时的软件包状态副本时。我见过这种情况:它会导致你莫名其妙地无法删除或安装软件包。
GUI 程序synaptic
没有这个问题,因为它完全依赖于apt
数据库。
答案4
其中一个细微的差别是,如果您有标记为“自动删除”的软件包,那么简单的 apt-get install 会列出它们,而 aptitude install 将继续将它们作为软件包安装的一部分删除。
除非您使用“build-dep”安装软件包,否则这没有什么大不了的,从 8.10 开始,所有 build-dep 安装的软件包都被标记为自动安装(将被添加到 apt-get 中的自动删除并在 aptitude 中删除)。
(如果您计划构建并使用“build-dep”,那么这将阻止自动标记,如果您希望保留(和/或防止 apt-get 中的大型自动删除列表,例如 mplayer sudo apt-get build-dep mplayer -o APT::Get::Build-Dep-Automatic=false