“Paylaşılan nesne dosyası libudev.so.0 açılamıyor” hatasını nasıl çözebilirim?


81

Game Dev Tycoon'u Ubuntu 64'te çalıştırmaya çalışıyor . Yukarıdaki nesneyi soruyor.

Koştum sudo apt-get install libudev1:i386ve çoktan kurulmuş olarak geldi.

Hiçbir yerim yok /lib/i386-linux-gnu/libudev.so.1ama yok libudev.so.0.


1
Bu, Popcorntime'in yeni sürümünü Mint Petra 16'ya yüklemeye çalışırken oldu
igorsantos07

Yanıtlar:


27

64 bit Ubuntu için 32 bit libudev0 paketindedir.

Bunu aşağıdaki komutla yükleyebilirsiniz:

sudo apt-get install libudev0:i386

Bu paket 14.04'te Ubuntu'dan çıkarıldı. Eski bir sürümden yüklemeniz gerekecek.


3
libudev0: i386 için herhangi bir fikir ararken herhangi bir paket bulunamadı.
Jonathan

26
Sudo apt-get install libudev1: i386 ve ardından sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.1
Phil/

Google-webdesigner'ın Debian 64 bit'e yüklenmesini sağlamak için bu komuta
girmem gerekti

2
Lütfen eski sürümü buradan yükleyin: Packages.ubuntu.com/precise/libudev0
rubo77

Paket libudev0 mevcut değil, ancak başka bir paket tarafından anılıyor. Bu, paketin eksik olduğu, eski olduğu veya yalnızca başka bir kaynaktan alınabileceği anlamına gelebilir
Aaron Franke,

199

Düzeltmek için, ben bağlantılı libudev.so.1etmek libudev.so.0:

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

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

10
Lütfen bunu yapma. Sadece sorun istiyor.
saat

1
Bu benim için berbat Plex Home Theatre, libudev.so.0 sembolünü kaldırmak ve libudev0'ı tekrar yüklemek için: i386
Johan Bjäreholt 11:14

2
32 sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
bit'te

6
Dobey'ı dinle, bu karışık bir prosedür. Ryan Crichton, BURAYA yapmak için doğru yolu gönderdi .
berbt

55

Ubuntu 14.04 ve üstü için

Bulduğum en kolay yöntem sadece .deb ( 64 bit indirmeye ve 32 bit indirmeye doğrudan bağlantı) 'yı indirmek ve yüklemek için çift tıklamak ya da yüklemek için dpkg kullanmaktı:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Önceki sürümler için

Ubuntu'nun önceki sürümünde bu paket resmi depolarda bulunuyordu. Aşağıdakilerle yükleyebilirsiniz:

sudo apt-get install libudev0:i386

17
BU DOĞRU CEVAP . Bir paket eksikse, paketi yüklüyorsunuz ... bu kadar basit. Bağlantılar oluşturma, onaltılı düzenleme adları, Google Chrome'u yeniden yapılandırma, CPU çekiçleme ve biber tozunu çekme gerçek çözümler değildir.
berbt 19

2
Ancak, yalnızca bu paket mevcutsa çalışır.
Tamsyn Michael,

1
@TamsynMichael, paketin depolarda bulunması gerekmez, yukarıdaki bağlantıdan yükleyebilir ve daha sonra resmi depolarında bulunmayan ubuntu sürümlerine manuel olarak yükleyebilirsiniz.
Ryan Crichton

Bu doğru cevap olmalı! bu uygun bir düzeltme, dağınık hiçbir sembolik bağ veya başka bir şey yok
lord-ralf-adolf 11

Bu bulabildiğim en kolay yöntem. Depoya daha fazla bağımlılık eklemek bir acıdır
denny

32

Farklı bir program için de aynı problemi yaşadım, ancak Sean'ın kabul ettiği cevap bana hiç yardımcı olmadı. Yükseltilmiş 64 bit 13.04 yüklememde libudev0, 64 bit biçiminde veya i386 biçiminde kullanılamaz. Ve ia32 libs zaten kurulu. Yani zar yok.

Tek yapmam gereken senshikaze'nin daha teknik çözümü olan biraz değiştirilmiş bir versiyondu. X86_64 lib dizinindeki libudev.so.0 ile libudev.so.1'i manuel olarak birleştirdim, böylece:

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

Bu benim için düzeltti.


Bu benim için de düzeltti - Ubuntu 15.04 64 bit kullanıyordu. Çok teşekkürler.
Tamsyn Michael,

Ubuntu'da düzeltildi 19.04
Alexander Haroldo da Rocha

5

Bu hata , Node Webkit'ten nw çalıştırılabilir kullanmaya çalışırken ortaya çıkabilir . Bunun gibi, böyle:

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

Nasıl çözülür:

  1. Örneğin ASCII ikili dizesini değiştirmenize izin veren onaltılı editörü edinin. onaltılı :

    • Terminalde ( Ctrl+ Alt+ T): çalıştırın sudo apt-get install hexedit.
    • Terminalde verilen talimatları izleyin (gerekirse şifreyi yazın, kurulumu onaylayın).
  2. Düğüm webkitli dizine git :
    • Benim durumumda: cd ~/Dokumenty/node-webkit-*.
  3. Nw binary komutunu aşağıdakilerden önce gelen hex editor komutunu kullanarak açın sudo:
    • Çalıştırın: sudo hexedit nw.
  4. libudev.so.0ASCII dizesi olarak ara :
    • Onaltılık kullanıyorsanız : tuşuna basın Tab.
    • Ctrl+ Tuşlarına basın S.
    • Tür: libudev.so.0.
  5. Değişim 0içinde libudev.so.0dizeye 1o, olur böylece: libudev.so.1:
    • Seçmek için ok tuşlarını kullanın 0içinde libudev.so.0dize.
    • 1Klavyede basın .
  6. Çıkın ve değişiklikleri kaydedin.
    • Ctrl+ Tuşlarına basın X.
    • YDeğişiklikleri kaydetmek için düğmesine basın .

Sen bittin. Bu aynı zamanda, nw yerine onrac düzenleme Atraci dosyasını düzenleme dışında aynı talimatları izlerken Atraci binary ile ilgili sorunu düzeltir.


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwve sonra çalıştırabilirsiniz, herhangi bir şey yüklemenize gerek yok
Catalyst

4

Burada Ubuntu 14.04'te çalışan tek cevap kabul edilen cevaptır ve birçok yorum bunun yolun aşağısındaki sistemle ilgili sorunlara neden olabileceğine işaret etti (kendim hakkında bir bilgim olmasa da) bir uzlaşma sağladım. Bu komut dosyası (terminalde) root şifrenizi soracaktır. Sembolik bir bağlantı oluşturacak ve uygulamayı başlatacak (benim durumumda patlamış mısır zamanı). Uygulamadan çıktığınızda, sembolik bağlantıyı kaldırmak için varolan sudo oturumunu kullanır:

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

LD_LIBRARY ortam değişkenini kullanmanın bir yolu olup olmadığını merak etmeme rağmen bu fikri sevdim.
Flimm

@ Flimm, nasıl geçtiğinizi bana bildirin.
TenLeftFingers

1
Bunun yerine bu cevaba ulaştım.
Flimm

4

Sadece bu işi yapmanın bir yolunu buldum, yine de çok saçma.

Sistemime Google Chrome yüklü ve Chrome bu paylaşılan nesneyi katıştırdı. Bu yüzden, sadece Chrome kurulum dizinindeki kütüphaneye sembolik bir bağlantı yapmak zorunda kaldım.

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

Bu benim için oldukça iyi çalışıyor.


4

Bu bulduğum en basit çözümdü.

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

2

Phil Strong'un belirttiği gibi

Yüklemek libudev.so.1

sudo apt-get install libudev1:i386

daha sonra bağlantı olarak libudev.so.0

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

1

Bunu 14.04'te yaptım ama benzer olmalıyım. sadece paketi silin ve tekrar kurun. doğru kütüphaneler uygun şekilde kuruludur.

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

Diğer cevapların işe yaradığından eminim, ancak yapılandırma yönetimi paketleri tarafından yönetilen dosya sistemi nesnelerini değiştirmede temel bir eteğe sahibim.


1

Bu aynı sorunu 32 bit Ubuntu 15.04'te çözmek için kullandığım şeydi.

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

0

GÜNCELLEME Çalıştırmak istediğiniz programın etrafına sarmak için bir bash betiği hazırladım. Yerel bin klasörünüze ekleyebilir ve sadece programı kopyalayıp yapıştırmadan veya çalışan kabuk komut dosyalarını çalıştırmadan başlatabilirsiniz.

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

ESKİ CEVAP Ubuntu 14.04'te Canlı Önizleme'yi (Chromium) kullanmaya çalışırken Dart Editör'den hata mesajı alıyordum. Hata libudev1'i yükleyerek ve sembolik bir bağlantı oluşturarak çözüldü .

    sudo apt-get install libudev1

Ayrıca, DartEditor'u çalıştırmak için TenLeftFingers tarafından yukarıda belirtilen senaryoyu kullandım.

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

Dart Düzenleyicisi çalışmazsa, JAVA'nın yüklü olduğundan ve bunun bir izin sorunu olmadığından emin olun.

    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

ve IDE'nin çalıştırılabilir olmasını sağlayın:

    sudo chmod a+x ./DartEditor

Bu benim için çalıştı.


0

Xubuntu Precise'dan Trusty'ye yükselttikten sonra 32 bit sistemimde de aynı hatayı alıyordum. Bu benim için düzeltti:

sudo dpkg-reconfigure google-chrome-stable

Onu burada buldum . Kesinlikle hiçbir parametreyle, bunun nasıl düzelttiğinden emin değilim, ama yaptı. En çok sevdiğim şey, gelecekte benim için potansiyel olarak sorunlara yol açacak bir şey yapmayı gerektirmemesi ve herhangi bir paket arama yapmamı gerektirmemesiydi.


-1

Herhangi biri bu sayfada libudev.so.0 ve Ubuntu’daki Emotiv Epoc SDK Dev Edition’da yapılan düzeltmeler için web’i kazarsa, aşağıdakilerin yardımcı olacağını umuyorum:

// benim yapılandırmam 64bit Ubuntu 13.04

64 bit sistem için:

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

"paylaşılan kütüphaneleri yüklerken hata oluştu: libudev.so.0: wrong ELF sınıfı: ELFCLASS32"

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

32 bit sistem için:

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

"paylaşılan kitaplıkları yüklerken hata oluştu: libudev.so.0: yanlış ELF sınıfı: ELFCLASS64" (bu bir tahmin, 64 bit sistemdeyim.)

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

EmotivControlPanel, EmoKey, EmoComposer, Java örnekleri ve küçük özelleştirilmiş Qt örnekleri, yukarıdakileri yaptıktan sonra çalışabilmelidir (yukarıda belirtilen tüm adımları denedim + web'de bulunan diğerleri (yığın taşması, ..), ancak hiçbiri çalışmıyordu. benim için, bu yüzden bazı "deneme ve hatalar" sonra yaptıklarını

Son fakat en az değil, burada kimse 64bit sistemde 32bit libs'e karşı derlenmiş programları nasıl çalıştıracağını biliyorsa, SUNULAN BİR 3.KISIM TARAFI 32BİT KÜTÜPHANE KULLANIMI ÖZELDİR Mİ?

daha doğrusu, neden bahsettiğimi bilenler için, 64bit sistemimde "EmoCube" ve "BlueAvatar" Qt örneklerini nasıl kullanmalıyım?

-> şu ana kadar denediklerim için, bulabildiğim en çok şey: "paylaşılan kütüphaneleri yüklerken hata: libedk.so.1: wrong ELF sınıfı: ELFCLASS64"

Sanırım i386 dizinindeki o lib ile bir bağlantı kurmayacaktı (henüz denememiş olmama rağmen), bu yüzden eğer birisinin cevabı varsa ... Okumak için sabırsızlanıyorum.

Tüm alkışlar +


-4

Bu komutları bir terminalde çalıştırın:

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

Bu bana yardımcı oldu


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274 10:03
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.