Come posso risolvere un errore "Impossibile aprire il file libudev.so.0 del file oggetto condiviso"?


81

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

Ho corso sudo apt-get install libudev1:i386ed è tornato già installato.

Non ho /lib/i386-linux-gnu/libudev.so.1ma da nessuna libudev.so.0parte.


1
Questo è successo quando si è tentato di installare la nuova versione di Popcorntime su Mint Petra 16
igorsantos07

Risposte:


27

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 in 14.04. Dovrai installarlo da una versione precedente.


3
nessun pacchetto trovato durante il tentativo di ricerca di libudev0: i386 qualche idea?
Jonathan,

26
Ho finito per fare sudo apt-get install libudev1: i386 e poi sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong

Ho dovuto inserire questo comando per installare google-webdesigner su Debian a 64 bit
HoboBen,

2
Installa la versione precedente da qui: pacchetti.ubuntu.com/precise/libudev0
rubo77

Il pacchetto libudev0 non è disponibile, ma è indicato da un altro pacchetto. Ciò può significare che il pacchetto è mancante, è stato obsoleto o è disponibile solo da un'altra fonte
Aaron Franke,

199

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

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0

25
per 64 bit: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu

10
Per favore non farlo. Chiede solo problemi.
Dobey,

1
Questo ha incasinato Plex Home Theater per me, per rimuovere rimuovere il collegamento simbolico libudev.so.0 e reinstallare libudev0: i386
Johan Bjäreholt

2
A 32 bit questo è il comando (nel caso qualcuno abbia raggiunto qui):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena,

6
Ascolta dobey, questa è una procedura disordinata. Ryan Crichton ha pubblicato il modo giusto per farlo QUI .
berbt

55

Per Ubuntu 14.04 e versioni successive

Il metodo più semplice che ho trovato è stato semplicemente scaricare il .deb ( collegamento diretto al download a 64 bit e al download a 32 bit ) e fare doppio clic per installarlo o utilizzare 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 quanto segue:

sudo apt-get install libudev0:i386

17
QUESTA È LA RISPOSTA GIUSTA . Se manca un pacchetto, si installa il pacchetto ... è così semplice. Creare collegamenti, modificare nomi esadecimali, riconfigurare Google Chrome, martellare la CPU e sniffare la polvere di peperoncino non sono soluzioni reali.
berbt

2
Funziona solo se quel pacchetto è disponibile.
Tamsyn Michael,

1
@TamsynMichael il pacchetto non deve essere disponibile nei repository, puoi scaricarlo dal link sopra e quindi installarlo manualmente su versioni di Ubuntu che non hanno il pacchetto disponibile nei loro repository ufficiali.
Ryan Crichton,

Questa dovrebbe essere la risposta giusta! questa è la soluzione corretta, nessun symlink disordinato o altro
lord-ralf-adolf

Questo è il metodo più semplice che posso trovare. Aggiungere una dipendenza più vecchia al repository è un dolore
denny

32

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

Quello che dovevo fare era una versione leggermente modificata della soluzione più tecnica di senshikaze. 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 mi ha risolto.


Questo ha risolto anche per me - eseguendo Ubuntu 15.04 a 64 bit. Grazie mille.
Tamsyn Michael,

Risolto su Ubuntu 19.04
Alexander Haroldo da Rocha

5

Questo errore potrebbe verificarsi quando si tenta di utilizzare eseguibile nw da Node Webkit . Come questo:

./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 consente di cambiare la stringa ASCII di binario, ad es. hexedit :

    • Nel terminale ( Ctrl+ Alt+ T), eseguire: sudo apt-get install hexedit.
    • Seguire le istruzioni presentate nel terminale (digitare la password se necessario, confermare l'installazione).
  2. Vai alla directory con nodo webkit :
    • Nel mio caso: cd ~/Dokumenty/node-webkit-*.
  3. Apri binario nw usando il comando hex editor preceduto da sudo:
    • Run: sudo hexedit nw.
  4. Cerca libudev.so.0come stringa ASCII:
    • Se si utilizza hexedit : premere Tab.
    • Premi Ctrl+ S.
    • Tipo: libudev.so.0.
  5. Cambia 0in libudev.so.0stringa in 1, quindi diventa libudev.so.1::
    • Utilizzare i tasti freccia per selezionare 0in libudev.so.0stringa.
    • Premi 1sulla tastiera.
  6. Esci e salva le modifiche.
    • Premi Ctrl+ X.
    • Premere Yper salvare le modifiche.

Hai finito. Ciò risolve anche il problema con il binario Atraci quando si seguono le stesse istruzioni tranne la modifica esadecimale del file Atraci invece di nw.


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwE quindi è possibile eseguirlo, non è necessario installare nulla
Catalizzatore

4

L'unica risposta che funziona su Ubuntu 14.04 è la risposta accettata, e poiché molti commenti sottolineano che ciò può causare problemi con il sistema lungo la strada (anche se non lo so io stesso) ho trovato un compromesso. Questo script richiederà (nel terminale) la password di root. Creerà il collegamento simbolico e avvierà l'applicazione (nel mio caso, tempo di popcorn). Quando si chiude l'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

Mi piace questa idea, anche se mi chiedo se c'è un modo per utilizzare invece la variabile d'ambiente LD_LIBRARY.
Flimm,

@Flimm, fammi sapere come vai avanti.
TenLeftFingers

1
Ho finito con questa risposta invece.
Flimm,

4

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

Ho Google Chrome installato sul mio sistema e Chrome ha questo oggetto condiviso incorporato. Quindi, dovevo solo creare un collegamento simbolico alla libreria nella 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.


4

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

2

come ha sottolineato Phil Strong

installare 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

1

l'ho fatto il 14.04, ma dovrebbe essere simile. basta eliminare il pacchetto e reinstallarlo. le librerie corrette sono installate correttamente.

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

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


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

0

AGGIORNAMENTO Ho creato uno script bash per concludere il programma che si desidera eseguire. Puoi aggiungerlo alla tua cartella bin locale e avviare il programma senza copiare e 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 

RISPOSTA VECCHIA In Ubuntu 14.04 stavo ricevendo il messaggio di errore dal Dart Editor durante il tentativo di utilizzare l'anteprima dal vivo (Chromium). L'errore è stato risolto installando libudev1 e creando un collegamento 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, assicurarsi 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 eseguibile l'IDE:

    sudo chmod a+x ./DartEditor

Questo ha funzionato per me.


0

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

sudo dpkg-reconfigure google-chrome-stable

L'ho trovato qui . Senza parametri, non sono sicuro di come sia stato risolto, ma è stato così. La cosa che mi è piaciuta di più è che non richiedeva di fare nulla che potesse potenzialmente causare problemi in futuro e che non richiedeva che cercassi dei pacchetti.


-1

Se qualcuno dovesse imbattersi in questa pagina mentre cercava il Web per le correzioni su libudev.so.0 e l'Emotiv Epoc SDK Dev Edition su Ubuntu, spero che ciò che segue possa aiutare:

// la mia configurazione è Ubuntu 13.04 a 64 bit

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 consente di prevenire "errore durante il caricamento di librerie condivise: libudev.so.0: classe ELF errata: 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 consente di prevenire "errore durante il caricamento di librerie condivise: libudev.so.0: classe ELF errata: ELFCLASS64" (nota che è un'ipotesi, 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 e piccoli esempi Qt personalizzati dovrebbero essere in grado di funzionare dopo aver fatto quanto sopra (ho già provato tutti i passaggi sopra + altri trovati sul web (stack overflow, ..), ma nessuno funzionava per me, quindi è quello che ho finito dopo alcuni "tentativi ed errori"

Ultimo ma non meno importante, se qualcuno qui sa come eseguire programmi compilati su librerie a 32 bit su un sistema a 64 bit DURANTE LA SPECIFICA DI UTILIZZARE UNA BIBLIOTECA DA 32 BIT DI TERZE PARTI FORNITA?

più precisamente, per chi sa di cosa sto parlando, come dovrei eseguire gli esempi Qt "EmoCube" e "BlueAvatar" sul mio sistema a 64 bit?

-> per quello che ho provato finora, il massimo che ho potuto ottenere è stato: "errore durante il caricamento delle librerie condivise: libedk.so.1: classe ELF errata: ELFCLASS64"

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

Saluti a tutti +


-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


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.