1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
|
This directory contains `bincompat', version 1.1.0.
`bincompat' contains a utility, `fix961212', which upgrades PowerPC
executables and shared libraries compiled for the 961212 GNU libc
snapshot to work with GNU libc version 2.1; it also fixes some bugs
that appear in old versions of the binutils. You can type `fix961212
--help' to find out what precisely it does.
Version 1.1 adds some support for glibc version 2.0.92 and later,
and should work for Netscape.
There are some routines which are called differently between the two
libraries. To deal with this, `bincompat' installs two shared
libraries, which by default are installed as `fix!.so' and
`fix!.so-old'. `fix!.so' is the version which should be used for
GNU libc 2.1. `fix!.so-old' is the version which should be used for
GNU libc snapshot 961212; it just passes the function calls through
without changing them. I have not tested fix!.so-old, so it may not work.
There are three ways you might install these tools:
1. You already have a system based on libc 2.1, but you have an old
executable you want to run.
In that case, type `make install'. The `fix961212' command and
`fix!.so' library will be installed.
If you are installing from a binary RPM, install the RPM and then type
ln -f /lib/fix\!.so-new /lib/fix\!.so
2. You have a system based on the 961212 libc, which you wish to
upgrade to libc 2.1.
In that case, do the following:
First, BACK UP ANYTHING YOU MIGHT WANT TO KEEP!!! Even if these
utilities are bug-free, which is not likely, if power fails half-way
through this process your system may not be bootable.
a. Type `make install-old'. A version of the `fix961212' command
which does not depend on shared libraries will be installed, along
with the `fix!.so-old' library (but called `fix\!.so').
If you are installing from a binary RPM, install the RPM and then type
ln -f /lib/fix\!.so-old /lib/fix\!.so
b. Now, reboot to single-user mode and run `fix961212' on every
executable in your system, using a command like
find / -perm +111 -print | xargs fix961212 -fps
This might print an error message like
/bin/bash: open failed: Text file busy
for a few files---probably including find, xargs, bash, init, and
fix961212. These files are the ones that are being used even in
single-user mode. For these, you need to do the following (using
/bin/bash as an example):
cp /bin/bash /bin/bash-new
fix961212 -fps /bin/bash-new
mv /bin/bash-new /bin/bash
c. Reboot again, to ensure all the new executables are in use.
Now, install libc 2.1 (typically, by typing
rpm -U libc-2.1.ppc.rpm
although the name of the RPM may differ). I do not recommend trying
to build and install a libc from source in this situation.
d. Once you've done step (c), your system is in a very unstable state.
The very next command you need to type is
rename /lib/fix\!.so-new /lib/fix\!.so
`rename' is the same as `mv', with most of the features removed; more
importantly, it is linked statically, so it will still work.
e. Your system should now be working again. You might want to
consider installing libc 2.1 versions of some of your programs.
3. You have a system with all static executables, perhaps based on the
old libc5. In this case, you can just install libc 2.1, and continue
as for possibility (1) above.
--
Geoffrey Keating <geoffk@ozemail.com.au>
|