Wie behebe ich den Fehler „Die gemeinsam genutzte Objektdatei libudev.so.0 kann nicht geöffnet werden“?

81

Versucht, Game Dev Tycoon unter Ubuntu 64 auszuführen . Es fragt nach dem obigen Objekt.

Ich lief sudo apt-get install libudev1:i386und es kam schon installiert zurück.

Ich habe /lib/i386-linux-gnu/libudev.so.1aber libudev.so.0nirgends.

Senshikaze
quelle
1
Dies geschah, als versucht wurde, die neue Version von Popcorntime auf Mint Petra 16
igorsantos07,

Antworten:

27

Für 64-Bit-Ubuntu ist es im 32-Bit-Paket libudev0 enthalten.

Sie können das mit dem folgenden Befehl installieren:

sudo apt-get install libudev0:i386

Dieses Paket wurde in 14.04 von Ubuntu entfernt. Sie müssen es von einer älteren Version installieren.

Sean
quelle
3
kein paket gefunden bei der suche nach libudev0: i386 irgendwelche ideen?
Jonathan
26
Am Ende habe ich sudo apt-get install libudev1: i386 und dann sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong
Ich musste diesen Befehl eingeben, um Google-Webdesigner auf Debian 64-Bit zu installieren
HoboBen
2
Bitte installieren Sie die alte Version von hier: packages.ubuntu.com/precise/libudev0
rubo77 30.10.15
Das Paket libudev0 ist nicht verfügbar, wird aber von einem anderen Paket referenziert. Dies kann bedeuten, dass das Paket fehlt, veraltet ist oder nur von einer anderen Quelle verfügbar ist
Aaron Franke,
199

Um das zu beheben, habe ich verlinkt libudev.so.1mit libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
Senshikaze
quelle
25
für 64-Bit: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu
10
Bitte mach das nicht. Es fragt nur nach Problemen.
Dobey
1
Dies brachte Plex Home Theater durcheinander, um libudev.so.0 symlink wieder zu entfernen und libudev0 neu zu installieren: i386
Johan Bjäreholt
2
Auf 32 Bit ist dies der Befehl (falls jemand hier sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
ankommt
6
Hör zu, Bobey, das ist eine unordentliche Prozedur. Ryan Crichton hat den richtigen Weg dazu HIER gepostet .
7.
55

Für Ubuntu 14.04 und höher

Die einfachste Methode, die ich gefunden habe, war, einfach die .deb-Datei herunterzuladen ( direkter Link zum 64-Bit-Download und zum 32-Bit-Download ) und darauf zu doppelklicken, um sie zu installieren, oder sie mit dpkg zu installieren:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Für frühere Versionen

In früheren Ubuntu-Versionen war dieses Paket in den offiziellen Repositories verfügbar. Sie können Folgendes installieren:

sudo apt-get install libudev0:i386
Ryan Crichton
quelle
17
DAS IST DIE RICHTIGE ANTWORT . Wenn ein Paket fehlt, installieren Sie das Paket ... so einfach ist das. Das Erstellen von Links, das Verhexen von Namen, das Neukonfigurieren von Google Chrome, das Hämmern der CPU und das Schnauben von Chilipulver sind keine wirklichen Lösungen.
Berbt
2
Aber es funktioniert nur, wenn das Paket verfügbar ist.
Tamsyn Michael
1
@TamsynMichael Das Paket muss nicht in den Repositories verfügbar sein. Sie können es über den obigen Link herunterladen und dann manuell in Ubuntu-Versionen installieren, in denen das Paket nicht in den offiziellen Repositories verfügbar ist.
Ryan Crichton
Das sollte die richtige Antwort sein! Dies ist die richtige Lösung, keine unordentlichen Symlinks oder was auch immer
Lord-Ralf-Adolf
Dies ist die einfachste Methode, die ich finden kann. Das Hinzufügen älterer Abhängigkeiten zum Repository ist eine Qual
denny
32

Ich hatte das gleiche Problem für ein anderes Programm, aber Seans akzeptierte Antwort half mir überhaupt nicht. In meiner aktualisierten Installation von 64-Bit-Version 13.04 ist libudev0 weder in 64-Bit-Form noch in i386-Form verfügbar. Und ia32-libs ist bereits installiert. Also keine Würfel.

Was ich tun musste, war eine leicht modifizierte Version der technischeren Lösung von senshikaze. Ich habe libudev.so.0 manuell mit libudev.so.1 im Verzeichnis x86_64 lib verknüpft, also:

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

Das hat es für mich behoben.

Cliff
quelle
Dies behebt es auch für mich - mit Ubuntu 15.04 64 Bit. Vielen Dank.
Tamsyn Michael
Behoben auf Ubuntu 19.04
Alexander Haroldo da Rocha
5

Dieser Fehler kann passieren , wenn sie versuchen zu verwenden nw ausführbare Datei von Knoten Webkit . So was:

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

Wie löst man:

  1. Holen Sie sich einen Hex-Editor, mit dem Sie die ASCII-Zeichenfolge einer Binärdatei ändern können, z. hexedit :

    • Im Anschluss ( Ctrl+ Alt+ T), lief: sudo apt-get install hexedit.
    • Befolgen Sie die Anweisungen im Terminal (geben Sie ggf. das Kennwort ein und bestätigen Sie die Installation).
  2. Gehe zum Verzeichnis mit dem Node Webkit :
    • In meinem Fall: cd ~/Dokumenty/node-webkit-*.
  3. Öffnen nw binär mit dem Befehl Hex - Editor voran mit sudo:
    • Run: sudo hexedit nw.
  4. Suche libudev.so.0als ASCII-Zeichenfolge:
    • Wenn Sie hexedit verwenden : Drücken SieTab .
    • Drücken Sie Ctrl+ S.
    • Typ: libudev.so.0.
  5. Änderung 0in libudev.so.0String 1, so wird es: libudev.so.1:
    • Mit den Pfeiltasten wählen Sie 0in libudev.so.0String.
    • Drücken Sie 1auf der Tastatur.
  6. Beenden und speichern Sie die Änderungen.
    • Drücken Sie Ctrl+ X.
    • Drücken Sie Y, um die Änderungen zu speichern.

Sie sind fertig. Dies behebt auch das Problem mit der Atraci-Binärdatei, wenn dieselben Anweisungen befolgt werden, mit Ausnahme der hexadezimalen Bearbeitung der Atraci-Datei anstelle von nw.

Daniel Kmak
quelle
2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwund dann können Sie es ausführen, keine Notwendigkeit, etwas zu installieren
Catalyst
4

Die einzige Antwort, die unter Ubuntu 14.04 funktioniert, ist die akzeptierte Antwort. Da viele Kommentare darauf hinweisen, dass dies Probleme mit dem System verursachen kann (obwohl ich selbst nichts davon weiß), habe ich einen Kompromiss gefunden. Dieses Skript fordert Sie (im Terminal) zur Eingabe Ihres Root-Passworts auf. Es wird die symbolische Verknüpfung erstellt und die Anwendung gestartet (in meinem Fall Popcorn-Zeit). Wenn Sie die Anwendung beenden, wird die vorhandene sudo-Sitzung verwendet, um den symbolischen Link zu entfernen:

#!/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
quelle
Ich mag diese Idee, obwohl ich mich frage, ob es eine Möglichkeit gibt, stattdessen die Umgebungsvariable LD_LIBRARY zu verwenden.
Flimm
@Flimm, lass mich wissen, wie es dir geht.
TenLeftFingers
1
Ich habe mich stattdessen für diese Antwort entschieden .
Flimm
4

Ich habe gerade einen Weg gefunden, diese Arbeit zu machen, ist aber ziemlich dumm.

Ich habe Google Chrome auf meinem System installiert und Chrome hat dieses freigegebene Objekt eingebettet. Daher musste ich nur einen symbolischen Link zur Bibliothek im Chrome-Installationsverzeichnis erstellen.

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

Es funktioniert ziemlich gut für mich.

nunesvictor
quelle
4

Dies war die einfachste Lösung, die ich gefunden habe

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

wie Phil Strong betonte

Installieren libudev.so.1

sudo apt-get install libudev1:i386

dann verlinke es als libudev.so.0

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

ich habe das am 14.04 gemacht, sollte aber ähnlich sein. Löschen Sie einfach das Paket und installieren Sie es erneut. Die richtigen Bibliotheken werden entsprechend installiert.

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

Ich bin sicher, dass die anderen Antworten funktionieren, aber ich verfüge über grundlegende Kenntnisse beim Ändern von Dateisystemobjekten, die von Konfigurationsverwaltungspaketen verwaltet werden.

MARK SMITH
quelle
1

Dies ist, was ich verwendet habe, um das gleiche Problem auf 32-Bit-Ubuntu 15.04 zu lösen.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
user491326
quelle
0

UPDATE Ich habe ein Bash-Skript erstellt, um das Programm, das Sie ausführen möchten, zu umbrechen. Sie können es zu Ihrem lokalen bin-Ordner hinzufügen und das Programm einfach starten, ohne Shell-Skripte kopieren und einfügen oder ausführen zu müssen.

#!/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 

ALTE ANTWORT In Ubuntu 14.04 erhielt ich die Fehlermeldung vom Dart Editor, als ich versuchte, Live Preview (Chromium) zu verwenden. Der Fehler wurde behoben, indem libudev1 installiert und eine symbolische Verknüpfung erstellt wurde .

    sudo apt-get install libudev1

Ich habe auch das oben erwähnte Skript von TenLeftFingers verwendet, um DartEditor auszuführen.

    #!/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

Wenn der Dart Editor nicht ausgeführt wird, stellen Sie sicher, dass JAVA installiert ist und dies kein Berechtigungsproblem darstellt.

    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

und mache die IDE ausführbar:

    sudo chmod a+x ./DartEditor

Das hat bei mir funktioniert.

Diaz
quelle
0

Auf meinem 32-Bit-System trat nach dem Upgrade von Xubuntu Precise auf Trusty der gleiche Fehler auf. Das hat es für mich behoben:

sudo dpkg-reconfigure google-chrome-stable

Ich habe es hier gefunden . Mit absolut keinen Parametern bin ich nicht ganz sicher, wie dies behoben wurde, aber es tat es. Was mir am besten gefallen hat, ist, dass ich nichts tun musste, was mir in Zukunft Probleme bereiten könnte, und dass ich keine Pakete jagen musste.

unterstrichen
quelle
-1

Wenn jemand auf diese Seite stößt, während er im Internet nach Updates für libudev.so.0 und die Emotiv Epoc SDK Dev Edition unter Ubuntu sucht, hoffe ich, dass Folgendes hilft:

// Meine Konfiguration ist 64bit Ubuntu 13.04

Für ein 64-Bit-System:

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

Was ermöglicht es, den "Fehler beim Laden von gemeinsam genutzten Bibliotheken zu verhindern: libudev.so.0: falsche ELF-Klasse: ELFCLASS32"

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

Für ein 32-Bit-System:

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

Was ermöglicht es, den "Fehler beim Laden von gemeinsam genutzten Bibliotheken zu verhindern: libudev.so.0: Falsche ELF-Klasse: ELFCLASS64"

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

Das EmotivControlPanel, EmoKey, EmoComposer, die Java-Beispiele und einige wenige angepasste Qt-Beispiele sollten nach den oben genannten Schritten ausgeführt werden können (ich habe bereits alle oben genannten Schritte ausprobiert + andere im Web gefunden (Stapelüberlauf, ..), aber keine funktionierten Für mich ist es das, was ich nach ein paar "try & errors" gemacht habe.

Last but not least, wenn jemand hier weiß, wie man mit 32-Bit-Bibliotheken kompilierte Programme auf einem 64-Bit-System ausführt.

Genauer gesagt, für diejenigen, die wissen, wovon ich spreche, wie soll ich die Qt-Beispiele "EmoCube" und "BlueAvatar" auf meinem 64-Bit-System ausführen?

-> für das, was ich bisher ausprobiert habe, konnte ich höchstens Folgendes erhalten: "Fehler beim Laden der gemeinsam genutzten Bibliotheken: libedk.so.1: falsche ELF-Klasse: ELFCLASS64"

Ich vermute, ein Symlink zu dieser Bibliothek im i386-Verzeichnis würde es nicht schaffen (obwohl ich es noch nicht ausprobiert habe). Wenn also jemand eine Antwort hat ... Ich freue mich darauf, sie zu lesen.

Alles Gute +

StephaneAG
quelle
-4

Führen Sie diese Befehle in einem Terminal aus:

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

Das hat mir geholfen

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