Làm thế nào để tôi giải quyết một lỗi không thể mở tệp đối tượng chia sẻ libudev.so.0 lỗi?


81

Đang cố gắng chạy Game Dev Tycoon trên Ubuntu 64. Nó yêu cầu đối tượng trên.

Tôi chạy sudo apt-get install libudev1:i386và nó đã trở lại đã được cài đặt.

Tôi có /lib/i386-linux-gnu/libudev.so.1nhưng không có libudev.so.0nơi nào.


1
Điều này đã xảy ra khi cố gắng cài đặt phiên bản Popcorntime mới trên Mint Petra 16
igorsantos07

Câu trả lời:


27

Đối với Ubuntu 64 bit, nó nằm trong gói libudev0 32 bit.

Bạn có thể cài đặt bằng lệnh sau:

sudo apt-get install libudev0:i386

Gói này đã bị xóa khỏi Ubuntu vào ngày 14.04. Bạn sẽ cần phải cài đặt nó từ một phiên bản cũ hơn.


3
không tìm thấy gói nào khi cố gắng tìm kiếm libudev0: i386 có ý tưởng nào không?
Jonathan

26
Cuối cùng tôi đã thực hiện cài đặt sudo apt-get libudev1: i386 và sau đó là sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Phil Strong

Tôi đã phải nhập lệnh này để cài đặt google-webdesigner trên Debian 64 bit
HoboBen

2
Vui lòng cài đặt phiên bản cũ từ đây: packages.ubuntu.com/precise/libudev0
rubo77

Gói libudev0 không có sẵn, nhưng được gọi bằng gói khác. Điều này có thể có nghĩa là gói bị thiếu, đã bị lỗi thời hoặc chỉ có sẵn từ một nguồn khác
Aaron Franke

199

Để khắc phục, tôi liên kết libudev.so.1với libudev.so.0:

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

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

10
Vui lòng đừng làm vậy. Nó chỉ yêu cầu vấn đề.
dobey

1
Điều này đã gây rối cho Plex Home Theater đối với tôi, để hoàn nguyên xóa libudev.so.0 symlink và cài đặt lại libudev0: i386
Johan Bjäreholt 11/03/2016

2
Trên 32 bit, đây là lệnh (trong trường hợp có ai đó truy cập vào đây):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena

6
Nghe dobey, đây là một thủ tục lộn xộn. Ryan Crichton đăng đúng cách để làm điều đó TẠI ĐÂY .
berbt

55

Dành cho Ubuntu 14.04 trở lên

Phương pháp đơn giản nhất tôi tìm thấy là chỉ cần tải xuống .deb ( liên kết trực tiếp đến tải xuống 64 bittải xuống 32 bit ) và nhấp đúp vào nó để cài đặt hoặc sử dụng dpkg để cài đặt:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

Đối với các phiên bản trước

Trong phiên bản trước của Ubuntu, gói này đã có sẵn trong kho chính thức. Bạn có thể cài đặt với các mục sau:

sudo apt-get install libudev0:i386

17
ĐÂY LÀ QUYỀN TRẢ LỜI . Nếu một gói bị thiếu, bạn cài đặt gói ... thật đơn giản. Tạo liên kết, tên chỉnh sửa hex, cấu hình lại Google Chrome, đập CPU và hít bột ớt không phải là giải pháp thực sự.
berbt

2
Nhưng nó chỉ hoạt động nếu gói đó có sẵn.
Tamsyn Michael

1
@TamsynMichael gói không phải có sẵn trong kho, bạn có thể tải xuống từ liên kết ở trên và sau đó cài đặt thủ công trên các phiên bản ubfox không có sẵn gói trong kho chính thức của họ.
Ryan Crichton

Đây phải là câu trả lời đúng! Đây là cách khắc phục thích hợp, không có liên kết lộn xộn hay bất cứ điều gì
lord-ralf-adolf

Đây là phương pháp dễ nhất mà tôi có thể tìm thấy. Thêm phụ thuộc cũ vào kho lưu trữ là một nỗi đau
denny

32

Tôi có cùng một vấn đề đối với một chương trình khác, nhưng câu trả lời được chấp nhận của Sean không giúp tôi chút nào. Trong bản cài đặt nâng cấp 64-bit 13.04 của tôi, libudev0 không khả dụng ở dạng 64-bit hoặc dạng i386. Và ia32-libs đã được cài đặt. Vì vậy, không có xúc xắc.

Những gì tôi phải làm là một phiên bản sửa đổi một chút giải pháp kỹ thuật hơn của Senshikaze. Tôi đã liên kết thủ công libudev.so.0 với libudev.so.1 trong thư mục lib x86_64, do đó:

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

CÁi này đã sửa nó giúp tôi.


Điều này cũng đã sửa nó cho tôi - chạy Ubuntu 15.04 64 bit. Cảm ơn nhiều.
Tamsyn Michael

Đã sửa lỗi trên Ubuntu 19.04
Alexander Haroldo da Rocha

5

Lỗi này có thể xảy ra khi cố gắng sử dụng nw thực thi từ Node Webkit . Như thế này:

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

Giải quyết thế nào:

  1. Nhận trình soạn thảo hex cho phép bạn thay đổi chuỗi nhị phân ASCII, vd. hexedit :

    • Trong thiết bị đầu cuối ( Ctrl+ Alt+ T), chạy : sudo apt-get install hexedit.
    • Làm theo hướng dẫn được trình bày trong thiết bị đầu cuối (nhập mật khẩu nếu cần, xác nhận cài đặt).
  2. Chuyển đến thư mục với nút webkit :
    • Trong trường hợp của tôi : cd ~/Dokumenty/node-webkit-*.
  3. Mở nw nhị phân bằng cách sử dụng lệnh biên tập hex đi trước sudo:
    • Chạy : sudo hexedit nw.
  4. Tìm kiếm libudev.so.0dưới dạng chuỗi ASCII:
    • Nếu sử dụng hexedit : Nhấn Tab.
    • Nhấn Ctrl+ S.
    • Loại : libudev.so.0.
  5. Thay đổi 0trong libudev.so.0chuỗi thành 1, để nó trở thành libudev.so.1::
    • Sử dụng các phím mũi tên để chọn 0trong libudev.so.0chuỗi.
    • Nhấn 1trên bàn phím.
  6. Thoát và lưu thay đổi.
    • Nhấn Ctrl+ X.
    • Nhấn Yđể lưu thay đổi.

Bạn đã hoàn tất. Điều này cũng khắc phục sự cố với nhị phân Atraci khi làm theo các hướng dẫn tương tự ngoại trừ chỉnh sửa hex tệp Atraci thay vì nw.


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwVà sau đó bạn có thể chạy nó, không cần phải cài đặt bất cứ điều gì
Catalyst

4

Câu trả lời duy nhất ở đây hoạt động trên Ubuntu 14.04 là câu trả lời được chấp nhận và vì nhiều ý kiến ​​chỉ ra rằng điều này có thể gây ra sự cố với hệ thống (mặc dù tôi không biết về điều đó) nên tôi đã đưa ra một thỏa hiệp. Kịch bản này sẽ nhắc (trong thiết bị đầu cuối) cho mật khẩu gốc của bạn. Nó sẽ tạo liên kết tượng trưng và khởi chạy ứng dụng (trong trường hợp của tôi, thời gian bỏng ngô). Khi bạn thoát khỏi ứng dụng, nó sẽ sử dụng phiên sudo hiện có để xóa liên kết tượng trưng:

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

Tôi thích ý tưởng này, mặc dù tôi tự hỏi liệu có cách nào để sử dụng biến môi trường LD_LIBRARY thay thế không.
Flimm

@Flimm, cho tôi biết làm thế nào bạn nhận được trên.
TenLeftFingers

1
Tôi đã kết thúc với câu trả lời này thay vào đó.
Flimm

4

Tôi chỉ tìm thấy một cách để làm cho công việc này, mặc dù là khá ngớ ngẩn.

Tôi đã cài đặt Google Chrome trên hệ thống của mình và Chrome đã nhúng đối tượng chia sẻ này. Vì vậy, tôi chỉ cần tạo một liên kết tượng trưng đến thư viện trên thư mục cài đặt Chrome.

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

Nó hoạt động khá tốt đối với tôi.


4

Đây là giải pháp đơn giản nhất tôi tìm thấy

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

2

như Phil Strong đã chỉ ra

Tải về libudev.so.1

sudo apt-get install libudev1:i386

sau đó liên kết nó như libudev.so.0

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

1

tôi đã làm điều này vào ngày 14.04, nhưng sẽ tương tự. chỉ cần xóa gói và cài đặt lại. các thư viện chính xác được cài đặt thích hợp.

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

Tôi chắc chắn các câu trả lời khác hoạt động, nhưng tôi có một cơ sở trong việc sửa đổi các đối tượng hệ thống tệp được quản lý bởi các gói quản lý cấu hình.


1

Đây là những gì tôi đã sử dụng để giải quyết vấn đề tương tự trên Ubuntu 15.04 32 bit.

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

0

CẬP NHẬT Tôi đã tạo một tập lệnh bash để bao quanh chương trình bạn muốn thực thi. Bạn có thể thêm nó vào thư mục bin cục bộ của bạn và chỉ cần khởi động chương trình mà không cần sao chép & dán hoặc chạy các kịch bản 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 

TRẢ LỜI OLD Trong Ubuntu 14.04 Tôi đã nhận được thông báo lỗi từ Trình chỉnh sửa phi tiêu khi thử sử dụng Live Preview (Chromium). Lỗi đã được khắc phục bằng cách cài đặt libudev1 và tạo một liên kết tượng trưng .

    sudo apt-get install libudev1

Tôi cũng đã sử dụng tập lệnh được đề cập ở trên bởi TenLeftFingers để thực thi 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

Nếu Trình chỉnh sửa phi tiêu không thực thi, hãy đảm bảo JAVA đã được cài đặt và đó không phải là vấn đề cấp phép.

    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

và làm cho IDE có thể thực thi được:

    sudo chmod a+x ./DartEditor

Điều này làm việc cho tôi.


0

Tôi đã gặp lỗi tương tự trên hệ thống 32 bit của mình sau khi nâng cấp từ Xubfox Precise lên Trusty. CÁi này đã sửa nó giúp tôi:

sudo dpkg-reconfigure google-chrome-stable

Tôi tìm thấy nó ở đây . Hoàn toàn không có tham số, tôi không chắc chắn cách này đã sửa nó, nhưng nó đã làm. Điều tôi thích nhất là nó không yêu cầu làm bất cứ điều gì có thể gây ra vấn đề cho tôi trong tương lai và không yêu cầu tôi săn lùng bất kỳ gói hàng nào.


-1

Nếu bất kỳ ai vấp phải trang này trong khi đào web để sửa lỗi trên libudev.so.0 & Emotiv Epoc SDK Dev Edition trên Ubuntu, tôi hy vọng những điều sau sẽ giúp:

// cấu hình của tôi là 64 bit Ubuntu 13.04

Đối với hệ thống 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

những gì cho phép ngăn chặn "lỗi trong khi tải các thư viện chia sẻ: libudev.so.0: sai lớp ELF: ELFCLASS32"

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

Đối với hệ thống 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

điều gì cho phép ngăn chặn "lỗi trong khi tải các thư viện dùng chung: libudev.so.0: sai lớp ELF: ELFCLASS64" (lưu ý đó là phỏng đoán, tôi đang sử dụng hệ thống 64 bit)

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

EmotivControlPanel, EmoKey, EmoComposer, các ví dụ Java và các ví dụ Qt tùy chỉnh nhỏ sẽ có thể chạy sau khi thực hiện các thao tác trên (tôi đã thử tất cả các bước trên + các bước khác được tìm thấy trên web (stack overflow, ..), nhưng không có gì hoạt động đối với tôi, đó là những gì tôi đã làm sau khi "thử & lỗi"

Cuối cùng nhưng không kém phần quan trọng, Nếu có ai ở đây biết cách chạy các chương trình được biên dịch dựa trên libs 32 bit trên hệ thống 64 bit TẠI SAO ĐẶC BIỆT ĐỂ SỬ DỤNG THƯ VIỆN 32RIT BÊN 3RD ĐƯỢC CUNG CẤP?

chính xác hơn, đối với những người biết tôi đang nói về điều gì, tôi phải chạy các ví dụ Qt "EmoCube" và "BlueAvatar" trên hệ thống 64 bit của mình như thế nào?

-> cho những gì tôi đã thử cho đến nay, điều tôi có thể nhận được nhiều nhất là: "lỗi trong khi tải thư viện dùng chung: libedk.so.1: lớp ELF sai: ELFCLASS64"

Tôi đoán rằng một liên kết tượng trưng đến lib đó trong thư mục i386 sẽ không tạo ra nó (mặc dù tôi chưa thử nó), vì vậy nếu có ai có câu trả lời ... Tôi mong được đọc nó.

Chúc mừng tất cả +


-4

Chạy các lệnh này trong một thiết bị đầu cuối:

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

Điều này đã giúp tôi


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.