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