... fin du myst�re

Bjarne Thomsen a trouv� la cl� de l'�nigme (sur la liste [expert] en anglais)

Le topo: si vous avez des ex�cutables qui refusent de fonctionner, avec un 
message "Aucun fichier ou dossier de ce type", alors m�me que le fichier 
existe bel et bien, c'est tr�s probablement parce qu'il est li� a 
l'ancienne libc5, dont le chargeur (traduction de "loader" ?) est 
bizarrement manquant dans Mandrake 8.0

Pour r�soudre le probl�me:

1) installez le RPM libc-5.3.12-35mdk.i586.rpm
si ce n'est pas d�j� fait

2) allez ici: http://home.get2net.dk/bt/ftp/ld-linux/
et t�l�chargez les fichiers
ld.so
libdl.so.1
ld-linux.so.1
(il est possible que vous n'ayez besoin que de ld-linux.so.1)

3) placez-les dans /lib (il faut �tre root)

4) rendez ld-linux.so.1 ex�cutable:
chmod a+x ld-linux.so.1


et voilou.


Veuillez noter qu'il n'est pas du tout garanti que cette op�ration n'a pas 
d'effets secondaire ind�sirables... d'apr�s Bjarne, ce n'est probablement 
pas pour rien que Mandrake a pris soin de ne pas distribuer ld-linux.so.1 
(� la place il y a ld-linux.so.2 qui fait partie de glibc). A moins qu'il 
ne s'agisse d'une erreur de leur part.


Pour ceux qui veulent des pr�cisions, le reste de ce message (en anglais) 
est la description de la situation par Bjarne Thomsen himself


Stef


----------------------------------------------------- pr�cisions:
(message re�u sur la liste experts)


Hello!

This is just to let you know what I have found out
regarding the "No such file" error when trying to
execute a certain program.

The man pages for execve() states:

If the executable is a dynamically-linked ELF executable, the interpreter
named in the PT_INTERP segment is used to load the needed shared libraries.
This interpreter is typically /lib/ld-linux.so.1 for binaries linked with the
Linux libc version 5, or /lib/ld-linux.so.2 for binaries linked with the GNU
libc version 2.

That is interesting considering /lib/ld-linux.so.1 is nowhere to be found
on the LM8.0 distribution. It is safe to say that this is our missing file:
The Linux loader for programs linked with libc5.

Inspection of RH6.2 and LM7.2 boxes shows that they both have the file:
/lib/ld-linux.so.1. Furthermore this file belongs to the ld.so package.
Inspection of the rpmfind.net database showed that the ld.so packages are
RH6.2: ld.so-1.9.5-13.i386.rpm
LM7.2: ld.so-1.9.11-4mdk.i386.rpm

Now, it turned out that the ld.so-1.9.5-13.i386.rpm package was installed
on the RH7.1 box where my idl_lmgrd was working (it did not produce the
"no such file" error; I do not have a license file on that box).
I am not sure if the ld.so package actually is on the RH7.1 installation
CDs, or if it was left over from an upgrade. At this point I certainly felt
that I was on the right track.

Why should I not just install the LM7.2 ld.so package on my LM8.0 box?
This turned out to be quite problematic since ld.so-1.9.11-4mdk.i386.rpm
ALSO contains /sbin/ldconfig which is now found in the ldconfig package
related to the glibc library. I concluded that it was not safe to install
ld.so-1.9.11-4mdk.i386.rpm on LM8.0.
The RH ld.so package ld.so-1.9.5-13.i386.rpm does NOT contain /sbin/ldconfig,
so I installed that package instead of the LM ld.so package.

Now my old license manager works again!

I have not seen any problems yet, but there just might be some reasons
why Mandrake did not include ld.so in the LM8.0 distribution.


----------------------------------------------------- pr�cisions, bis:
(message perso du m�me)


Hello St�phane,

First of all you need to have libc-5.3.12-35mdk.i586.rpm installed.
If libc is installed you should find a directory called 
/usr/i486-linux-libc5/lib/,
containing all the libc5 shared (.so.) libraries.
If this is not the case you must to install the RPM package 
libc-5.3.12-35mdk.i586.rpm:
Insert the mdk8.0 installation CD #2
mount /mnt/cdrom
cd /mnt/cdrom/Mandrake/RPMS2
su
Password:xxxxxxx
rpm -Uvh libc-5.3.12-35mdk.i586.rpm
CTRL-D
cd
eject

The libc5 library files should now be in place.
ld-linux.so.1 is contained in the RedHat 6.2 package ld.so-1.9.5-13.i386.rpm
The content of this package is shown by the rpm command:
rpm -qlp ld.so-1.9.5-13.i386.rpm
Apart from the man files the content is:
/lib/ld-linux.so.1
/lib/ld-linux.so.1.9.5
/lib/ld.so
/lib/ld.so.1.9.5
/lib/libdl.so.1.9.5
ld-linux.so.1 is a link to ld-linux.so.1.9.5
and
ld.so is a link to ld.so.1.9.5

We are interested in ld-linux.so.1, actually the file ld-linux.so.1.9.5,
so I have renamed ld-linux.so.1.9.5 to ld-linux.so.1 by
mv ld-linux.so.1.9.5 ld-linux.so.1

Then I copied ld-linux.so.1 to /lib by
cp ld-linux.so.1 /lib
AFTER first having removed the ld.so-1.9.5-13.i386.rpm package by the command
rpm -e ld.so

It now looks as if my idl_lmgrd program works.

I have discovered that the upgrade of the glibc package removes all
the files from the ld.so-1.9.5-13.i386.rpm package, INCLUDENG the
ld-linux.so.1 and ld-linux.so.1.9.5 files.

There is, however, a hope that the manually copy of ld-linux.so.1
will escape the process of a future RPM upgrade of glibc.

But be warned there is probably a reason why Mandrake is so careful
about removing ld-linux.so.1 when installing the new loader ld-linux.so.2
belonging to the glibc package.


You can download ld-linux.so.1 from
http://home.get2net.dk/bt/ftp/ld-linux/

Remember: You must make ld-linux.so.1 executable with
chmod a+x ld-linux.so.1
And then you should copy it to /lib
as root.

Please, let me know if it works for you.

-- Bjarne




Répondre à