在滚动发布发行版上从源代码构建软件

在滚动发布发行版上从源代码构建软件

在像 openSUSE Tumbleweed 这样的滚动发布发行版上,如果想要从源代码构建一些软件,考虑到从发行版存储库安装的依赖项可能会频繁升级,这些程序需要多久重新构建一次。

例如,如果想要从源代码构建 Apache httpd 和 Exim,这两者都可能依赖于 PCRE 和 GnuTLS 等,那么每次升级 PCRE 或 GnuTLS 或其他依赖项时是否需要重新构建 Apache httpd 和 Exim?

是否存在某种类型的依赖关系,每次升级依赖关系时都需要从源代码重建依赖软件?

或者只有当依赖项的结构发生显着变化时才需要重建依赖软件?

可能有很多个别独特的案例,但是有什么通用的指导方针吗?

答案1

据我所知,重新编译场景中唯一“痛苦”的是内核更新。然后您需要将内核本身与所有内核模块一起编译。

与其他相对高级的包一样,当依赖项更新时,大多数时候您可能不需要重新编译它们。只有少数情况下,特定包的依赖关系会发生巨大变化,以至于您需要重新编译依赖包。

大多数时候,当这些“高级”包更新时,您需要重新编译依赖包的唯一指标是它们是否突然停止工作。

另外,阅读您更新的软件包的更改日志也是一件好事,因为它们大多数时候都会警告您其架构中的一些重大更改,尽管您可以选择坚持使用当前版本,以免重新编译所有内容。

实际上,Slackware 可以slackpkg自动重新编译一些常见包及其依赖项的过程。也没有人禁止使用某种包管理器(apt等等)来让你的生活更轻松。

以下是 Slackware 和 Gentoo 文档中的一些参考:

Slackware 文档 Gentoo 文档

相关内容