我还应该为其他共享对象声明 Requires 依赖项吗?
Should I still declare Requires dependencies for other shared objects?
RPM 的一个有趣功能是它会查看共享对象,找出它们 linked 反对的内容,找出哪些包提供了那些 linked 共享库,并自动安装这些依赖库作为已编译共享库安装的一部分。
例如,如果 libnaftuli link针对 libbz2,rpm-build 将在 libnaftuli RPM 中指定依赖项,而无需在我的 .spec 文件中声明它。
那我还应该在我的规范文件中声明这些依赖项吗?我想我应该声明模棱两可的依赖关系,但否则我是否仍然应该手动找出我的库 link 反对什么并指定它们的 require 子句,或者让 rpm-build 变得聪明?
rpmbuild
添加的自动依赖项很有帮助,但它们并不能解决所有问题。显式 Requires
标签可以做这些额外的事情:
- 告诉
rpm
可以安装具有给定依赖项的特定版本(包括一系列版本)的包。
- 告诉
rpm
该包依赖于一个 虚拟 包,例如,一个提供 "same" 功能但名称不同的包(例如说 任何 Java 包)。
进一步阅读:
- Manual Dependencies(最大转速)
- How can I make an RPM depend on package a OR package b?
- Creating a Virtual Java RPM
如果您 仅仅 需要一些其他包,因为 rpm 为您计算出库要求,那么没有任何理由自己将包列为要求手动。
但是,如果您出于某些 其他 原因(non-library 文件等)依赖该包,或者对包有特定的版本控制要求(哪个库版本控制通常应该为你处理,所以你不应该)然后自己添加它是有道理的。
任何 其他 您有要求但 rpm 不适用的软件包,显然应该明确列出。
RPM 的一个有趣功能是它会查看共享对象,找出它们 linked 反对的内容,找出哪些包提供了那些 linked 共享库,并自动安装这些依赖库作为已编译共享库安装的一部分。
例如,如果 libnaftuli link针对 libbz2,rpm-build 将在 libnaftuli RPM 中指定依赖项,而无需在我的 .spec 文件中声明它。
那我还应该在我的规范文件中声明这些依赖项吗?我想我应该声明模棱两可的依赖关系,但否则我是否仍然应该手动找出我的库 link 反对什么并指定它们的 require 子句,或者让 rpm-build 变得聪明?
rpmbuild
添加的自动依赖项很有帮助,但它们并不能解决所有问题。显式 Requires
标签可以做这些额外的事情:
- 告诉
rpm
可以安装具有给定依赖项的特定版本(包括一系列版本)的包。 - 告诉
rpm
该包依赖于一个 虚拟 包,例如,一个提供 "same" 功能但名称不同的包(例如说 任何 Java 包)。
进一步阅读:
- Manual Dependencies(最大转速)
- How can I make an RPM depend on package a OR package b?
- Creating a Virtual Java RPM
如果您 仅仅 需要一些其他包,因为 rpm 为您计算出库要求,那么没有任何理由自己将包列为要求手动。
但是,如果您出于某些 其他 原因(non-library 文件等)依赖该包,或者对包有特定的版本控制要求(哪个库版本控制通常应该为你处理,所以你不应该)然后自己添加它是有道理的。
任何 其他 您有要求但 rpm 不适用的软件包,显然应该明确列出。