Eric Schwartz
9/29/2004 10:55:00 PM
"rcoder@gmail.com" <rcoder@gmail.com> writes:
> There is somewhat of a problem with installing compatibility libraries,
> since I'm trying to build a single binary package which can be
> distributed to customers who may be running IA-32, or may be using
> Itanium. We can't require that end users install other packages for
> compatibility, since our stuff is supposed to work on a "bare" install
> of Red Hat.
Well, that's your decision. I think if you plan to distribute only
one set of shared objects, then the best answer is to require the
customer to install the ia32 loader, which does ship with Red Hat
(though it's not, as you point out, installed by default). If they
have a legitimate copy of RHEL, then they will have the CDs, and your
install process can simply include the "install ia32 libs" step in
your installation instructions.
> If nothing else, I can always just include IA-32 and Itanium .SO files,
> and import the proper set at runtime, but I'm trying to minimize the
> distributed file size. Unfortunately, total size is a big deal, because
> I'm being pressured to use a language other than Ruby to build our tool
> if I can't come up with a simple cross-platform support solution.
You're working on a 64-bit system, I'm afraid; size is just there.
OTOH, you'll have the same problem distributing 32-bit and 64-bit .so
libraries as well.
> If distributing either the compatibility libraries,
You don't have to-- Red Hat has distributed them already; you just
need to take advantage of that. If the customer has Red Hat already,
they have the compatibility libraries; they just may have not
installed them.
> or versions of the shared libs for both platforms, pushes the file
> size over that of a static C++ or Java (via GCJ) binary, then one of
> my current key arguments for Ruby (smaller distribution size due to
> .rb source files being more compact than equivalent binaries) ceases
> to be true, and higher forces may make me switch to a compiled
> language.
I think Ruby is a great language, but if you're arguing based solely
on size of distributed code (and interpreter), then you may well
deserve to lose, I'm afraid. However, be sure to point out that
you'll have the exact same set of issues with compiled binaries as
with distributing Ruby, as far as increased size of libs for 64-bit
native and 32-bit native, or needing compatibility rpms, and that your
development process will be much slower.
> So, I'm just trying to get a feel for whether it's even possible to
> build Ruby as purely-static binary with OpenSSL support. If not, then I
> can look into distributing a bunch of compatibility libraries, but that
> gets ugly quickly once you have at least two major libc versions and
> two architectures to support.
I completely understand your desire not to ship compatibility
libraries, but isn't that what the distro vendor is for? On RHEL3,
you should only need the glibc-2.3.2-*.i686.rpm package. All I can
suggest is that you (collective) re-evaluate your decision not to
require the customer to install rpms distributed with their Red Hat
installation. If you can clear that hurdle, then you should be free
and clear.
-=Eric
--
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
-- Blair Houghton.