Dependencies 如果我更新RPM,我是否必须重建所有基于它的RPM

Dependencies 如果我更新RPM,我是否必须重建所有基于它的RPM,dependencies,rpm,rpm-spec,Dependencies,Rpm,Rpm Spec,我们有一个系列或RPM,作为项目的一部分构建,其中一些依赖于另一些。假设我有3 rpm A.rpm、B.rpm和C.rpm,其中B和C都依赖于A,我是否需要每次更新A时都重建这两个rpm?如果我向a添加一个新特性以支持B中的特性,但是生成C的代码不知道这个新特性。我是否需要根据更新的A重建C 或者更接近我的实际情况,我有一个库RPM,它有大约25 RPM依赖于它。我们向库中添加了一个新功能,以支持其中一个RPM的更新,是否需要重建所有其他24个RPM 提前感谢。是和否。有两种依赖关系:生成依赖关

我们有一个系列或RPM,作为项目的一部分构建,其中一些依赖于另一些。假设我有3 rpm A.rpm、B.rpm和C.rpm,其中B和C都依赖于A,我是否需要每次更新A时都重建这两个rpm?如果我向a添加一个新特性以支持B中的特性,但是生成C的代码不知道这个新特性。我是否需要根据更新的A重建C

或者更接近我的实际情况,我有一个库RPM,它有大约25 RPM依赖于它。我们向库中添加了一个新功能,以支持其中一个RPM的更新,是否需要重建所有其他24个RPM


提前感谢。

是和否。有两种依赖关系:生成依赖关系和隐式依赖关系

如果您谈到C库,那么rpmbuild将生成如下依赖项:

$ rpm -R bash
...
libdl.so.2()(64bit)
...
当提供此库的包被更新,但它保持不变,即相同的二进制接口时,则不需要重建使用它的包(在本例中为
bash
)。但是,当出现SONAME bump时,包突然提供了
libdl.so.3
,那么您必须重建需要它的包

如果依赖项是其他内容,则不需要重新生成包。例如,包
firefox
需要
bash
,但任何版本都可以。因此,当更新
bash
时,您不需要重建
firefox

有时,您依赖于某些东西(python-2.x),并且它得到了非常大的升级(python-3.x),然后您需要重建需要它的包。在这些罕见的情况下,您通常提前知道它,因为您不仅要重建包,还要重写应用程序本身的代码。例如,从python2到python3的迁移是非常重要的


大多数情况下的快速提示:除非DNF/YUM告诉您已断开依赖关系,否则您不需要重新生成包。

是和否。有两种依赖关系:生成的和隐式的

如果您谈到C库,那么rpmbuild将生成如下依赖项:

$ rpm -R bash
...
libdl.so.2()(64bit)
...
当提供此库的包被更新,但它保持不变,即相同的二进制接口时,则不需要重建使用它的包(在本例中为
bash
)。但是,当出现SONAME bump时,包突然提供了
libdl.so.3
,那么您必须重建需要它的包

如果依赖项是其他内容,则不需要重新生成包。例如,包
firefox
需要
bash
,但任何版本都可以。因此,当更新
bash
时,您不需要重建
firefox

有时,您依赖于某些东西(python-2.x),并且它得到了非常大的升级(python-3.x),然后您需要重建需要它的包。在这些罕见的情况下,您通常提前知道它,因为您不仅要重建包,还要重写应用程序本身的代码。例如,从python2到python3的迁移是非常重要的


大多数情况下的快速提示:除非DNF/YUM告诉您已断开依赖关系,否则您不需要重新生成包。

后续问题:如果包版本/发行版从1.1.3变为1.1.4,这是否解决了SONAME更改问题?1.1.3-1到1.1.3-2怎么样?ThanksChange从1.1.3-1到1.1.3-2表示包具有相同的tar文件,并且仅在spec文件中进行了更改,或者添加了补丁。因此,不需要重新生成使用此版本的包。后续问题:那么,如果包版本/发行版从1.1.3变为1.1.4,这是否解决了SONAME更改的问题?1.1.3-1到1.1.3-2怎么样?ThanksChange从1.1.3-1到1.1.3-2表示包具有相同的tar文件,并且仅在spec文件中进行了更改,或者添加了补丁。因此,不需要重新生成使用此包的包。