Re: Supporting multiple Linux platforms

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Oct 4, 2007, at 12:22 PM, Jorge M. wrote:

Hi,
I need to create installers for a product in multiple Unix variants and Windows: Linux RedHat, Suse, SunOS,HP-UX, AIX, Win2k, Win2003, ...

We decided to use native installers, therefore I need to create an RPM package for Linux. The product is supported in multiple versions of RedHat Linux: RH3, RH4, RH5 and in multiple architectures 32 and 64-bit. The application runs mainly in Java, but there is a supporting set of binaries. We have a different set of binaries for each Linux platform.

I have been creating a single RPM, including the binaries for all Linux platforms and using scripts to copy the right set of binaries to our app "bin" folder and removing all other platform binaries.

Nevertheless, the built-in dependency processing does not allow me to install the package because all lib dependencies for all platforms cannot be satisfied.


Dependencies reflect the linkage needs of the binaries in the package, not otherwise.

If your application actually runs without recompilation on all the linux platforms, then build on the oldest platform often simplifies the packaging tasks. linux often supplies backward (i.e. to
older libraries) even if not forward compatibility.

   I need some advice. Should I break my package into multiple RPMs?

Understand the reason for splitting first. For java, you might be able to have
a common "noarch" package shared amongst all platforms, with a per-arch
package that isolates per-platform changes.

I would really like to minimize the number of RPMs that I need to create.

Well I'd like to minimize the number of vendor's that absolutely __MUST__ do things differently to distinguish their distro products. Not gonna happen ;-)

Is it "wrong" to create a single RPM for all OSversion- architecture ? How do I avoid the dependency checking? Should I follow a different path?


No "wrong", but perhaps not going to work. Again dependencies are just a reflection of underlying realities. If different libraries are actually needed, then the dependencies will differ too. Avoiding dependency checking will just move the real problem elsewhere, like
your application will not run because of missing libraries.

Meanwhile,
    rpm -qp --filerequire yourpkg*.rpm
will show which files are responsible for a dependency.

Doing chmod -x %{buildroot}/path/to/file will disable the extraction
of dependencies for those file(s).

Add %attr(0755,-,-) to the entry in the %files manifest if execute bits are needed
when installed.

There is no different path once you have decided "native installers" ;-)


I already have to create multiple installers -one for each OS we support- and I would like to keep the number of installers to a minimum. Since we support multiple OS and we decided to use native installers, we are having a big learning curve, since we need to be well versed in creating RPM packages for Linux, MSI installers for Windows, Solaris packages and SD packages for HP-UX. Minimizing the complexity on the packaging is key for maintainability


Yep.

73 de Jeff

_______________________________________________
Rpm-list mailing list
Rpm-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/rpm-list

[Index of Archives]     [RPM Ecosystem]     [Linux Kernel]     [Red Hat Install]     [PAM]     [Red Hat Watch]     [Red Hat Development]     [Red Hat]     [Gimp]     [Yosemite News]     [IETF Discussion]

  Powered by Linux