如何在不安装依赖项的情况下安装软件包?

我正在尝试安装Alacarte,但它的依赖项非常庞大,基本上是整个GNOME。我知道它们是不必要的。在Synaptic或者apt-get中有没有相应的选项或标志可以解决这个问题?

推荐和依赖之间有很大的区别。 - Marco Ceppi
3个回答

对于alacarte,有两种依赖关系:“depends”和“recommends”。

Alacarte依赖于Python和各种Python库(这些库又会引入一些其他库);“depends”级别表示没有这些依赖项,alacarte将无法正常工作。基于APT的工具不允许您在没有这些依赖项的情况下安装alacarte。您可以使用dpkg --force-depends忽略所有依赖项,但是这样做会在以后进行依赖计算时(例如当包的新版本出现时)使APT混乱,因此不建议这样做。此外,如果没有这些依赖项,很可能无法使用该软件包。

Alacarte在“recommends”级别上依赖于gnome-panel(它又依赖于Gnome的许多其他部分)。这意味着在没有gnome-panel的情况下,alacarte很少有用,但在某些情况下可能有用。在这种情况下,如果您有一个不同的符合Freedesktop标准的菜单应用程序,那么alacarte确实可以派上用场。

默认情况下,apt-get install会安装所有“depends”或“recommends”级别的依赖项。如果要告诉它不安装“recommends”级别的依赖项,则需要传递--no-install-recommends选项。您可以通过将APT::Install-Recommends "false";添加到/etc/apt/apt.conf.d/zzz_mpmcfarlane文件中来将其设置为默认值。
在命令行上使用aptitude,传递-R--without-recommends以避免安装“recommends”级别的依赖项。在Aptitude全屏界面中,标记alacarte以进行安装还会同时选择gnome-panel,但您可以在安装之前取消标记它。APT偏好设置也会影响aptitude。
在Synaptic中,标记alacarte以进行安装也会选择gnome-panel。但是,在应用更改之前,您可以去取消标记gnome-panel。在“常规”选项卡中,有一个选项“将推荐的软件包视为依赖项”,该选项也会起作用。

1谢谢,非常好的答案,将其从大约一百个包裹改为大约四个。 - user22553

添加到 apt-get 的关键选项是 --no-install-recommends

因此,对于alacarte -

sudo apt-get install --no-install-recommends alacarte

鉴于alacarte在标准Ubuntu中是默认的,我想问一下您要为哪个版本的Ubuntu安装alacarte?
如果您使用的是Xubuntu或Lubuntu - 我可以推荐一个替代的菜单编辑器,来自于this question的答案。我发现alacarte在Lubuntu和Xubuntu上都无法正常工作。

你可以下载.deb包(使用apt-get download foo命令),然后通过dpkg命令使用--force-depends选项进行安装。

如果我只有软件包的名称,如何找到.deb文件的位置? - knocte
回复自己:apt-get download foo - knocte