Comment résoudre une erreur «Impossible d'ouvrir le fichier d'objets partagés libudev.so.0»?

81

Essayer de lancer Game Dev Tycoon sur Ubuntu 64. Il demande l’objet ci-dessus.

J'ai couru sudo apt-get install libudev1:i386et il est revenu déjà installé.

J'ai /lib/i386-linux-gnu/libudev.so.1mais pas libudev.so.0n'importe où.

senshikaze
la source
1
Cela s'est produit lors de la tentative d'installation de la nouvelle version de Popcorntime sur Mint Petra 16
igorsantos07

Réponses:

27

Pour Ubuntu 64 bits, il se trouve dans le paquetage libudev0 32 bits.

Vous pouvez l'installer avec la commande suivante:

sudo apt-get install libudev0:i386

Ce paquet a été retiré d'Ubuntu en 14.04. Vous devrez l'installer à partir d'une version plus ancienne.

Sean
la source
3
aucun paquet trouvé en essayant de chercher libudev0: i386 des idées?
Jonathan
26
J'ai fini par faire sudo apt-get install libudev1: i386 puis sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong
J'ai dû entrer cette commande pour que google-webdesigner soit installé sur Debian 64 bits
HoboBen
2
Veuillez installer l'ancienne version à partir d'ici: packages.ubuntu.com/precise/libudev0
rubo77
Le package libudev0 n'est pas disponible, mais est désigné par un autre package. Cela peut signifier que le paquet est manquant, obsolète ou disponible uniquement auprès d'une autre source
Aaron Franke
199

Pour résoudre ce problème, j'ai lié libudev.so.1à libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
senshikaze
la source
25
pour 64 bits: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu
10
S'il vous plaît ne faites pas cela. C'est seulement demander des problèmes.
Dobey
1
Cela a gâché Plex Home Theatre pour moi, pour supprimer, supprimer le lien symbolique libudev.so.0 et réinstaller libudev0: i386
Johan Bjäreholt
2
Sur 32 bits, il s'agit de la commande (au cas où quelqu'un sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
serait
6
Écoutez dobey, c'est une procédure compliquée. Ryan Crichton a posté la bonne façon de le faire ICI .
berbt
55

Pour Ubuntu 14.04 et plus

La méthode la plus simple que j'ai trouvée consistait simplement à télécharger le fichier .deb ( lien direct vers les téléchargements 64 bits et 32 bits ) et à double-cliquer dessus pour l'installer ou à l'aide de dpkg pour l'installer:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Pour les versions précédentes

Dans les versions précédentes d’ubuntu, ce paquet était disponible dans les dépôts officiels. Vous pouvez installer avec les éléments suivants:

sudo apt-get install libudev0:i386
Ryan Crichton
la source
17
C'EST LA BONNE RÉPONSE . Si un paquet est manquant, vous l'installez ... c'est aussi simple que cela. Créer des liens, éditer des noms au format hexadécimal, reconfigurer Google Chrome, marteler le processeur et renifler de la poudre de piment ne sont pas de vraies solutions.
berbt
2
Mais cela ne fonctionne que si ce paquet est disponible.
Tamsyn Michael
1
@TamsynMichael le paquet n'a pas besoin d'être disponible dans les dépôts, vous pouvez le télécharger à partir du lien ci-dessus, puis l'installer manuellement sur les versions d'ubuntu qui n'ont pas le paquet disponible dans leurs dépôts officiels.
Ryan Crichton
Cela devrait être la bonne réponse! c'est la solution appropriée, pas de liens symboliques en désordre ou quoi que ce soit
lord-ralf-adolf
C'est la méthode la plus simple que je puisse trouver. Ajouter une dépendance plus ancienne au référentiel est une douleur
denny
32

J'ai eu le même problème pour un programme différent, mais la réponse acceptée par Sean ne m'a pas aidé du tout. Sur mon installation mise à niveau de la version 13.04 64 bits, libudev0 n'est disponible ni sous la forme 64 bits ni sous la forme i386. Et ia32-libs est déjà installé. Donc pas de dés.

Ce que je devais faire était une version légèrement modifiée de la solution plus technique de senshikaze. J'ai manuellement lié symboliquement libudev.so.0 à libudev.so.1 dans le répertoire lib x86_64, ainsi:

cd /lib/x86_64-linux-gnu/
sudo ln -sf libudev.so.1 libudev.so.0

Cela a résolu le problème pour moi.

Falaise
la source
Cela a également résolu le problème pour moi: exécuter Ubuntu 15.04 64 bits. Merci beaucoup.
Tamsyn Michael
Fixé sur Ubuntu 19.04
Alexander Haroldo da Rocha
5

Cette erreur peut se produire lorsque vous essayez d'utiliser le fichier exécutable nw à partir de Node Webkit . Comme ça:

./nw: error while loading shared libraries: libudev.so.0: cannot open shared object file: No such file or directory

Comment résoudre:

  1. Obtenez éditeur hexadécimal qui vous permet de changer la chaîne ASCII du binaire, par exemple. hexedit :

    • Dans la borne ( Ctrl+ Alt+ T), exécutez: sudo apt-get install hexedit.
    • Suivez les instructions présentées dans le terminal (entrez un mot de passe si nécessaire, confirmez l'installation).
  2. Aller au répertoire avec noeud webkit :
    • Dans mon cas: cd ~/Dokumenty/node-webkit-*.
  3. Ouvrez nw binary à l'aide de la commande éditeur hexagonal précédée de sudo:
    • Run: sudo hexedit nw.
  4. Rechercher libudev.so.0comme chaîne ASCII:
    • Si vous utilisez hexedit : Appuyez sur Tab.
    • Appuyez sur Ctrl+ S.
    • Type: libudev.so.0.
  5. Changer 0dans la libudev.so.0chaîne en 1, alors ça devient libudev.so.1::
    • Utilisez les touches fléchées pour sélectionner 0dans la libudev.so.0chaîne.
    • Appuyez 1sur le clavier.
  6. Quittez et enregistrez les modifications.
    • Appuyez sur Ctrl+ X.
    • Appuyez sur Ypour enregistrer les modifications.

Vous avez terminé. Cela corrige également le problème avec le binaire Atraci lorsque vous suivez les mêmes instructions, à l'exception de l'édition hexadécimale du fichier Atraci au lieu de nw.

Daniel Kmak
la source
2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwet ensuite vous pouvez l'exécuter, pas besoin d'installer quoi que ce soit
Catalyst
4

La seule réponse qui fonctionne ici sur Ubuntu 14.04 est la réponse acceptée, et comme de nombreux commentaires soulignent que cela peut causer des problèmes avec le système à l'avenir (bien que je ne le sache pas moi-même), j'ai proposé un compromis. Ce script vous demandera (dans le terminal) votre mot de passe root. Il créera le lien symbolique et lancera l'application (dans mon cas, l'heure du pop-corn). Lorsque vous quittez l'application, elle utilisera la session sudo existante pour supprimer le lien symbolique:

#!/bin/sh
sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
./Popcorn-Time #replace this line with the path to the executable you want to launch
sudo rm /lib/i386-linux-gnu/libudev.so.0
TenLeftFingers
la source
J'aime cette idée, bien que je me demande s’il est possible d’utiliser la variable d’environnement LD_LIBRARY à la place.
Flimm le
@ Flimm, laissez-moi savoir comment vous vous en sortez.
TenLeftFingers
1
J'ai fini par aller avec cette réponse à la place.
Flimm
4

Je viens de trouver un moyen de faire ce travail, est assez bête.

Google Chrome est installé sur mon système et cet objet partagé est intégré dans Google Chrome. Il me suffisait donc de créer un lien symbolique vers la bibliothèque sur le répertoire d'installation de Chrome.

ln -sf /opt/google/chrome/libudev.so.0 /lib/x86_64-linux-gnu/libudev.so.0

Cela fonctionne très bien pour moi.

nunesvictor
la source
4

C'était la solution la plus simple que j'ai trouvée

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Weston Ganger
la source
2

comme l'a souligné Phil Strong

installer libudev.so.1

sudo apt-get install libudev1:i386

puis reliez-le en tant que libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Zéro
la source
1

Je l'ai fait le 14.04, mais devrait être similaire. supprimez simplement le paquet et réinstallez-le. les bibliothèques correctes sont installées correctement.

apt-get purge google-chrome-stable
apt-get install google-chrome-stable

Je suis sûr que les autres réponses fonctionnent, mais je peux également modifier les objets de système de fichiers gérés par les packages de gestion de la configuration.

Mark Smith
la source
1

C’est ce que j’ai utilisé pour résoudre le même problème sous Ubuntu 15.04 32 bits.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
utilisateur491326
la source
0

UPDATE J'ai créé un script bash pour envelopper le programme que vous voulez exécuter. Vous pouvez l'ajouter à votre dossier bin local et simplement démarrer le programme sans copier / coller ni exécuter de scripts shell.

#!/bin/bash

ProgramToExecute="/PATH/TO/PROGRAM" #Example: $HOME/dart/./DartEditor

system=$(uname -m) #Returns x86_64 on 64 bit systems
libdir="/lib/$system-linux-gnu"
libudev1="$libdir/libudev.so.1"

if [ ! -f $libudev1 ]
then
        #check if an i386 folder exist because ' uname -m' returns i686 instead of i386.
        libdir="/lib/i386-linux-gnu"
        libudev1="$libdir/libudev.so.1"
        #if none of the lookups return a file, this script exits,
        BreakUpNotice="This $libudev1 isn't working out. It's not you
        it's me. Or maybe you forgot to install libudev1 library.
        sudo apt-get install libudev1 "

        [ ! -f $libudev1 ] && echo $BreakUpNotice  && exit 0
fi

libudev0="$libdir/libudev.so.0"

echo "$libudev1 found."
sudo ln -sf $libudev1 $libudev0
sudo -k #revoke sudo 
$($ProgramToExecute)

NoticeAfterExec="Enter sudo to del libudev link (recommended) or press CTRL+C to cancel."
RmSuccess="And $libudev0 link is gone."
RmFailed="Whaat? $libudev0 still exists."

echo $NoticeAfterExec
sudo rm $libudev0
sudo -k
[ ! -f "$libudev0" ]  && echo $RmSuccess || echo $RmFailed
exit 

ANCIENNE RÉPONSE Dans Ubuntu 14.04, le message d'erreur de l'éditeur de fléchettes m'échappait lorsque j'essayais d'utiliser Live Preview (Chromium). L'erreur a été résolue en installant libudev1 et en créant un lien symbolique .

    sudo apt-get install libudev1

J'ai également utilisé le script mentionné ci-dessus par TenLeftFingers pour exécuter DartEditor.

    #!/bin/sh
    sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
    ./DartEditor
    sudo rm /lib/i386-linux-gnu/libudev.so.0

Si l'éditeur de fléchettes ne s'exécute pas, assurez-vous que JAVA est installé et qu'il ne s'agit pas d'un problème d'autorisation.

    sudo apt-get install python-software-properties
    sudo add-apt-repository ppa:webupd8team/java
    sudo apt-get update
    sudo apt-get install oracle-java7-installer

et rendre l'IDE exécutable:

    sudo chmod a+x ./DartEditor

Cela a fonctionné pour moi.

Diaz
la source
0

La même erreur se produisait sur mon système 32 bits après la mise à niveau de Xubuntu Precise vers Trusty. Cela a résolu le problème pour moi:

sudo dpkg-reconfigure google-chrome-stable

Je l'ai trouvé ici . Sans aucun paramètre, je ne sais pas trop comment cela a résolu le problème, mais c'est ce qui s'est passé. Ce que j’ai préféré, c’est que cela n’exigeait rien qui puisse potentiellement me causer des problèmes à l’avenir, ni que je recherche des colis.

non inscrit
la source
-1

Si quelqu'un tombe sur cette page lors de l'exploration du Web pour trouver des correctifs sur libudev.so.0 et l'édition de développement Emotiv Epoc SDK sur Ubuntu, j'espère que les éléments suivants vous aideront:

// ma configuration est 64bits Ubuntu 13.04

Pour un système 64 bits:

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1. /lib/x86_64-linux-gnu/libudev.so.1

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0

ce qui permet d'éviter "l'erreur lors du chargement des bibliothèques partagées: libudev.so.0: mauvaise classe ELF: ELFCLASS32"

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

Pour un système 32 bits:

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1. /lib/i386-linux-gnu/libudev.so.1

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0

ce qui permet d'éviter "l'erreur lors du chargement des bibliothèques partagées: libudev.so.0: classe ELF erronée: ELFCLASS64" (remarque: je suppose, je suis sur un système 64 bits)

sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /usr/lib/libudev.so.0

EmotivControlPanel, EmoKey, EmoComposer, les exemples Java et quelques exemples Qt personnalisés devraient pouvoir être exécutés après avoir effectué la procédure ci-dessus (j'ai déjà essayé toutes les étapes ci-dessus + autres trouvées sur le Web (débordement de pile, ..), mais aucune ne fonctionnait pour moi, alors c’est ce que j’ai fini par faire après quelques essais et erreurs

Dernier point mais non le moindre, si quelqu'un ici sait comment exécuter des programmes compilés avec des bibliothèques 32 bits sur un système 64 bits, tout en spécifiant l'utilisation d'une bibliothèque 32 bits fournie de troisième partie?

plus précisément, pour ceux qui savent de quoi je parle, comment dois-je exécuter les exemples Qt "EmoCube" et "BlueAvatar" sur mon système 64 bits?

-> pour ce que j’ai essayé jusqu’à présent, le maximum que j’ai pu obtenir est: "erreur lors du chargement de bibliothèques partagées: libedk.so.1: mauvaise classe ELF: ELFCLASS64"

Je suppose qu'un lien symbolique vers cette lib dans le répertoire i386 ne le ferait pas (même si je ne l'ai pas encore essayé), donc si quelqu'un a une réponse ... Je suis impatient de la lire.

Salut à tous +

StephaneAG
la source
-4

Exécutez ces commandes dans un terminal:

cd /lib/x86_64-linux-gnu/
sudo cp libudev.so.0.13.0 libudev.so.1

Cela m'a aidé

utilisateur214274
la source
cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
utilisateur214274