我想在我的电脑上安装一个软件包软呢帽系统,但它有很多不合理的依赖项(我确信它们实际上并不是必需的)。
我曾经工作过德班, 在哪里apt-get允许您系统地排除受到推崇的和建议包,仅安装严格必需的依赖项。
有没有办法做到这一点百胜?
答案1
我在我的命令历史记录中找到了这个
dnf debuginfo-install -y \
--setopt=install_weak_deps=False \
cyrus-sasl-lib jsoncpp
我显然在以下位置读到了有关该功能的信息https://bgstack15.wordpress.com/2017/05/13/dnf-ignore-weak-dependencies/。
如果您还想跳过文档包,请添加--setopt=tsflags=nodocs
到命令中。
答案2
不。
不幸的是,基于 RPM 的包管理只有一种类型的依赖关系。它是一种依赖,或者不是,不是介于两者之间的东西(在这里读)。根据我的经验,Fedora 中的依赖项非常有限,除非您进行组安装,否则不会安装非核心功能。
在我看来,多个级别的依赖关系显示了基于 DEB 的包管理的强大功能之一。
答案3
编辑:要回答原来的问题,是的,对于当前支持弱依赖项的包管理器来说这是可能的。例如,在 Mageia 上,该值等于urpmi --no-suggests foo
.对于 SuSe 来说,那就是zypper in --no-recommends
。较新的 yum 版本也必须实现类似的功能,否则这些软依赖项将毫无用处。
实际上,rpm 中存在允许这样做的弱依赖项,但不幸的是,这些依赖项尚未添加到 yum 以及 Fedora/RHEL 最近使用的 rpm.org 版本中(目前可能只能通过 rawhide 获得)。查看http://lists.rpm.org/pipermail/rpm-maint/2014-February/003666.html了解最近的公告和实施细节。另请参阅http://lists.baseurl.org/pipermail/yum-devel/2009-September/005844.html对于之前的讨论。还有一个有关 rpm-4.12 中的更改的 Fedora wiki 页面描述了此支持:https://fedoraproject.org/wiki/Changes/RPM-4.12
FWIW,SuSe 多年来一直使用软依赖关系,请参阅http://en.opensuse.org/Libzypp/Dependency#Weak_dependencies下面的部分显示了他们的 rpm 分支支持的内容。 Mandriva/Mageia 和相关分支也使用软依赖项(仅建议)已有相当长一段时间了。
因此,要回答最初的问题,请升级到 rawhide/rpm-4.12 并使用它现在支持的弱依赖项之一。
如果您需要有关内部 RPM 实施细节的更多信息,我将很乐意与您分享。
答案4
基于 RPM 的发行版中的依赖关系的工作方式与 dpkg 要求/推荐/建议方法不同。
通常,基于 RPM 的发行版中的依赖关系可以被视为等同于“除非满足此依赖关系,否则该包将无法正常工作”。然而,包维护者有一些艺术自由,可以在他们认为合适的情况下包含额外的依赖项(或者因为它们不会被自动检测到,或者因为他们认为这是一个硬性要求)。
例如,Debian/Ubuntu 中的 Web 应用程序可能对 MySQL 服务器包有各种建议的依赖关系。不过,由于 MySQL 服务器不需要位于本地 Web 服务器上,因此这不是硬性要求,Fedora 下的同一个包不会有依赖关系。
RPM 方法有一个问题,这就是您所确定的,有时依赖项太多。我听到的一个常见问题是“当我不使用蓝牙时,为什么这个包应该包含蓝牙库?”,主应用程序包中包含的可选插件等项目通常是造成这种情况的原因。