Jak rozwiązać błąd „Nie można otworzyć pliku udostępnionego obiektu libudev.so.0”?


81

Próbuję uruchomić Game Dev Tycoon na Ubuntu 64. Pyta o powyższy obiekt.

Pobiegłem sudo apt-get install libudev1:i386i wrócił już zainstalowany.

Nie mam, /lib/i386-linux-gnu/libudev.so.1ale libudev.so.0nigdzie nie .


1
Stało się tak, gdy próbowano zainstalować nową wersję Popcorntime na Mint Petra 16
igorsantos07,

Odpowiedzi:


27

W 64-bitowym systemie Ubuntu jest on w 32-bitowym pakiecie libudev0.

Możesz zainstalować to za pomocą następującego polecenia:

sudo apt-get install libudev0:i386

Ten pakiet został usunięty z Ubuntu w 14.04. Będziesz musiał zainstalować go ze starszej wersji.


3
nie znaleziono pakietu podczas szukania libudev0: i386 jakieś pomysły?
Jonathan

26
Skończyło się na tym, że sudo apt-get install libudev1: i386, a następnie sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong

Musiałem wpisać to polecenie, aby google-webdesigner zainstalował się na 64-bitowym systemie Debian
HoboBen

2
Zainstaluj starą wersję tutaj: packages.ubuntu.com/precise/libudev0
rubo77

Pakiet libudev0 nie jest dostępny, ale odwołuje się do niego inny pakiet. Może to oznaczać, że brakuje pakietu, został on przestarzały lub jest dostępny tylko z innego źródła
Aaron Franke,

199

Aby naprawić, podłączyłem libudev.so.1do libudev.so.0:

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

25
dla wersji 64-bitowej: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu

10
Proszę nie rób tego. Prosi tylko o problemy.
dobey,

1
To pomieszało Plex Home Theatre dla mnie, aby przywrócić usunięcie dowiązania symbolicznego libudev.so.0 i ponowną instalację libudev0: i386
Johan Bjäreholt

2
W wersji 32-bitowej jest to polecenie (na wypadek, gdyby ktoś tu dotarł):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena

6
Słuchaj dobey, to jest nieporządna procedura. Ryan Crichton opublikował właściwy sposób TUTAJ .
berbt

55

Dla Ubuntu 14.04 i nowszych

Najłatwiejszą metodą, jaką znalazłem, było pobranie .deb ( bezpośredni link do pobrania 64-bitowego i pobrania 32-bitowego ) i dwukrotne kliknięcie, aby go zainstalować lub użycie dpkg, aby zainstalować:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Dla poprzednich wersji

W poprzedniej wersji ubuntu ten pakiet był dostępny w oficjalnych repozytoriach. Możesz zainstalować za pomocą:

sudo apt-get install libudev0:i386

17
TO PRAWIDŁOWA ODPOWIEDŹ . Jeśli brakuje pakietu, instalujesz go ... to takie proste. Tworzenie linków, edytowanie nazw heksadecymalnych, rekonfiguracja Google Chrome, młotkowanie procesora i parskanie chili w proszku nie są prawdziwymi rozwiązaniami.
berbt

2
Ale to działa tylko wtedy, gdy ten pakiet jest dostępny.
Tamsyn Michael,

1
@TamsynMichael pakiet nie musi być dostępny w repozytoriach, możesz pobrać go z linku powyżej, a następnie zainstalować ręcznie w wersjach ubuntu, które nie mają pakietu w oficjalnych repozytoriach.
Ryan Crichton,

To powinna być właściwa odpowiedź! to jest poprawna poprawka, bez niechlujnych dowiązań symbolicznych lub cokolwiek innego
Lord-Ralf-Adolf

To najłatwiejsza metoda, jaką mogę znaleźć. Dodawanie starszą zależność do repozytorium jest ból
Denny

32

Miałem ten sam problem z innym programem, ale zaakceptowana przez Seana odpowiedź wcale mi nie pomogła. W mojej zaktualizowanej instalacji 64-bitowej wersji 13.04 libudev0 nie jest dostępny ani w wersji 64-bitowej, ani w wersji i386. Ia32-libs jest już zainstalowany. Więc nie ma kości.

To, co musiałem zrobić, to nieco zmodyfikowana wersja bardziej technicznego rozwiązania senshikaze. Ręcznie symlinkowałem libudev.so.0 do libudev.so.1 w katalogu lib x86_64, a zatem:

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

Naprawiłem to dla mnie.


To też mnie naprawiło - działając na Ubuntu 15.04 64-bit. Wielkie dzięki.
Tamsyn Michael,

Naprawiono Ubuntu 19.04
Alexander Haroldo da Rocha

5

Ten błąd może wystąpić podczas próby użycia pliku wykonywalnego nw z pakietu Node Webkit . Lubię to:

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

Jak rozwiązać:

  1. Pobierz edytor szesnastkowy, który pozwala zmienić ciąg binarny ASCII, np. hexedit :

    • W zacisku ( Ctrl+ Alt+ T), uruchomić: sudo apt-get install hexedit.
    • Postępuj zgodnie z instrukcjami wyświetlanymi w terminalu (w razie potrzeby wpisz hasło, potwierdź instalację).
  2. Przejdź do katalogu z węzłem webkit :
    • W moim przypadku: cd ~/Dokumenty/node-webkit-*.
  3. Otwórz nw binary za pomocą polecenia edytora szesnastkowego poprzedzonego sudo:
    • Run: sudo hexedit nw.
  4. Wyszukaj libudev.so.0jako ciąg ASCII:
    • Jeśli używasz hexedit : Naciśnij Tab.
    • Naciśnij Ctrl+ S.
    • Typ: libudev.so.0.
  5. Zmiana 0w libudev.so.0ciągu do 1, więc staje się: libudev.so.1:
    • Użyj klawiszy strzałek, aby wybrać 0się w libudev.so.0ciąg.
    • Naciśnij 1na klawiaturze.
  6. Wyjdź i zapisz zmiany.
    • Naciśnij Ctrl+ X.
    • Naciśnij, Yaby zapisać zmiany.

Jesteś skończony. To rozwiązuje również problem z plikiem binarnym Atraci podczas wykonywania tych samych instrukcji, z wyjątkiem edycji heksadecymalnej pliku Atraci zamiast nw.


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwa następnie można go uruchomić, nie trzeba niczego instalować
Catalyst

4

Jedyną odpowiedzią, która działa na Ubuntu 14.04, jest odpowiedź zaakceptowana, a ponieważ wiele komentarzy wskazuje, że może to powodować problemy z systemem w przyszłości (chociaż sam o tym nie wiem), wpadłem na kompromis. Ten skrypt monituje (w terminalu) o podanie hasła roota. Stworzy symboliczne łącze i uruchomi aplikację (w moim przypadku czas popcornu). Po zamknięciu aplikacji użyje istniejącej sesji sudo do usunięcia dowiązania symbolicznego:

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

Podoba mi się ten pomysł, choć zastanawiam się, czy można zamiast tego użyć zmiennej środowiskowej LD_LIBRARY.
Flimm

@Flimm, daj mi znać, jak sobie radzisz.
TenLeftFingers

1
Zamiast tego wybrałem tę odpowiedź .
Flimm

4

Właśnie znalazłem sposób, aby to zadziałało, jest jednak dość głupie.

W moim systemie jest zainstalowana Google Chrome, a Chrome ma osadzony ten obiekt udostępniony. Musiałem więc zrobić symboliczny link do biblioteki w katalogu instalacyjnym Chrome.

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

Dla mnie działa całkiem dobrze.


4

To było najprostsze rozwiązanie, jakie znalazłem

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

2

jak zauważył Phil Strong

zainstalować libudev.so.1

sudo apt-get install libudev1:i386

następnie połącz to jako libudev.so.0

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

1

Zrobiłem to 14.04, ale powinno być podobnie. po prostu usuń pakiet i zainstaluj ponownie. prawidłowe biblioteki są odpowiednio zainstalowane.

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

jestem pewien, że pozostałe odpowiedzi działają, ale mam podstawową wiedzę w modyfikowaniu obiektów systemu plików zarządzanych przez pakiety zarządzania konfiguracją.


1

Właśnie tego użyłem do rozwiązania tego samego problemu na 32-bitowym Ubuntu 15.04.

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

0

AKTUALIZACJA Zrobiłem skrypt bash, aby zawinąć program, który chcesz uruchomić. Możesz dodać go do lokalnego folderu bin i po prostu uruchomić program bez kopiowania i wklejania lub uruchamiania skryptów powłoki.

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

STARA ODPOWIEDŹ W Ubuntu 14.04 otrzymywałem komunikat o błędzie z Edytora Dart podczas próby użycia podglądu na żywo (Chromium). Błąd został rozwiązany przez zainstalowanie libudev1 i utworzenie dowiązania symbolicznego .

    sudo apt-get install libudev1

Użyłem również skryptu wspomnianego powyżej przez TenLeftFingers do wykonania 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

Jeśli Edytor Dart nie uruchomi się, upewnij się, że JAVA jest zainstalowana i że nie jest to problem z uprawnieniami.

    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

i uczynić IDE wykonywalnym:

    sudo chmod a+x ./DartEditor

To zadziałało dla mnie.


0

Ten sam błąd występował w moim 32-bitowym systemie po aktualizacji z Xubuntu Precise do Trusty. Naprawiłem to dla mnie:

sudo dpkg-reconfigure google-chrome-stable

Znalazłem to tutaj . Bez absolutnie żadnych parametrów nie jestem pewien, jak to naprawiło, ale tak się stało. Najbardziej podobało mi się to, że nie wymagało to robienia niczego, co potencjalnie mogłoby powodować problemy w przyszłości, i nie wymagało ode mnie szukania żadnych pakietów.


-1

Jeśli ktoś natknie się na tę stronę podczas kopania sieci w poszukiwaniu poprawek w libudev.so.0 i Emotiv Epoc SDK Dev Edition na Ubuntu, mam nadzieję, że następujące działania pomogą:

// moja konfiguracja to 64-bitowy Ubuntu 13.04

W przypadku systemu 64-bitowego:

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

co pozwala uniknąć „błędu podczas ładowania bibliotek współdzielonych: libudev.so.0: niepoprawna klasa ELF: ELFCLASS32”

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

W przypadku systemu 32-bitowego:

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

co pozwala uniknąć „błędu podczas ładowania bibliotek współdzielonych: libudev.so.0: niepoprawna klasa ELF: ELFCLASS64” (uwaga, to przypuszczenie, że jestem w systemie 64-bitowym)

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

EmotivControlPanel, EmoKey, EmoComposer, przykłady Java i mało spersonalizowane przykłady Qt powinny być w stanie uruchomić po wykonaniu powyższych czynności (już wypróbowałem wszystkie powyższe kroki + inne znalezione w sieci (przepełnienie stosu, ..), ale żaden nie działał dla mnie, więc to właśnie skończyłem po kilku „próbach i błędach”

Na koniec, jeśli ktoś tutaj wie, jak uruchamiać programy skompilowane z 32-bitowymi bibliotekami lib w 64-bitowym systemie, KIEDY SPECYFIKOWAŁO SIĘ UŻYWAĆ DOSTARCZONEJ BIBLIOTEKI 32BIT?

a dokładniej, dla tych, którzy wiedzą, o czym mówię, jak mam uruchomić przykłady Qt „EmoCube” i „BlueAvatar” na moim 64-bitowym systemie?

-> za to, co do tej pory próbowałem, najbardziej mogłem uzyskać: „błąd podczas ładowania bibliotek współdzielonych: libedk.so.1: niewłaściwa klasa ELF: ELFCLASS64”

Wydaje mi się, że dowiązanie symboliczne do tej biblioteki w katalogu i386 nie dałoby rady (chociaż jeszcze tego nie próbowałem), więc jeśli ktoś ma odpowiedź ... Nie mogę się doczekać, aby ją przeczytać.

Pozdrawiam wszystkich +


-4

Uruchom następujące polecenia w terminalu:

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

To mi pomogło


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.