Come posso risolvere un errore "Impossibile aprire l'oggetto condiviso libudev.so.0"?

77

Cercando di eseguire Game Dev Tycoon su Ubuntu 64. Richiede l'oggetto sopra.

Ho eseguito sudo apt-get install libudev1:i386 e è tornato già installato.

Ho /lib/i386-linux-gnu/libudev.so.1 ma non libudev.so.0 ovunque.

    
posta senshikaze 01.05.2013 - 02:27

15 risposte

26

Per Ubuntu a 64 bit, è nel pacchetto libudev0 a 32 bit.

Puoi installarlo con il seguente comando:

sudo apt-get install libudev0:i386

Questo pacchetto è stato rimosso da Ubuntu nel 14.04. Dovrai installarlo da una versione precedente.

    
risposta data Sean 01.05.2013 - 15:42
191

Per correggere, ho collegato libudev.so.1 a libudev.so.0 :

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
    
risposta data senshikaze 01.05.2013 - 02:27
49

Per ubuntu 14.04 e versioni successive

Il metodo più semplice che ho trovato è stato solo scaricare il file .deb ( collegamento diretto al download 64-bit e download a 32 bit ) e fai doppio clic per installarlo o usa dpkg per installarlo:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

per le versioni precedenti

Nella versione precedente di ubuntu questo pacchetto era disponibile nei repository ufficiali. È possibile installare con il seguente:

sudo apt-get install libudev0:i386
    
risposta data Ryan Crichton 06.03.2015 - 11:46
29

Ho avuto lo stesso problema per un programma diverso, ma la risposta accettata di Sean non mi ha aiutato affatto. Nella mia installazione aggiornata di 64 bit 13.04, libudev0 non è disponibile né in forma a 64 bit né in formato i386. E ia32-libs è già installato. Quindi niente dadi.

Quello che dovevo fare era una versione leggermente modificata della soluzione senshikaze più tecnica. Ho collegato manualmente libudev.so.0 a libudev.so.1 nella directory lib x86_64, quindi:

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

Questo l'ha risolto per me.

    
risposta data Cliff 10.06.2013 - 01:49
5

Questo errore può verificarsi quando si tenta di utilizzare nw eseguibile da Node Webkit . In questo modo:

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

Come risolvere:

  1. Ottieni un editor esadecimale che ti permetta di cambiare una stringa ASCII di binario, ad es. hexedit :

    • Nel terminale ( Ctrl + Alt + T ), esegui: sudo apt-get install hexedit .
    • Segui le istruzioni presentate nel terminale (digita la password se necessario, conferma l'installazione).
  2. Vai alla directory con node webkit :
    • Nel mio caso: cd ~/Dokumenty/node-webkit-* .
  3. Apri il comando nw utilizzando il comando editor esadecimale preceduto da sudo :
    • Esegui: sudo hexedit nw .
  4. Cerca libudev.so.0 come stringa ASCII:
    • Se utilizzi hexedit : premi Tab .
    • Premi Ctrl + S .
    • Tipo: libudev.so.0 .
  5. Modifica 0 in libudev.so.0 stringa a 1 , quindi diventa: libudev.so.1 :
    • Utilizza i tasti freccia per selezionare 0 in libudev.so.0 stringa.
    • Premi 1 sulla tastiera.
  6. Esci e salva le modifiche.
    • Premi Ctrl + X .
    • Premi Y per salvare le modifiche.

Il gioco è fatto. Questo risolve anche il problema con il binario di Atraci quando si seguono le stesse istruzioni eccetto la modifica esadecimale del file Atraci invece di nw.

    
risposta data Daniel Kmak 27.04.2014 - 10:42
4

L'unica risposta qui che funziona su Ubuntu 14.04 è la risposta accettata, e dal momento che molti commenti sottolineano che questo può causare problemi con il sistema lungo la strada (anche se non ne sono a conoscenza) ho trovato un compromesso. Questo script richiederà (nel terminale) la password di root. Creerà il collegamento simbolico e avvierà l'applicazione (nel mio caso, il tempo dei popcorn). Quando esci dall'applicazione, utilizzerà la sessione sudo esistente per rimuovere il collegamento simbolico:

#!/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
    
risposta data TenLeftFingers 15.04.2014 - 21:59
4

Ho appena trovato un modo per farlo funzionare, è piuttosto stupido però.

Ho installato Google Chrome sul mio sistema e Chrome ha incorporato questo oggetto condiviso. Quindi, ho appena dovuto creare un collegamento simbolico alla libreria sulla directory di installazione di Chrome.

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

Funziona abbastanza bene per me.

    
risposta data nunesvictor 09.05.2014 - 15:28
3

Questa è stata la soluzione più semplice che ho trovato

sudo ln -s /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
    
risposta data Weston Ganger 09.01.2015 - 07:26
2

come Phil Strong sottolineato

installa libudev.so.1

sudo apt-get install libudev1:i386

quindi collegalo come libudev.so.0

sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
    
risposta data Zeroows 06.06.2015 - 05:29
1

l'ho fatto il 14.04, ma dovrei essere simile. basta eliminare il pacchetto e reinstallare. le librerie corrette sono installate in modo appropriato.

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

sono sicuro che le altre risposte funzionino, ma ho un elemento base nella modifica degli oggetti del file system che sono gestiti dai pacchetti di gestione della configurazione.

    
risposta data MARK SMITH 09.09.2014 - 13:44
1

Questo è quello che ho usato per risolvere lo stesso problema su Ubuntu 15.04 a 32 bit.

cd i386-linux-gnu
sudo ln -sf libudev.so.1 libudev.so.0
    
risposta data user491326 09.01.2016 - 20:33
0

Aggiorna Ho creato uno script bash per aggirare il programma che si desidera eseguire. Puoi aggiungerlo alla tua cartella bin locale e avviare il programma senza la copia & amp; incollare o eseguire script di 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 

VECCHIA RISPOSTA In Ubuntu 14.04 ricevevo il messaggio di errore da Dart Editor quando provavo ad usare l'Anteprima dal vivo (Chromium). L'errore è stato risolto installando libudev1 e creando un link simbolico .

    sudo apt-get install libudev1

Ho anche usato lo script sopra menzionato da TenLeftFingers per eseguire 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

Se il Dart Editor non viene eseguito assicurati che JAVA sia installato e che non sia un problema di autorizzazione.

    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

e rendere l'eseguibile IDE:

    sudo chmod a+x ./DartEditor

Questo ha funzionato per me.

    
risposta data Diaz 26.05.2014 - 02:28
0

Stavo ricevendo lo stesso errore sul mio sistema a 32 bit dopo l'aggiornamento da Xubuntu Precise a Trusty. Questo lo ha risolto per me:

sudo dpkg-reconfigure google-chrome-stable

L'ho trovato qui . Con assolutamente nessun parametro, non sono abbastanza sicuro di come sia stato risolto, ma è stato così. Quello che mi è piaciuto di più è che non ha richiesto nulla che potesse causare problemi per me in futuro, e non mi ha imposto di cercare alcun pacchetto.

    
risposta data undrline 15.08.2014 - 00:06
-1

Se qualcuno si imbatte in questa pagina mentre cerca sul web le correzioni su libudev.so.0 & amp; l'Emotiv Epoc SDK Dev Edition su Ubuntu, spero che quanto segue possa aiutarti:

// la mia configurazione è 64bit Ubuntu 13.04

Per un sistema a 64 bit:

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

cosa permette di evitare "l'errore durante il caricamento delle librerie condivise: libudev.so.0: errata classe ELF: ELFCLASS32"

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

Per un sistema a 32 bit:

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

cosa permette di prevenire "l'errore durante il caricamento delle librerie condivise: libudev.so.0: errata classe ELF: ELFCLASS64" (nota che è una supposizione, sono su un sistema a 64 bit)

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

EmotivControlPanel, EmoKey, EmoComposer, gli esempi Java & amp; alcuni esempi di Qt personalizzati dovrebbero essere in grado di essere eseguiti dopo aver fatto quanto sopra (ho già provato tutti i passaggi sopra + altri trovati sul web (overflow dello stack, ..), ma nessuno funzionava per me, quindi è quello che ho finito dopo alcuni "try & amp; errors"

Ultimo ma non meno importante, se qualcuno qui sa come eseguire programmi compilati su librerie a 32 bit su un sistema a 64 bit MENTRE SPECIFICARE DI UTILIZZARE UNA LIBRERIA DI 3BIE PARTECIPATA DA 3 BIGLIETTI?

  

più precisamente, per chi sa di cosa sto parlando, come dovrei eseguire "EmoCube" & amp; Esempi di Qt "BlueAvatar" sul mio sistema a 64 bit?

- & gt; per quello che ho provato finora, il massimo che ho ottenuto è stato: "Errore durante il caricamento delle librerie condivise: libedk.so.1: errata classe ELF: ELFCLASS64"

Immagino che un collegamento simbolico a quella lib nella directory i386 non lo renderebbe (anche se non l'ho ancora provato), quindi se qualcuno ha una risposta ... non vedo l'ora di leggerlo.

Saluti tutti +

    
risposta data StephaneAG 09.12.2013 - 03:00
-4

Esegui questi comandi in un terminale:

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

Questo mi ha aiutato

    
risposta data user214274 10.11.2013 - 07:03

Leggi altre domande sui tag