Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-09 Par sujet RogerT


> Le 5 mai 2023 à 17:30, Hugues Larrive  a écrit :
> 
> Bonjour,
> 
> --- Original Message ---
>> Le mercredi 3 mai 2023 à 22:33, RogerT  a écrit :
>> 
>> 
>> je reformule : il y a des problèmes sur aarch64 INEXISTANTS sur x86_64
>> 
 Le 3 mai 2023 à 20:09, RogerT roger.tar...@free.fr a écrit :
>>> 
>>> Ça a compilé.
>>> Ça tourne sur architecture aarch64.
>>> 
>>> Mais il y a des problèmes avec certaines dépendances à des fonctions du 
>>> shell ou à systemd (inexistantes sur x86_64) que je dois régler.
>>> 
> 
> Quels sont les problèmes ? Y a-t-il des messages d'erreur ? Quelles fonctions 
> du shell sont concernées ?
> Les différences les plus flagrantes entre les 2 architectures sont l'absence 
> d'ACPI et de DMI remplacés par devicetree sur arm. Les arm sont souvent des 
> SoC donc les périphériques sont organisés différemment, par exemple des 
> périphériques qu'on trouve habituellement sur le bus PCI comme l'ethernet, la 
> video ou le multimédia peuvent ne pas s'y trouver donc les outils 
> habituellement utilisés sur PC pour identifier le matériel comme lspci ou 
> lshw ne donneront pas les résultats attendus... Tout ce qui concerne l'ACPI 
> et EFI (les interaction avec le firmware) peut poser problème aussi.
> 
> De quel genre de programme s'agit-il ?

Bonjour,

Après que l’utilisateur, qui a décidé d’installer un hôte debian 11 tout seul 
sans mon aide, ait enfin corrigé les problèmes qu’il avait seul causés, le 
logiciel compilé pour aarch64 (voir référence communiquée pour savoir comment 
faire) tourne sans erreur perceptible à ce jour (ex de pb causé : avec apt, en 
laissant le chemin du cdrom dans /etc/apt/sources.list ).

C’est un logiciel d’automatisation qui utilise beaucoup de commandes 
habituelles accessibles après installation avec apt et 
assure le contrôle de flot. Et vérifie en particulier l’état de l’hôte, si les 
paquets requis sont installés et disponibles et les installe si nécessaire.

Toute commande qui tourne sur l’architecture visée doit tourner avec ce 
logiciel qui les appelle.

Question subsidiaire : existe-t-il un outil en CLI pour tester que l’hôte mis à 
disposition par l’utilisateur est correctement configuré ? (Cf. « Les 12-20 
trucs à faire après avoir installé un système debian »). 
> 
> @+
> Hugues
> 
 Le 3 mai 2023 à 09:40, didier gaumet didier.gau...@gmail.com a écrit :
 
 Le mercredi 03 mai 2023 à 03:18 +0200, roger.tar...@free.fr a écrit :
 [...]
 
> Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la
> cross-compilation ?
 
 Je n'y connais rien vu que je ne construis pas/plus d'exécutables et 
 encore moins par cross-compilation mais le wiki Debian a un article sur 
 les différentes possibilités et bonnes pratiques de cross-compilation en 
 environnement Debian:
 https://wiki.debian.org/CrossCompiling


publickey - hlarrive@pm.me - 0xE9429B87.asc
Description: Binary data


signature.asc
Description: Binary data


Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-05 Par sujet Hugues Larrive
Bonjour,

--- Original Message ---
Le mercredi 3 mai 2023 à 22:33, RogerT  a écrit :
>
>
> je reformule : il y a des problèmes sur aarch64 INEXISTANTS sur x86_64
>
> > Le 3 mai 2023 à 20:09, RogerT roger.tar...@free.fr a écrit :
> >
> > Ça a compilé.
> > Ça tourne sur architecture aarch64.
> >
> > Mais il y a des problèmes avec certaines dépendances à des fonctions du 
> > shell ou à systemd (inexistantes sur x86_64) que je dois régler.
> >

Quels sont les problèmes ? Y a-t-il des messages d'erreur ? Quelles fonctions 
du shell sont concernées ?

Les différences les plus flagrantes entre les 2 architectures sont l'absence 
d'ACPI et de DMI remplacés par devicetree sur arm. Les arm sont souvent des SoC 
donc les périphériques sont organisés différemment, par exemple des 
périphériques qu'on trouve habituellement sur le bus PCI comme l'ethernet, la 
video ou le multimédia peuvent ne pas s'y trouver donc les outils 
habituellement utilisés sur PC pour identifier le matériel comme lspci ou lshw 
ne donneront pas les résultats attendus... Tout ce qui concerne l'ACPI et EFI 
(les interaction avec le firmware) peut poser problème aussi.

De quel genre de programme s'agit-il ?

@+
Hugues

> > > Le 3 mai 2023 à 09:40, didier gaumet didier.gau...@gmail.com a écrit :
> > >
> > > Le mercredi 03 mai 2023 à 03:18 +0200, roger.tar...@free.fr a écrit :
> > > [...]
> > >
> > > > Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la
> > > > cross-compilation ?
> > >
> > > Je n'y connais rien vu que je ne construis pas/plus d'exécutables et 
> > > encore moins par cross-compilation mais le wiki Debian a un article sur 
> > > les différentes possibilités et bonnes pratiques de cross-compilation en 
> > > environnement Debian:
> > > https://wiki.debian.org/CrossCompiling

publickey - hlarrive@pm.me - 0xE9429B87.asc
Description: application/pgp-keys


signature.asc
Description: OpenPGP digital signature


Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-03 Par sujet RogerT
je reformule : il y a des problèmes sur aarch64 INEXISTANTS sur x86_64

> Le 3 mai 2023 à 20:09, RogerT  a écrit :
> 
> Ça a compilé. 
> Ça tourne sur architecture aarch64. 
> 
> Mais il y a des problèmes avec certaines dépendances à des fonctions du shell 
> ou à systemd (inexistantes sur x86_64) que je dois régler.
> 
> 
>> Le 3 mai 2023 à 09:40, didier gaumet  a écrit :
>> 
>> Le mercredi 03 mai 2023 à 03:18 +0200, roger.tar...@free.fr a écrit :
>> [...]
>>> Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la
>>> cross-compilation ?
>> 
>> Je n'y connais rien vu que je ne construis pas/plus d'exécutables et encore 
>> moins par cross-compilation mais le wiki Debian a un article sur les 
>> différentes possibilités et bonnes pratiques de cross-compilation en 
>> environnement Debian:
>> https://wiki.debian.org/CrossCompiling
>> 
>> 



Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-03 Par sujet RogerT
Ça a compilé. 
Ça tourne sur architecture aarch64. 

Mais il y a des problèmes avec certaines dépendances à des fonctions du shell 
ou à systemd (inexistantes sur x86_64) que je dois régler.


> Le 3 mai 2023 à 09:40, didier gaumet  a écrit :
> 
> Le mercredi 03 mai 2023 à 03:18 +0200, roger.tar...@free.fr a écrit :
> [...]
> > Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la
> > cross-compilation ?
> 
> Je n'y connais rien vu que je ne construis pas/plus d'exécutables et encore 
> moins par cross-compilation mais le wiki Debian a un article sur les 
> différentes possibilités et bonnes pratiques de cross-compilation en 
> environnement Debian:
> https://wiki.debian.org/CrossCompiling
> 
> 



Re: Re : Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-03 Par sujet didier gaumet

Le mercredi 03 mai 2023 à 03:18 +0200, roger.tar...@free.fr a écrit :
[...]
> Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la
> cross-compilation ?

Je n'y connais rien vu que je ne construis pas/plus d'exécutables et 
encore moins par cross-compilation mais le wiki Debian a un article sur 
les différentes possibilités et bonnes pratiques de cross-compilation en 
environnement Debian:

https://wiki.debian.org/CrossCompiling




Re: Re : Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet roger . tarani
Oui, en effet.

Installer un cross-compilateur :
$ sudo apt install gcc make gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu

Compiler pour aarch64 un pgm helloworld.c :
$ aarch64-linux-gnu-gcc helloworld.c -o helloworld-aarch64 -static

Voir 
https://jensd.be/1126/linux/cross-compiling-for-arm-or-aarch64-on-debian-or-ubuntu

J'ai envoyé à l'utilisateur un fichier cross-compilé pour aarch64 (depuis un 
hôte x86_64) pour savoir si ça s'exécute.
A suivre.

Est-ce aussi simple que ça ou y a-t-il des pièges sournois dans la 
cross-compilation ?


- Mail original -
De: "didier gaumet" 
À: "Liste Debian" 
Envoyé: Mardi 2 Mai 2023 20:14:55
Objet: Re: Re : Re: Problème pour servir à un exécutable sa dépendance à 
libc.so.6 (debian 11)

Le 02/05/2023 à 15:23, Hugues Larrive a écrit :
> --- Original Message ---
> Le mardi 2 mai 2023 à 13:11, Bernard Schoenacker 
>  a écrit :
> 
> 
>> Je crois qu'on chauffe.
>> L'hôte est une VM Parallels et il me revient qu'elle pourrait être une 
>> machine multiarchitecture...
> 
> Parallels c'est de la virtualisation pour Mac donc sur les systèmes actuels 
> (apple silicon) l'OS invité est en architecture ARM (aarch64).
> 
> Dans ce cas 2 possibilités :
> - utiliser une version du programme compilée pour cette architecture s'il en 
> existe ou que le source est disponible ;
> - multi-arch.
> 
> @+
> Hugues

Ah, là, je crois que ton intervention va permettre de clarifier la 
situation vite et bein :-)
(moi j'avais même pas tilté que Parallels c'est pour Mac et que les Mac 
ont maintenant des puces arm64)



Re: Re : Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet didier gaumet

Le 02/05/2023 à 15:23, Hugues Larrive a écrit :

--- Original Message ---
Le mardi 2 mai 2023 à 13:11, Bernard Schoenacker  
a écrit :



Je crois qu'on chauffe.
L'hôte est une VM Parallels et il me revient qu'elle pourrait être une machine 
multiarchitecture...


Parallels c'est de la virtualisation pour Mac donc sur les systèmes actuels 
(apple silicon) l'OS invité est en architecture ARM (aarch64).

Dans ce cas 2 possibilités :
- utiliser une version du programme compilée pour cette architecture s'il en 
existe ou que le source est disponible ;
- multi-arch.

@+
Hugues


Ah, là, je crois que ton intervention va permettre de clarifier la 
situation vite et bein :-)
(moi j'avais même pas tilté que Parallels c'est pour Mac et que les Mac 
ont maintenant des puces arm64)




Re : Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet Hugues Larrive
--- Original Message ---
Le mardi 2 mai 2023 à 13:11, Bernard Schoenacker  
a écrit :


> Je crois qu'on chauffe.
> L'hôte est une VM Parallels et il me revient qu'elle pourrait être une 
> machine multiarchitecture...

Parallels c'est de la virtualisation pour Mac donc sur les systèmes actuels 
(apple silicon) l'OS invité est en architecture ARM (aarch64).

Dans ce cas 2 possibilités :
- utiliser une version du programme compilée pour cette architecture s'il en 
existe ou que le source est disponible ;
- multi-arch.

@+
Hugues 


publickey - hlarrive@pm.me - 0xE9429B87.asc
Description: application/pgp-keys


signature.asc
Description: OpenPGP digital signature


Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet Bernard Schoenacker



- Mail original -
De: "roger tarani" 
À: "Liste Debian" 
Envoyé: Mardi 2 Mai 2023 11:08:39
Objet: Re: Problème pour servir à un exécutable sa dépendance à libc.so.6  
(debian 11)

Je crois qu'on chauffe.
L'hôte est une VM Parallels et il me revient qu'elle pourrait être une machine 
multiarchitecture...
Je crois avoir vu ça dans le résultat d'une commande.
Je n'y suis pas habitué. Et j'ai toujours installé des OS debian 64 bits.

Quelle serait la commande qui permet de savoir exactement s'il y a une 
multiarchitecture (qui aurait trompé apt) ?
(je ne crois pas que ce soit lscpu ni hostnamectl)

apt policy libc6 ?

Rappel : je ne peux pas tâtonner auprès de l'utilisateur en lui demandant de 
saisir de nombreuses commandes. Il doit entrer une commande pour diagnostiquer 
et une commande pour traiter le pb.

Merci. 

Bonjour Roger,

L'instruction la plus adaptée :

dpkg -l |awk '/libc6/ {print $2,$3}'

vérification de la disponibilité des paquets libc6 par rapport à la version 
installée

apt-cache show $(dpkg -l |awk '/libc6/ {print $2}') |grep Filename

pour le fichier sources.list :

deb [trusted=Yes, arch=amd64,i386] https://deb.debian.org/debian-security/ 
stable-security main contrib non-free non-free-firmware

il est également possible d'exclure les architectures (exemple) :

deb [trusted=Yes, arch=amd64,i386 arch-=armel,arm32]  
https://deb.debian.org/debian-security/ stable-security main contrib non-free 
non-free-firmware

Remarque : consulter la doc du manuel concernant le fichier sources.list

https://manpages.debian.org/jessie/apt/sources.list.5.en.html

pour télécharger un paquet à la main, prendre le fichier sources.list (URLs) :

https://deb.debian.org/debian-security

le dépôt du paquet :

pool/main/g/glibc/libc6-dev_2.36-9_amd64.deb


raccrocher les wagons :

https://deb.debian.org/debian-securitypool/main/g/glibc/libc6-dev_2.36-9_amd64.deb

et employer wget :

wget -c -O ~/Téléchargements/libc6-dev_2.36-9_amd64.deb 
https://deb.debian.org/debian-securitypool/main/g/glibc/libc6-dev_2.36-9_amd64.deb

cd ~/Téléchargements

sudo apt install -y ./libc6-dev_2.36-9_amd64.deb

attention, c'est un exemple

Merci pour ton aimable attention

Bien à toi

Bernard



Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet didier gaumet
Le mardi 02 mai 2023 à 11:08 +0200, roger.tar...@free.fr a écrit :
> Je crois qu'on chauffe.
> L'hôte est une VM Parallels et il me revient qu'elle pourrait être
> une machine multiarchitecture...
> Je crois avoir vu ça dans le résultat d'une commande.
> Je n'y suis pas habitué. Et j'ai toujours installé des OS debian 64
> bits.
> 
> Quelle serait la commande qui permet de savoir exactement s'il y a
> une multiarchitecture (qui aurait trompé apt) ?

(je suis en pur amd64, pas multiarch)
didier@hp-notebook14:~$ dpkg --print-architecture
amd64

> (je ne crois pas que ce soit lscpu ni hostnamectl)
> 
> apt policy libc6 ?

dans mon cas ça ne montre pas l'architecture i386 vu que je suis en pur
amd64 mais je suppose que les deux (32 et 64 bits) aparaîtraient dans
les paquets candidats

didier@hp-notebook14:~$ apt policy libc6
libc6:
  Installé : 2.31-13+deb11u6
  Candidat : 2.31-13+deb11u6
 Table de version :
 *** 2.31-13+deb11u6 500
500 http://deb.debian.org/debian bullseye/main amd64 Packages
100 /var/lib/dpkg/status
 2.31-13+deb11u5 500
500 http://deb.debian.org/debian bullseye-updates/main amd64
Packages

tu peux aussi passer par dpkg:
didier@hp-notebook14:~$ dpkg -l libc6*
Souhait=inconnU/Installé/suppRimé/Purgé/H=à garder
| État=Non/Installé/fichier-Config/dépaqUeté/échec-conFig/H=semi-
installé/W=attend-traitement-déclenchements
|/ Err?=(aucune)/besoin Réinstallation (État,Err: majuscule=mauvais)
||/ Nom   Version Architecture Description
+++-=-===--
=
ii  libc6:amd64   2.31-13+deb11u6 amd64GNU C Library:
Shared libraries
un  libc6-amd64(aucune
description n'est disponible)
ii  libc6-dev:amd64   2.31-13+deb11u6 amd64GNU C Library:
Development Libraries and Header Files
un  libc6-dev-amd64-cross  (aucune
description n'est disponible)
un  libc6.1(aucune
description n'est disponible)
un  libc6.1-dev(aucune
description n'est disponible)


mais l'intérêt avec apt policy ou dpkg c'est aussi de voir si on n'a
pas une ancienne version d'un programme qui traîne suite à une mise à
jour incomplète d'une version majeure de Debian. Par exemple dans ton
cas, on peut aussi se demander éventuellement si on n'a pas un libc6 en
version 2.28 (Buster) au lieu de 2.31 (Bullseye). Au cas où tu aurais
expréssément cherché sans le trouver un lien vers libc6 2.31, ceci
pourrait expliquer cela.


> Rappel : je ne peux pas tâtonner auprès de l'utilisateur en lui
> demandant de saisir de nombreuses commandes. Il doit entrer une
> commande pour diagnostiquer et une commande pour traiter le pb.
> 
> Merci. 

Là, sans m'immiscer dans ta relation avec ton utilisateur (d'une part
ça ne me regarde pas et de l'autre je ne connais ni la nature de votre
relation ni le contexte dans lequel vous évoluez), je peux quand même
te suggérer d'être coopératif dans ton suppport mais aussi de recadrer
diplomatiquement: si ton utilisateur choisit d'installer et maintenir
lui-même sa distribution, il accepte le cas échéant de porter la
responsabilité d'une distribution trop bancale pour faire tourner une
appli fournie par un tiers dans des conditions d'installations
raisonnables, et accepte donc aussi la responsabilité de devoir
chercher lui-même comment s'en sortir (exemple si il utilise un SGBD
Oracle dont il paie le support *applicatif*, Oracle ne va pas
paramétrer ou réinstaller Debian à sa place si sa distro est bancale
car c'est du support *système*. Enfin c'est comme ça que je vois les
choses, peut-être de manière trop simpliste) 




Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-02 Par sujet roger . tarani
Je crois qu'on chauffe.
L'hôte est une VM Parallels et il me revient qu'elle pourrait être une machine 
multiarchitecture...
Je crois avoir vu ça dans le résultat d'une commande.
Je n'y suis pas habitué. Et j'ai toujours installé des OS debian 64 bits.

Quelle serait la commande qui permet de savoir exactement s'il y a une 
multiarchitecture (qui aurait trompé apt) ?
(je ne crois pas que ce soit lscpu ni hostnamectl)

apt policy libc6 ?

Rappel : je ne peux pas tâtonner auprès de l'utilisateur en lui demandant de 
saisir de nombreuses commandes. Il doit entrer une commande pour diagnostiquer 
et une commande pour traiter le pb.

Merci. 
 
- Mail original -
De: "didier gaumet" 
À: "Liste Debian" 
Envoyé: Mardi 2 Mai 2023 08:21:25
Objet: Re: Problème pour servir à un exécutable sa dépendance à libc.so.6  
(debian 11)

Le mardi 02 mai 2023 à 02:18 +0200, roger.tar...@free.fr a écrit :
> Merci !
> 
> Je n'ai JAMAIS eu besoin d'installer spécifiquement ou de réparer la
> bibliothèque C (libc6) sur un hôte debian.
> 
> L'utilisateur a installé sa debian11 seul à partir d'une image ISO
> récente.
> Je n'ai pas accès à sa machine. Je dois lui proposer une manip
> directe, simple et efficace.
> 
> Je crois comprendre qu'il s'agit d'un problème de dynamic linker.
> Comment répare-t-on l'accès à cette bibliothèque libc qui est
> installée ?
> 
> Question bonus : que peut faire un utilisateur (juste capable de
> recopier des lignes de commande fournies) pour diagnostiquer ce qui a
> pu abîmer ce système ?
> 
> 
> Extrait de mon message initial :
> 
> //
> Sur l'hôte qui pose problème :
> - libc.so.6 est bien présent. Et est donc inaccessible à
> l'exécutable.
> - la commande ldconfig est introuvable. J'attends de savoir si
> /usr/sbin/ldconfig existe... Après vérification, ce fichier existe;
> Peut-être un problème de PATH ?...
> 
> Sur un hôte qui sert correctement libc.so.6 au même exécutable, il y
> a les liens symboliques suivants vers ld-2.31.so :
> 
> lrwxrwxrwx 1 root root 32 Apr 19 23:17 /lib64/ld-linux-x86-64.so.2 ->
> /lib/x86_64-linux-gnu/ld-2.31.so
> 
> -rwxr-xr-x 1 root root 177928 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-
> 2.31.so
> lrwxrwxrwx 1 root root 10 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-
> linux-x86-64.so.2 -> ld-2.31.so
> 
> Cela manque sur l'hôte qui pose problème.
> //

comme les liens en question semblent (si j'ai compris correctement, ce
qui reste encore à prouver) créés par l'installation du paquet libc6, 
https://packages.debian.org/bullseye/amd64/libc6/filelist

c'est pour cela que je proposais:

- de vérifier (commande: apt policy libc6) les versions disponibles
pour installation et installées de libc6.
Un exemple de problème qui pourrait survenir: que ton utilisateur se
serve de multiarch; bien que l'hôte problématique soit en architecture
amd64, il suffisait par le passé que la double architecture (multiarch)
amd64+x86 soit paramétrée pour que parfois apt soit complètement perdu
et cherche à remplacer/installer des exécutables uniquement en 32 bits
(même si les deux architectures de ces exécutables existent) sur un
système 32+64 bits. Et parfois du coup ça ne marchait plus.

- de réinstallet (sudo apt reinstall libc6) ou reparamétrer (sudo dpkg-
reconfigure libc6). En cas de multiarch il faut spécifier le paramètre
-a=architecture pour apt et un dpkg-reconfigure ne suffit pas si seule
la version 32 bits de libc6 est insyallé: il faut réinstaller la
version 64 bits.

Mais je t'emmène peut-être sur une fausse piste, et même si cette piste
était en partie judicieuse, peut-être mon exposé serait-il faux quant
aux conséquences que j'évoque, hein, donc je t'encourage quoiqu'il en
soit à pendre en compte les suggestions de Jean-Michel dans son message
:-)



Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-01 Par sujet didier gaumet
Le mardi 02 mai 2023 à 02:18 +0200, roger.tar...@free.fr a écrit :
> Merci !
> 
> Je n'ai JAMAIS eu besoin d'installer spécifiquement ou de réparer la
> bibliothèque C (libc6) sur un hôte debian.
> 
> L'utilisateur a installé sa debian11 seul à partir d'une image ISO
> récente.
> Je n'ai pas accès à sa machine. Je dois lui proposer une manip
> directe, simple et efficace.
> 
> Je crois comprendre qu'il s'agit d'un problème de dynamic linker.
> Comment répare-t-on l'accès à cette bibliothèque libc qui est
> installée ?
> 
> Question bonus : que peut faire un utilisateur (juste capable de
> recopier des lignes de commande fournies) pour diagnostiquer ce qui a
> pu abîmer ce système ?
> 
> 
> Extrait de mon message initial :
> 
> //
> Sur l'hôte qui pose problème :
> - libc.so.6 est bien présent. Et est donc inaccessible à
> l'exécutable.
> - la commande ldconfig est introuvable. J'attends de savoir si
> /usr/sbin/ldconfig existe... Après vérification, ce fichier existe;
> Peut-être un problème de PATH ?...
> 
> Sur un hôte qui sert correctement libc.so.6 au même exécutable, il y
> a les liens symboliques suivants vers ld-2.31.so :
> 
> lrwxrwxrwx 1 root root 32 Apr 19 23:17 /lib64/ld-linux-x86-64.so.2 ->
> /lib/x86_64-linux-gnu/ld-2.31.so
> 
> -rwxr-xr-x 1 root root 177928 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-
> 2.31.so
> lrwxrwxrwx 1 root root 10 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-
> linux-x86-64.so.2 -> ld-2.31.so
> 
> Cela manque sur l'hôte qui pose problème.
> //

comme les liens en question semblent (si j'ai compris correctement, ce
qui reste encore à prouver) créés par l'installation du paquet libc6, 
https://packages.debian.org/bullseye/amd64/libc6/filelist

c'est pour cela que je proposais:

- de vérifier (commande: apt policy libc6) les versions disponibles
pour installation et installées de libc6.
Un exemple de problème qui pourrait survenir: que ton utilisateur se
serve de multiarch; bien que l'hôte problématique soit en architecture
amd64, il suffisait par le passé que la double architecture (multiarch)
amd64+x86 soit paramétrée pour que parfois apt soit complètement perdu
et cherche à remplacer/installer des exécutables uniquement en 32 bits
(même si les deux architectures de ces exécutables existent) sur un
système 32+64 bits. Et parfois du coup ça ne marchait plus.

- de réinstallet (sudo apt reinstall libc6) ou reparamétrer (sudo dpkg-
reconfigure libc6). En cas de multiarch il faut spécifier le paramètre
-a=architecture pour apt et un dpkg-reconfigure ne suffit pas si seule
la version 32 bits de libc6 est insyallé: il faut réinstaller la
version 64 bits.

Mais je t'emmène peut-être sur une fausse piste, et même si cette piste
était en partie judicieuse, peut-être mon exposé serait-il faux quant
aux conséquences que j'évoque, hein, donc je t'encourage quoiqu'il en
soit à pendre en compte les suggestions de Jean-Michel dans son message
:-) 




Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-01 Par sujet roger . tarani
Merci !

Je n'ai JAMAIS eu besoin d'installer spécifiquement ou de réparer la 
bibliothèque C (libc6) sur un hôte debian.

L'utilisateur a installé sa debian11 seul à partir d'une image ISO récente.
Je n'ai pas accès à sa machine. Je dois lui proposer une manip directe, simple 
et efficace.

Je crois comprendre qu'il s'agit d'un problème de dynamic linker.
Comment répare-t-on l'accès à cette bibliothèque libc qui est installée ?

Question bonus : que peut faire un utilisateur (juste capable de recopier des 
lignes de commande fournies) pour diagnostiquer ce qui a pu abîmer ce système ?


Extrait de mon message initial :

//
Sur l'hôte qui pose problème :
- libc.so.6 est bien présent. Et est donc inaccessible à l'exécutable.
- la commande ldconfig est introuvable. J'attends de savoir si 
/usr/sbin/ldconfig existe... Après vérification, ce fichier existe; Peut-être 
un problème de PATH ?...

Sur un hôte qui sert correctement libc.so.6 au même exécutable, il y a les 
liens symboliques suivants vers ld-2.31.so :

lrwxrwxrwx 1 root root 32 Apr 19 23:17 /lib64/ld-linux-x86-64.so.2 -> 
/lib/x86_64-linux-gnu/ld-2.31.so

-rwxr-xr-x 1 root root 177928 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-2.31.so
lrwxrwxrwx 1 root root 10 Apr 19 23:17 
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -> ld-2.31.so

Cela manque sur l'hôte qui pose problème.
//

- Mail original -
De: "didier gaumet" 
À: "Liste Debian" 
Envoyé: Lundi 1 Mai 2023 10:31:09
Objet: Re: Fwd: Problème pour servir à un exécutable sa dépendance à libc.so.6  
(debian 11)

Bonjour,

je réponds juste pour que tu ne te sentes pas tout seul mais mes
compétences sur le sujet ne me permettent pas de t'apporter une
contribution pertinente ;-)

quelques points hypothétiquement à surveiller:
- peut-être reconfigurer ou réinstaller libc6 sur le poste qui pose
problème puique les liens que tu cites semblent créés par ce paquet
- faire un apt policy libc6 pour vérifier les versions disponibles et
installées sur ce poste
- peut-être vérifier si quelqu'un a joué avec Apparmor ou SElinux sur
ce poste

t'es pas beaucoup plus avancé, je t'avais prévenu ;-)



Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-01 Par sujet RogerT
Bonsoir,

Le message d’erreur est :
1 : ELF not founded 
1 : Syntax error : Unterminated quoted string

On retrouve beaucoup de discussions sur les forums stackoverflow, etc. à ce 
propos (défaut d’une bibliothèque ; dissuasion de lier le so à l’exécutable, 
etc. )

Mais je n’ai pas trouvé de mode opératoire clair et simple pour régler ça de 
manière régulière, cad sans effet de bord connu ou caché. 

Je veux éviter de fabriquer des liens symboliques qui pourraient régler 
temporairement le problème avant de disparaître car la cause du problème aurait 
été oubliée. 

Merci. 


> Le 1 mai 2023 à 12:03, Jean-Michel OLTRA  a écrit :
> 
>Bonjour,
> 
> 
> Le dimanche 30 avril 2023, roger.tar...@free.fr a écrit...
> 
> 
>> Sur l'hôte qui pose problème : 
>> - libc.so.6 est bien présent. Et est donc inaccessible à l'exécutable.
> 
> Bizarre, car un paquet de binaires sont liés à libc6.
> Tu peux faire, par exemple : `ldd /usr/bin/ps`
> 
> Et quand tu dis "inaccessible", finalement, ça se manifeste comment ?
> 
> Tu pourrais utiliser strace pour tenter de voir ce qui est attendu, et pas
> résolu ?
> 
> -- 
> jm



Re: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-01 Par sujet Jean-Michel OLTRA


Bonjour,


Le dimanche 30 avril 2023, roger.tar...@free.fr a écrit...


> Sur l'hôte qui pose problème : 
> - libc.so.6 est bien présent. Et est donc inaccessible à l'exécutable. 

Bizarre, car un paquet de binaires sont liés à libc6.
Tu peux faire, par exemple : `ldd /usr/bin/ps`

Et quand tu dis "inaccessible", finalement, ça se manifeste comment ?

Tu pourrais utiliser strace pour tenter de voir ce qui est attendu, et pas
résolu ?

-- 
jm



Re: Fwd: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-05-01 Par sujet didier gaumet
Bonjour,

je réponds juste pour que tu ne te sentes pas tout seul mais mes
compétences sur le sujet ne me permettent pas de t'apporter une
contribution pertinente ;-)

quelques points hypothétiquement à surveiller:
- peut-être reconfigurer ou réinstaller libc6 sur le poste qui pose
problème puique les liens que tu cites semblent créés par ce paquet
- faire un apt policy libc6 pour vérifier les versions disponibles et
installées sur ce poste
- peut-être vérifier si quelqu'un a joué avec Apparmor ou SElinux sur
ce poste

t'es pas beaucoup plus avancé, je t'avais prévenu ;-)




Fwd: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-04-30 Par sujet roger . tarani
Je corrige : il s'agit plutôt du dynamic _linker_ (et non dynamic loader). 

Pour régler le problème décrit, il s'agirait peut-être de rendre disponible 
/lib64/ld-linux-x86-64.so. 
Qu'en pensez-vous ? 



Quant à linux-vdso.so (virtual symbolic link to the bitness-compatible ; vDSO = 
virtual dynamic shared object), je ne sais pas en dire grand chose 
(diagnostiquer/corriger) 


https://man7.org/linux/man-pages/man7/vdso.7.html 


De: "roger tarani"  
À: "Liste Debian"  
Envoyé: Dimanche 30 Avril 2023 13:53:36 
Objet: Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 
11) 

Bonjour, 

J'ai un problème pour faire fonctionner un programme (truc) qui a une 
dépendance à libc (à libc.so.6). 

Il fonctionne sans problème sur 6 hôtes debian11 sur lesquels je l'ai testé. 
Sans besoin d'utiliser LD_LIBRARY_PATH. 

Il ne fonctionne pas sur l'hôte debian11 configuré de zéro par un utilisateur 
peu coopératif qui attend que "ça marche tout seul" sans se poser de telles 
questions. 

Voici les dépendances de l'exécutable 
$ ldd truc 
linux-vdso.so.1 (0x7ffef8f73000) 
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x7f4f87607000) 
/lib64/ld-linux-x86-64.so.2 (0x7f4f87813000) 

L'hôte (Architecture : x86_64) et l'exécutable (En-tête ELF: Classe: ELF64) 
sont en 64 bits... 

Sur l'hôte qui pose problème : 
- libc.so.6 est bien présent. Et est donc inaccessible à l'exécutable. 
- la commande ldconfig est introuvable. J'attends de savoir si 
/usr/sbin/ldconfig existe. 

Sur un hôte qui sert correctement libc.so.6 au même exécutable, il y a les 
liens symboliques suivants vers ld-2.31.so 

lrwxrwxrwx 1 root root 32 Apr 19 23:17 /lib64/ld-linux-x86-64.so.2 -> 
/lib/x86_64-linux-gnu/ld-2.31.so 

-rwxr-xr-x 1 root root 177928 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-2.31.so 
lrwxrwxrwx 1 root root 10 Apr 19 23:17 
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -> ld-2.31.so 

Cela manque sur l'hôte qui pose problème. 

Je n'ai JAMAIS eu besoin de gérer cette dépendance occasionnelle du point de 
vue de l'utilisateur. 

Peut-être qu'installer gcc réglerait le problème ou utiliser un 'dpkg 
reconfigure' ou créer à la main un lien symbolique. 
Je crains de m'égarer en ne respectant pas la manière de faire ça sur un hôte 
debian (cad configurer et utiliser le dynamic loader, si j'ai bien compris). 

Comment traiter _propremement_ ce problème ? 

Merci. 



Problème pour servir à un exécutable sa dépendance à libc.so.6 (debian 11)

2023-04-30 Par sujet roger . tarani
Bonjour, 

J'ai un problème pour faire fonctionner un programme (truc) qui a une 
dépendance à libc (à libc.so.6). 

Il fonctionne sans problème sur 6 hôtes debian11 sur lesquels je l'ai testé. 
Sans besoin d'utiliser LD_LIBRARY_PATH. 

Il ne fonctionne pas sur l'hôte debian11 configuré de zéro par un utilisateur 
peu coopératif qui attend que "ça marche tout seul" sans se poser de telles 
questions. 

Voici les dépendances de l'exécutable 
$ ldd truc 
linux-vdso.so.1 (0x7ffef8f73000) 
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x7f4f87607000) 
/lib64/ld-linux-x86-64.so.2 (0x7f4f87813000) 

L'hôte (Architecture : x86_64) et l'exécutable (En-tête ELF: Classe: ELF64) 
sont en 64 bits... 

Sur l'hôte qui pose problème : 
- libc.so.6 est bien présent. Et est donc inaccessible à l'exécutable. 
- la commande ldconfig est introuvable. J'attends de savoir si 
/usr/sbin/ldconfig existe. 

Sur un hôte qui sert correctement libc.so.6 au même exécutable, il y a les 
liens symboliques suivants vers ld-2.31.so 

lrwxrwxrwx 1 root root 32 Apr 19 23:17 /lib64/ld-linux-x86-64.so.2 -> 
/lib/x86_64-linux-gnu/ld-2.31.so 

-rwxr-xr-x 1 root root 177928 Apr 19 23:17 /lib/x86_64-linux-gnu/ld-2.31.so 
lrwxrwxrwx 1 root root 10 Apr 19 23:17 
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 -> ld-2.31.so 

Cela manque sur l'hôte qui pose problème. 

Je n'ai JAMAIS eu besoin de gérer cette dépendance occasionnelle du point de 
vue de l'utilisateur. 

Peut-être qu'installer gcc réglerait le problème ou utiliser un 'dpkg 
reconfigure' ou créer à la main un lien symbolique. 
Je crains de m'égarer en ne respectant pas la manière de faire ça sur un hôte 
debian (cad configurer et utiliser le dynamic loader, si j'ai bien compris). 

Comment traiter _propremement_ ce problème ? 

Merci.