Building RPMs for an older version of CentOS
Posted by Admin • Thursday, November 20. 2014 • Category: Linux
If you build RPMs on Centos 6.X (6.5 in my case) and then try to install them on Centos 5.X (5.10 in my case), bad things happen. Ironically, bad things happen even though my RPM contains a single jar file, and is thus entirely platform independent. Here is what I see:
Since I am using maven-rpm-plugin to build RPMs, my modifications look as follows:
If you google for a solution, most people suggest running a virtual with Centos 5 just so you can build the RPMs, but this is apparently not necessary in this simple case, as you can simply specify a few flags. Basically, Centos 5 can't decompress the default archive format, and doesn't support the new digest algorithm.Running rpm_check_debug ERROR with rpm_check_debug vs depsolve: rpmlib(FileDigests) is needed by my-rpm-1.0.x86_64 rpmlib(PayloadIsXz) is needed by my-rpm-1.0.x86_64
Since I am using maven-rpm-plugin to build RPMs, my modifications look as follows:
If you're using fpm or rpmbuild, you can just take these lines and make them %define's in your spec.
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>rpm-maven-plugin</artifactId>
<version>2.1-alpha-3</version>
<configuration>
<!-- skipping irrelevant items -->
<defineStatements>
<!-- don't strip jar files, it takes forever and is useless -->
<defineStatement>__os_install_post %{nil}</defineStatement>
<!-- for Centos6 -> Centos5 forwards compatibility -->
<defineStatement>_source_filedigest_algorithm md5</defineStatement>
<defineStatement>_binary_filedigest_algorithm md5</defineStatement>
<defineStatement>_source_payload w9.bzdio</defineStatement>
<defineStatement>_binary_payload w9.bzdio</defineStatement>
</defineStatements>
</configuration>
</plugin>