例如,包hollywood
有依赖项byobu
和推荐包atop
,而atop
有rec。cron
和byobu
,分别。 —— less
。和cron
是否会与depends和recommendless
一起安装?hollywood
hollywood
|- [dep] byobu
| |- [rec] less
|
|- [rec] atop
| |- [rec] cron
$ sudo apt install -o APT::Install-Recommends="true" hollywood
$ cat /etc/apt/apt.conf
(...)
APT::Install-Recommends "false";
答案1
一般规则是,如果Install-Recommends
启用,则新安装的软件包的建议本身会被考虑进行安装,并且这会传递性地应用 - 由于建议而选择的新安装的软件包将有其自己的建议被考虑进行安装。
然而,其他考虑因素可能会阻止安装建议,并且因为这只是建议,所以这不会被视为致命错误。在hollywood
示例中,run-one
将考虑安装,但在 Debian 上不会安装,因为该软件包不可用(它是 Ubuntu 软件包)。同样,如果推荐的软件包与已安装的软件包冲突,则不会安装它。此类包的任何进一步的依赖项或建议也不会被考虑。
所有这些都适用于所有apt
操作:install
显然,而且upgrade
.如果软件包升级引入了尚未安装的新依赖项,则将安装该软件包,并应用上述对新安装的软件包的处理。另一方面,引入新建议的软件包升级不会导致额外的安装,因为这些建议不是在新定义的 -已安装包。
答案2
在我的系统上我已经有了less
,所以让我们考虑run-one
一下。
hollywood
|- [dep] byobu
| |- [rec] run-one
|
|- [rec] atop
| |- [rec] cron
然后当我尝试安装时(从文本中删除了无趣的包):
$ sudo apt install -o APT::Install-Recommends="true" hollywood
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
atop byobu cron
Recommended packages:
run-one
The following NEW packages will be installed:
atop byobu cron hollywood
看起来apt
执行了以下操作:
byobu
(dep) 已安装,但其推荐包run-one
仍仅推荐。atop
(rec) 已安装,并且其推荐的软件包:cron | cron-daemon
已安装。
概括来说,我们在使用此选项时观察到的是:
- 建议安装包
- 包的依赖项的建议是不是安装。
- 推荐安装包的推荐。
令我惊讶的是,会安装推荐的推荐。我确认这cron
不是已安装的其他软件包之一的依赖项。