Unable to migrate from Oracle Linux 8 to Oracle Linux 9 due to Boost dependency

Hi Team We are writing this mail requesting your assistance for boost related issue which we are facing while migrating from Oracle Linux 8 (OL8) to Oracle Linux 9 (OL9) OS. Issue Description: When we try to upgrade the OS from OL8 to OL9, we are seeing errors related to boost version 1.66.0 and the RPM which was already successfully installed on OL8 is getting removed. Note: On OL8 OS, the available version of boost from yum is boost-1.66.0 & on OL9 OS, the available version of boost from yum is boost-1.75.0. Brief: Our application RPM is compiled on an OL8 machine(development machine) and is dependent on boost library (linked dynamically). When we install this RPM on another OL8 machine(test machine), the RPM installation is successful. This is because the boost version in our RPM and the test OL8 machine matches i.e. both require boost-1.66.0. However, when we upgrade the OS from OL8 to OL9, the application RPM is getting removed with the errors as shown below. This is because OL9 has boost-1.75.0 libraries but our RPM has boost libraries which is dynamically linked with boost-1.66.0. [root@vm227-66-vm5 ~]# dnf install ocsm-6.0.0.0.0-608.x86_64.rpm Last metadata expiration check: 0:13:25 ago on Tue 25 Mar 2025 12:25:18 PM CET. Error: Problem: conflicting requests - nothing provides libboost_filesystem.so.1.66.0()(64bit) needed by ocsm-6.0.0.0.0-608.x86_64 from @commandline - nothing provides libboost_program_options.so.1.66.0()(64bit) needed by ocsm-6.0.0.0.0-608.x86_64 from @commandline - nothing provides libboost_regex.so.1.66.0()(64bit) needed by ocsm-6.0.0.0.0-608.x86_64 from @commandline - nothing provides libboost_system.so.1.66.0()(64bit) needed by ocsm-6.0.0.0.0-608.x86_64 from @commandline Analysis: To simulate this above scenario, we have written a very simple sample program using the boost library and compiled the code on OL8 OS and linked dynamically with boost version 1.66.0. Once RPM is ready, we installed it on an OL8 virtual machine. Installation is successful because our compiled RPM has boost-1.66.0 libraries(libboost_program_options.so.1.66.0) and OL8 supported version of boost is also 1.66.0. Now, when we upgrade the OS from OL8 to OL9, the default boost available on OL9 is boost-1.75.0, and since our RPM is linked with boost-1.66.0 libraries, installation is failing with the below errors (similar to the application errors mentioned in Brief section). [root@localhost ~]# sudo dnf install boost_demo-1.0.0-1.el8.x86_64.rpm Last metadata expiration check: 0:23:05 ago on Mon 21 Apr 2025 01:00:57 PM CEST. Error: Problem: conflicting requests - nothing provides libboost_program_options.so.1.66.0()(64bit) needed by boost_demo-1.0.0-1.el8.x86_64 from @commandline - nothing provides libboost_system.so.1.66.0()(64bit) needed by boost_demo-1.0.0-1.el8.x86_64 from @commandlin In our application, we have not linked to any specific version of boost dependency i.e. we have nowhere mentioned the version of boost to be used as 1.66.0. Since OL8 yum repo has boost-1.66.0, our application is considering version 1.66.0 while building RPM. However, while migrating from OL8 to OL9 we are seeing the above-mentioned issue and hence we are unable to complete the upgradation process which is crucial to our customers. Query: Can you please let us know how we can ensure that the OS gets upgraded from OL8 to OL9, without application RPM(linked dynamically to boost-.1.66.0) being removed. Thanks Pavithra

On 22 Apr 2025 12:44, Pavithra Raghavendran via Boost wrote:
Query: Can you please let us know how we can ensure that the OS gets upgraded from OL8 to OL9, without application RPM(linked dynamically to boost-.1.66.0) being removed.
You cannot have a packaged application that is dynamically linked to Boost without having a specific Boost version fixed. Different Boost releases are not ABI-compatible, so the package dependencies must specify the specific Boost version against which your application was built. When supporting multiple Linux distributions, including different versions of the same distro, you must provide distinct packages of your application that are built for each of the supported distro. That is, you must provide different packages for OL8 and OL9, each with the dependency on the Boost version that is natively available in the respective distro. As for the distro upgrade process, it depends on the specific distro. I'm not familiar with Oracle Linux and the upgrade procedure that is defined there, but e.g. in Debian, it is possible to just update the third-party apt repository URLs, along with Debian URLs, while doing the upgrade, and then apt is able to update the packages normally. In Ubuntu, the do-release-upgrade script will automatically disable any third-party repositories during the upgrade, but it will also keep any packages that were manually installed and that have dependencies that are missing in the new release (so e.g. your application would remain installed along with the Boost version from the previous Ubuntu release, even though it is no longer available in the new one). Then you can update the third-party URLs and the packages from them and remove the now-obsolete dependencies. If your application is shipped in the distro repositories then everything should happen automatically, as, presumably, your application must be built for each distro version separately and have the proper dependencies, and you wouldn't need to fiddle with thrird-party repositories. But given your question, this doesn't look like your case.
participants (2)
-
Andrey Semashev
-
Pavithra Raghavendran