Vient de passer à la version 18.04, et quand je lance Sudo apt update
, il se plaint:
/usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so: symbol gnutls_pkcs11_privkey_init version GNUTLS_3_4 not defined in file libgnutls.so.30 with link time reference Failed to load module: /usr/lib/x86_64-linux-gnu/gio/modules/libgiognutls.so
Info plus ancienne:
Lancer gio version
donne: 2.53.6
Lancer gntls-cli -v
donne: gnutls-cli 3.5.8
Autant que je sache, cela signifie que apt-get
veut utiliser GNUTLS version 3.4
, quand j'ai 3.5.8
.
Toute idée sur la façon de procéder serait appréciée. Je soupçonne que cela n’a peut-être pas résolu correctement les dépendances lors de la mise à niveau de distributions ou lorsqu’il tente de mettre à jour à partir de mauvais référentiels.
Fait intéressant, je reçois la même erreur lors de l’ouverture d’Octave ( https://www.gnu.org/software/octave/ ).
Ajouté en réponse au commentaire:
apt-cache policy libgnutls30
dit:
libgnutls30:
Installed: 3.5.18-1ubuntu1
Candidate: 3.5.18-1ubuntu1
Version table:
*** 3.5.18-1ubuntu1 500
500 http://us.archive.ubuntu.com/ubuntu bionic/main AMD64 Packages
100 /var/lib/dpkg/status
/usr/lib/x86_64-linux-gnu/libgnutls.so.30
pointe sur libgnutls.so.30.14.10
pour moi
nm -D /usr/lib/x86_64-linux-gnu/libgnutls.so.30 | grep GNUTLS_3
imprime 0000000000000000 A GNUTLS_3_4
Voici comment j'ai résolu le problème. Notez que cela a semblé un peu dangereux à la fin, donc une approche plus sûre dans une autre réponse ou dans des commentaires serait appréciée.
J'ai découvert qu'il existe deux versions de libgnutls.so.30
sur mon système, une dans /usr/lib/x86_64-linux-gnu
et l'autre dans /usr/local/lib/
.
L'exécution de nm -gC
et readelf -sW
avec grep
sur ces fichiers montre que le premier contient le symbole en question et le second pas. Cela me porte à croire que la copie incorrecte de gnutls
est en cours de chargement au moment de l'exécution.
Le fichier dans /usr/lib/x86_64-linux-gnu
est un lien vers libgnutls.so.30.14.10
et celui dans /usr/local/lib/x86_64-linux-gnu
est un lien vers libgnutls.so.30.13.1
.
Confirmation: L'exécution de ldd
sur libgiognutls
montre que la tentative de liaison à la version /usr/local/lib
a été tentée.
Confirmation supplémentaire: La modification de LD_LIBRARY_PATH
n'a pas fonctionné. En parcourant la page de manuel ld.so
, vous constaterez que c'est probablement dû au fait que certains privilèges élevés sont atteints au moment de l'appel de ld.so.
Faire Sudo su
puis changer LD_LIBRARY_PATH
. À ce stade, je suis convaincu que ce sont les priorités des liens des deux versions de libgnutls
name__.
Résolu: je viens de faire un acte de foi et de lier le fichier /usr/local/lib/libgnutls.so
au fichier /usr/lib/x86_64-linux-gnu/libgnutls.so
, ainsi que les versions .30
. Jusqu'à présent, rien n'a été rompu et les messages d'erreur ont disparu.