Bagaimana cara mengatasi kesalahan "Tidak dapat membuka file objek bersama libudev.so.0"?

81

Mencoba menjalankan Game Dev Tycoon di Ubuntu 64. Ia meminta objek di atas.

Saya berlari sudo apt-get install libudev1:i386dan kembali sudah diinstal.

Saya punya /lib/i386-linux-gnu/libudev.so.1tetapi tidak ada di libudev.so.0mana saja.

senshikaze
sumber
1
Ini terjadi ketika mencoba menginstal versi Popcorntime baru pada Mint Petra 16
igorsantos07

Jawaban:

27

Untuk Ubuntu 64-bit, ia ada dalam paket libudev0 32-bit.

Anda dapat menginstalnya dengan perintah berikut:

sudo apt-get install libudev0:i386

Paket ini telah dihapus dari Ubuntu pada 14.04. Anda harus menginstalnya dari versi yang lebih lama.

Sean
sumber
3
tidak ada paket yang ditemukan ketika mencoba mencari libudev0: i386 ada ide?
Jonathan
26
Saya akhirnya melakukan sudo apt-get install libudev1: i386 dan kemudian sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong
Saya harus memasukkan perintah ini untuk menginstal google-webdesigner pada Debian 64 bit
HoboBen
2
Silakan instal versi lama dari sini: packages.ubuntu.com/precise/libudev0
rubo77
Paket libudev0 tidak tersedia, tetapi disebut oleh paket lain. Ini mungkin berarti bahwa paket itu hilang, telah usang, atau hanya tersedia dari sumber lain
Aaron Franke
199

Untuk memperbaikinya, saya menautkan libudev.so.1ke libudev.so.0:

sudo ln -sf /lib/$(arch)-linux-gnu/libudev.so.1 /lib/$(arch)-linux-gnu/libudev.so.0
senshikaze
sumber
25
untuk 64 bit: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu
10
Tolong jangan lakukan ini. Itu hanya meminta masalah.
dobey
1
Ini mengacaukan Plex Home Theatre bagi saya, untuk memulihkan menghapus symlink libudev.so.0 dan instal ulang libudev0: i386
Johan Bjäreholt
2
Pada 32 bit ini adalah perintah (jika seseorang sampai di sini):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena
6
Dengarkan dobey, ini prosedur yang berantakan. Ryan Crichton memposting cara yang tepat untuk melakukannya DI SINI .
berbt
55

Untuk ubuntu 14.04 ke atas

Metode termudah yang saya temukan adalah cukup unduh .deb ( tautan langsung ke unduhan 64-bit dan unduhan 32-bit ) dan klik dua kali untuk menginstalnya atau gunakan dpkg untuk menginstalnya:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Untuk versi sebelumnya

Dalam versi ubuntu sebelumnya, paket ini tersedia di repositori resmi. Anda dapat menginstal dengan yang berikut ini:

sudo apt-get install libudev0:i386
Ryan Crichton
sumber
17
INI ADALAH JAWABAN YANG TEPAT . Jika sebuah paket hilang, Anda menginstal paket ... sesederhana itu. Membuat tautan, mengedit nama hex, mengkonfigurasi ulang Google Chrome, memalu CPU dan mendengus bubuk cabai bukanlah solusi nyata.
berbt
2
Tapi itu hanya berfungsi jika paket itu tersedia.
Tamsyn Michael
1
@TamsynMichael paket itu tidak harus tersedia di repositori, Anda dapat mengunduhnya dari tautan di atas dan kemudian menginstalnya secara manual pada versi ubuntu yang tidak memiliki paket yang tersedia di repositori resmi mereka.
Ryan Crichton
Ini harus menjadi jawaban yang tepat! ini adalah perbaikan yang tepat, tidak ada symlink yang berantakan atau apa pun
lord-ralf-adolf
Ini adalah metode termudah yang dapat saya temukan. Menambahkan ketergantungan yang lebih tua ke repositori adalah hal yang menyakitkan
denny
32

Saya memiliki masalah yang sama untuk program yang berbeda, tetapi jawaban Sean yang diterima tidak membantu saya sama sekali. Pada instalasi 64-bit 13.04 saya yang ditingkatkan, libudev0 tidak tersedia baik dalam bentuk 64-bit atau bentuk i386. Dan ia32-libs sudah diinstal. Jadi tidak ada dadu.

Apa yang harus saya lakukan adalah solusi yang lebih teknis senshikaze versi yang sedikit dimodifikasi. Saya secara manual symlinked libudev.so.0 ke libudev.so.1 dalam direktori lib x86_64, dengan demikian:

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

Ini memperbaikinya untuk saya.

Jurang
sumber
Ini memperbaikinya bagi saya juga - menjalankan Ubuntu 15,04 64 bit. Terima kasih banyak.
Tamsyn Michael
Diperbaiki pada Ubuntu 19.04
Alexander Haroldo da Rocha
5

Kesalahan ini mungkin terjadi ketika mencoba menggunakan nw dieksekusi dari Node Webkit . Seperti ini:

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

Bagaimana menyelesaikan:

  1. Dapatkan hex editor yang memungkinkan Anda untuk mengubah string biner ASCII, misalnya. hexedit :

    • Di terminal ( Ctrl+ Alt+ T), jalankan: sudo apt-get install hexedit.
    • Ikuti instruksi yang disajikan dalam terminal (ketikkan kata sandi jika perlu, konfirmasikan pemasangan).
  2. Buka direktori dengan simpul webkit :
    • Dalam kasus saya: cd ~/Dokumenty/node-webkit-*.
  3. Buka nw biner menggunakan perintah hex editor yang diawali dengan sudo:
    • Jalankan: sudo hexedit nw.
  4. Cari libudev.so.0string ASCII:
    • Jika menggunakan hexedit : Tekan Tab.
    • Tekan Ctrl+ S.
    • Ketik: libudev.so.0.
  5. Perubahan 0dalam libudev.so.0string untuk 1, sehingga menjadi: libudev.so.1:
    • Gunakan tombol panah untuk memilih 0dalam libudev.so.0string.
    • Tekan 1pada keyboard.
  6. Keluar dan simpan perubahan.
    • Tekan Ctrl+ X.
    • Tekan Yuntuk menyimpan perubahan.

Kamu sudah selesai. Ini juga memperbaiki masalah dengan Atraci binary ketika mengikuti instruksi yang sama kecuali mengedit hex file Atraci bukannya nw.

Daniel Kmak
sumber
2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwdan kemudian Anda dapat menjalankannya, tidak perlu menginstal apa pun
Catalyst
4

Satu-satunya jawaban di sini yang berfungsi pada Ubuntu 14.04 adalah jawaban yang diterima, dan karena banyak komentar menunjukkan bahwa ini dapat menyebabkan masalah dengan sistem di jalan (walaupun saya sendiri tidak tahu tentang itu), saya membuat kompromi. Skrip ini akan meminta (di terminal) untuk kata sandi root Anda. Ini akan membuat tautan simbolis dan meluncurkan aplikasi (dalam kasus saya, waktu popcorn). Saat Anda keluar dari aplikasi, itu akan menggunakan sesi sudo yang ada untuk menghapus tautan simbolik:

#!/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
sumber
Saya suka ide ini, meskipun saya bertanya-tanya apakah ada cara untuk menggunakan variabel lingkungan LD_LIBRARY sebagai gantinya.
Flimm
@ Flimm, beri tahu aku bagaimana caranya.
TenLeftFingers
1
Saya akhirnya pergi dengan jawaban ini sebagai gantinya.
Flimm
4

Saya baru saja menemukan cara untuk membuat ini bekerja, cukup konyol.

Saya telah menginstal Google Chrome di sistem saya dan Chrome memiliki objek bersama ini tertanam. Jadi, saya hanya perlu membuat tautan simbolis ke perpustakaan di direktori pemasangan Chrome.

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

Ini bekerja cukup baik untuk saya.

nunesvictor
sumber
4

Ini adalah solusi paling sederhana yang saya temukan

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

seperti yang ditunjukkan Phil Strong

Pasang libudev.so.1

sudo apt-get install libudev1:i386

lalu tautkan sebagai libudev.so.0

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

saya melakukan ini pada 14,04, tetapi harus serupa. hapus saja paket dan instal ulang. perpustakaan yang benar diinstal dengan tepat.

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

Saya yakin jawaban lainnya berfungsi, tetapi saya memiliki daging sapi dasar dalam memodifikasi objek sistem file yang dikelola oleh paket manajemen konfigurasi.

MARK SMITH
sumber
1

Inilah yang saya gunakan untuk memecahkan masalah yang sama pada Ubuntu 32.04 15 bit.

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

PEMBARUAN Saya membuat skrip bash untuk membungkus program yang ingin Anda jalankan. Anda dapat menambahkannya ke folder tempat sampah lokal Anda dan memulai program tanpa menyalin & menempel atau menjalankan skrip 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 

JAWABAN TUA Di Ubuntu 14.04 saya mendapatkan pesan kesalahan dari Dart Editor ketika mencoba menggunakan Live Preview (Chromium). Kesalahan diselesaikan dengan menginstal libudev1 dan membuat tautan simbolik .

    sudo apt-get install libudev1

Saya juga menggunakan skrip yang disebutkan di atas oleh TenLeftFingers untuk mengeksekusi 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

Jika Editor Dart tidak dijalankan, pastikan JAVA diinstal dan itu bukan masalah izin.

    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

dan membuat IDE dapat dieksekusi:

    sudo chmod a+x ./DartEditor

Ini berhasil untuk saya.

Diaz
sumber
0

Saya mendapatkan kesalahan yang sama pada sistem 32-bit saya setelah memutakhirkan dari Xubuntu Precise ke Trusty. Ini memperbaikinya untuk saya:

sudo dpkg-reconfigure google-chrome-stable

Saya menemukannya di sini . Dengan tanpa parameter sama sekali, saya tidak yakin bagaimana ini memperbaikinya, tetapi ternyata benar. Yang paling saya sukai adalah tidak perlu melakukan apa pun yang berpotensi menimbulkan masalah bagi saya di masa depan, dan tidak mengharuskan saya memburu paket apa pun.

undrline
sumber
-1

Jika ada yang menemukan halaman ini saat menggali web untuk perbaikan di libudev.so.0 & Emotiv Epoc SDK Dev Edition di Ubuntu, saya harap yang berikut ini akan membantu:

// konfigurasi saya adalah 64bit Ubuntu 13.04

Untuk sistem 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

apa yang memungkinkan untuk mencegah "kesalahan saat memuat pustaka bersama: libudev.so.0: kelas ELF yang salah: ELFCLASS32"

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

Untuk sistem 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

apa yang memungkinkan untuk mencegah "kesalahan saat memuat pustaka bersama: libudev.so.0: kelas ELF yang salah: ELFCLASS64" (perhatikan itu dugaan, saya menggunakan sistem 64 bit)

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

EmotivControlPanel, EmoKey, EmoComposer, contoh Java & sedikit contoh Qt yang disesuaikan harus dapat dijalankan setelah melakukan hal di atas (saya sudah mencoba semua langkah di atas + yang lain ditemukan di web (stack overflow, ..), tetapi tidak ada yang berfungsi untuk saya, jadi itulah yang akhirnya saya lakukan setelah beberapa "coba & kesalahan"

Last but not least, Jika ada orang di sini yang tahu bagaimana menjalankan program yang dikompilasi terhadap 32bit lib pada sistem 64bit SAAT MENGETAHUI PENGGUNAAN PERPUSTAKAAN 32R PIHAK 32R PIHAK YANG DISEDIAKAN?

lebih tepatnya, bagi mereka yang tahu apa yang saya bicarakan, bagaimana saya menjalankan contoh Qt "EmoCube" & "BlueAvatar" pada sistem 64bit saya?

-> untuk apa yang saya coba sejauh ini, yang paling bisa saya dapatkan adalah: "kesalahan saat memuat pustaka bersama: libedk.so.1: salah kelas ELF: ELFCLASS64"

Saya kira symlink ke lib di direktori i386 tidak akan berhasil (walaupun saya belum mencobanya), jadi jika ada yang punya jawaban ... Saya ingin membacanya.

Ceria semua +

StephaneAG
sumber
-4

Jalankan perintah ini di terminal:

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

Ini telah membantu saya

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