1

On a rolling release distribution like openSUSE Tumbleweed, if one wanted to build some software from source, how often would these programs need to be rebuilt considering that dependencies installed from the distribution repositories might be upgrading frequently.

For example, if one wanted to build Apache httpd and Exim from source, both of which could depend upon PCRE and GnuTLS, among other things, would Apache httpd and Exim need to be rebuilt each time PCRE or GnuTLS or another dependency was upgraded?

Is there a certain type of dependency that would require rebuilding the dependent software from source each time the dependency was upgraded?

Or would rebuilding dependent software only be necessary if the structure of a dependency significantly changed?

There are probably many individual unique cases, but are there any general guidelines?

4
  • This is related to the specific Linux distribution, unless you don't care about using the package manager for anything.
    – ILMostro_7
    Mar 26, 2017 at 7:23
  • Of course there can be some differences, but it seems related to rolling releases in general considering that the packages will be upgraded frequently in any rolling release, and so the above would be a question for software built from source on any rolling release.
    – user981178
    Mar 26, 2017 at 7:34
  • Another case for the use of package managers, and attempts to adhere to a distribution-based approach; as it's much easier to work with dependencies, uninstallation, etc. That's why I would prefer to build an rpm from source using srpm and specfile; or use a rolling distro that makes the process easier, like gentoo and/or ArchLinux.
    – ILMostro_7
    Mar 26, 2017 at 7:46
  • Really, I don't find the above proposal of building two programs from source very difficult. I am simply trying to learn when or how often they might need to be rebuilt if a distribution-provided dependency is upgraded but there is no new version of the dependent software. I figure there are some general guidelines, even if some variation sometimes, but I figure any variation depends more upon the particular program and its dependencies and not upon the operating system distribution.
    – user981178
    Mar 26, 2017 at 15:28

1 Answer 1

1

As far as I know the only "painful" in terms of recompiling things scenario is a kernel update. Then you need to compile a kernel itself together with all kernel modules.

As of the other relatively high-level packages, you probably won't need to recompile them most of the time when the dependency updated. There are only a few occasions when dependencies for a particular package change so drastically that you need to recompile the dependant package.

Most of the time, when these 'high level' packages are updated, the only indicator of the fact that you need to recompile the dependant packages is if they suddenly stop working.

Also reading change logs for packages you update is a good thing as they most of the time warn you about some big changes in their architecture and though you have an option to stick with your current version in order to not recompile all the things.

Actually, Slackware has slackpkgs that automate the process of recompiling some common packages and their dependencies. Also nobody bans the usage of a package managers of some kind (apt etc) to make your life easier.

Here are a couple of refs from Slackware and Gentoo documentation:

Slackware docs Gentoo docs

7
  • Thanks for your help. In regard to your last suggestion of using package managers, that is what I have in mind in my above example for everything except the stated examples of Apache httpd and Exim, which are built from source. So, all the dependencies would be binary upgrades, and I wonder how often or when (if there is a regular need) Apache httpd and Exim would need to be rebuilt to keep working, be secure, or use new features of the dependencies.
    – user981178
    Mar 26, 2017 at 6:31
  • @user981178 for what purpose you need Apache? If you consider running a website or anything exposed to the Internet on some hardcore rolling release/compile yourself type of distro like Slackware I would suggest you not to do so. The reason is that it's hard to detect whether your new upgrade break something (or introduced some kind of misconfiguration) that would result in a security hole.
    – ddnomad
    Mar 26, 2017 at 6:34
  • I know it is generally recommended to use the stable release version distributions for servers, but I have read some success stories of rolling release servers. I figure that given a fairly lightweight server installation something like openSUSE Tumbleweed (which goes through relatively intense testing before presenting upgrades) could work, and so am just trying to get a bit of an understanding about how a couple of programs built from source might fit in the mix (assuming their dependencies were coming mostly from binary packages provided by the distribution).
    – user981178
    Mar 26, 2017 at 6:44
  • @user981178 you could try anyway. But most of the time it's like reinventing the wheel. All the dev world bothers about CI and complete automation and you want basically to compile system packages from sources. It could be automated also, but it's again de facto writing your own package manager or so.
    – ddnomad
    Mar 26, 2017 at 6:53
  • I would mostly want to use the distribution packages and package manager, but for certain functions like the web server and mail server, I might like to have more choice and use software and options (likely disabling many unneeded options) that are not offered in the packages. So, I would want to keep the manually maintained software to a minimum, and like the idea of having new (rather than older patched) encryption libraries, etc. on the rolling release, but only if it could be achieved with something of a balance in hands-on maintenance and automation.
    – user981178
    Mar 26, 2017 at 6:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.