On Mon, Nov 24, 1997 at 10:55:25AM -0500, Erik Troan wrote:
> On Mon, 24 Nov 1997 ralf@lappi.waldorf-gmbh.de wrote:
> > For rpm the trick is easy, just don't use a static linked binary.
> > Unfortunately the Redhat guys seem to think static binaries are a good
> > idea and install a static rpm by default. Which it is not, not even
> > without a buggy dynamic linker.
>
> A static RPM has saved my ass *many* times, and it would irresponsible
> for us not to ship it static.
I'm not arguing against static binaries because we've got a bug in the
libs.
- static binaries contain syscalls and therefore make it very difficult,
if not impossible to modify the kernel interfaces.
The SVID btw., explicitly forbids embedding syscalls into ABI compliant
binaries. While SVID compliance is not directly mandatory for Linux,
binary compatibility issues with IRIX (or Solaris or ...) etc. might
somewhen enforce modifications to the syscall interface resulting in
broken static binaries.
- many static binaries will use dlopen() to load _shared_ libraries under
certain circumstances. Rpm is just one of them. For example try with
your static rpm
rm -f /lib/*.so*
rpm --install ftp://ftp.whitehat.org/libc-2.0.5-.rpm
Won't work, because you don't have your shared libc and libnss anymore ...
I admit that this type of desaster recovery was nicer with Linux libc
which doesn't do the dlopen() thing.
> Glibc ought to be able to generate static binaries. If it can't, it's broken.
Yes, and the bugs have been fixed.
Ralf
|