在像 openSUSE Tumbleweed 这样的滚动发布发行版上,如果想要从源代码构建一些软件,考虑到从发行版存储库安装的依赖项可能会频繁升级,这些程序需要多久重新构建一次。
例如,如果想要从源代码构建 Apache httpd 和 Exim,这两者都可能依赖于 PCRE 和 GnuTLS 等,那么每次升级 PCRE 或 GnuTLS 或其他依赖项时是否需要重新构建 Apache httpd 和 Exim?
是否存在某种类型的依赖关系,每次升级依赖关系时都需要从源代码重建依赖软件?
或者只有当依赖项的结构发生显着变化时才需要重建依赖软件?
可能有很多个别独特的案例,但是有什么通用的指导方针吗?
答案1
据我所知,重新编译场景中唯一“痛苦”的是内核更新。然后您需要将内核本身与所有内核模块一起编译。
与其他相对高级的包一样,当依赖项更新时,大多数时候您可能不需要重新编译它们。只有少数情况下,特定包的依赖关系会发生巨大变化,以至于您需要重新编译依赖包。
大多数时候,当这些“高级”包更新时,您需要重新编译依赖包的唯一指标是它们是否突然停止工作。
另外,阅读您更新的软件包的更改日志也是一件好事,因为它们大多数时候都会警告您其架构中的一些重大更改,尽管您可以选择坚持使用当前版本,以免重新编译所有内容。
实际上,Slackware 可以slackpkg
自动重新编译一些常见包及其依赖项的过程。也没有人禁止使用某种包管理器(apt
等等)来让你的生活更轻松。
以下是 Slackware 和 Gentoo 文档中的一些参考: