ฉันจะแก้ไขข้อผิดพลาด“ ไม่สามารถเปิดไฟล์อ็อบเจ็กต์ที่แชร์ libudev.so.0” ได้อย่างไร?


81

พยายามเรียกใช้Game Dev Tycoonบน Ubuntu 64 มันถามถึงวัตถุด้านบน

ฉันวิ่งsudo apt-get install libudev1:i386แล้วมันก็กลับมาติดตั้งแล้ว

ฉันมี/lib/i386-linux-gnu/libudev.so.1แต่ไม่มีlibudev.so.0ที่ไหนเลย


1
สิ่งนี้เกิดขึ้นเมื่อพยายามติดตั้ง Popcorntime เวอร์ชันใหม่ใน Mint Petra 16
igorsantos07

คำตอบ:


27

สำหรับ Ubuntu แบบ 64 บิตนั้นอยู่ในแพ็คเกจ libudev0 แบบ 32 บิต

คุณสามารถติดตั้งด้วยคำสั่งต่อไปนี้:

sudo apt-get install libudev0:i386

แพ็คเกจนี้ถูกลบออกจาก Ubuntu ใน 14.04 คุณจะต้องติดตั้งจากเวอร์ชั่นเก่ากว่า


3
ไม่พบแพ็คเกจเมื่อพยายามมองหา libudev0: i386 แนวคิดใด ๆ ?
Jonathan

26
ฉันสิ้นสุดการทำ sudo apt-get install libudev1: i386 แล้ว sudo LN -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
ฟิลที่แข็งแกร่ง

ฉันต้องป้อนคำสั่งนี้เพื่อให้ google-webdesigner ติดตั้งบน Debian 64 บิต
HoboBen

2
กรุณาติดตั้งเวอร์ชั่นเก่าจากที่นี่: packages.ubuntu.com/precise/libudev0
rubo77

แพคเกจ libudev0 ไม่พร้อมใช้งาน แต่ถูกอ้างอิงโดยแพ็กเกจอื่น นี่อาจหมายความว่าแพคเกจขาดหายไปล้าสมัยหรือมีให้จากแหล่งอื่นเท่านั้น
Aaron Franke

199

ในการแก้ไขฉันเชื่อมโยงlibudev.so.1กับlibudev.so.0:

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

25
for 64 บิต: sudo ln -sf /lib/x86_64-linux-gnu/libudev.so.1 /lib/x86_64-linux-gnu/libudev.so.0
Pisu

10
โปรดอย่าทำเช่นนี้ มันเป็นเพียงการถามปัญหา
dobey

1
สิ่งนี้ทำให้ Plex Home Theater สำหรับฉันเพื่อยกเลิกการลบ libudev.so.0 symlink และติดตั้ง libudev0: i386
Johan Bjäreholt

2
ใน 32 บิตนี่คือคำสั่ง (ในกรณีที่มีคนมาถึงที่นี่):sudo ln -sf /lib/i386-linux-gnu/libudev.so.1 /lib/i386-linux-gnu/libudev.so.0
amit_saxena

6
ฟัง dobey นี่เป็นขั้นตอนที่ยุ่งเหยิง ไรอันไคลโพสต์วิธีการที่เหมาะสมที่จะทำที่นี่
berbt

55

สำหรับ Ubuntu 14.04 ขึ้นไป

วิธีที่ง่ายที่สุดที่ฉันพบคือเพียงแค่ดาวน์โหลด. deb ( ลิงก์โดยตรงไปยังการดาวน์โหลด 64 บิตและการดาวน์โหลด32 บิต ) และดับเบิลคลิกเพื่อติดตั้งหรือใช้ dpkg เพื่อติดตั้ง:

dpkg -i libudev0_175-0ubuntu9_amd64.deb

สำหรับรุ่นก่อนหน้า

ใน Ubuntu รุ่นก่อนหน้าแพ็คเกจนี้มีให้บริการในที่เก็บอย่างเป็นทางการ คุณสามารถติดตั้งต่อไปนี้:

sudo apt-get install libudev0:i386

17
นี่คือคำตอบที่ถูก หากแพ็คเกจหายไปคุณติดตั้งแพ็คเกจ ... นั้นง่ายมาก การสร้างลิงค์ชื่อการแก้ไขฐานสิบหกการกำหนดค่า Google Chrome อีกครั้งการตอกย้ำซีพียูและการดัดแปลงผงพริกนั้นไม่ใช่ทางออกที่แท้จริง
berbt

2
แต่จะใช้งานได้หากแพ็คเกจนั้นพร้อมใช้งาน
Tamsyn Michael

1
@TamsynMichael แพคเกจไม่จำเป็นต้องมีอยู่ใน repositories คุณสามารถดาวน์โหลดได้จากลิงค์ข้างบนแล้วติดตั้งมันด้วยตัวเองในเวอร์ชั่น ubuntu ที่ไม่มีแพ็คเกจที่มีอยู่ใน repositories อย่างเป็นทางการ
Ryan Crichton

นี่ควรเป็นคำตอบที่ถูกต้อง! นี่คือการแก้ไขที่เหมาะสมไม่มี symlink ยุ่งหรืออะไร
lord-ralf-adolf

นี่เป็นวิธีที่ง่ายที่สุดที่ฉันสามารถหาได้ การเพิ่มการพึ่งพาพื้นที่เก็บข้อมูลที่เก่ากว่าเป็นความเจ็บปวด
denny

32

ฉันมีปัญหาเดียวกันสำหรับโปรแกรมอื่น แต่คำตอบที่ยอมรับของฌอนไม่ได้ช่วยฉันเลย ในการติดตั้ง 64- บิต 13.04 ที่อัปเกรดแล้วของฉัน libudev0 ไม่สามารถใช้ได้ทั้งในรูปแบบ 64 บิตหรือรูปแบบ i386 และติดตั้ง ia32-libs แล้ว ดังนั้นไม่มีลูกเต๋า

สิ่งที่ฉันต้องทำคือโซลูชันทางเทคนิคเพิ่มเติมของรุ่น senshikaze เล็กน้อย ฉัน symlinked libudev.so.0 ด้วยตนเองเพื่อ libudev.so.1 ในไดเรกทอรี x86_64 lib ดังนั้น:

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

สิ่งนี้แก้ไขได้สำหรับฉัน


การแก้ไขนี้สำหรับฉันเช่นกัน - ใช้ Ubuntu 15.04 64 บิต ขอบคุณมัด
Tamsyn Michael

แก้ไขใน Ubuntu 19.04
Alexander Haroldo da Rocha

5

ข้อผิดพลาดนี้อาจเกิดขึ้นเมื่อพยายามที่จะใช้NWปฏิบัติการได้จากNode Webkit แบบนี้:

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

วิธีแก้:

  1. รับ hex editor ที่อนุญาตให้คุณเปลี่ยนสตริง ASCII ของไบนารีเช่น hexedit :

    • ใน terminal ( Ctrl+ Alt+ T) sudo apt-get install hexeditทำงาน:
    • ทำตามคำแนะนำในเทอร์มินัล (พิมพ์รหัสผ่านถ้าจำเป็นให้ยืนยันการติดตั้ง)
  2. ไปที่ไดเร็กทอรีด้วยnode webkit :
    • ในกรณีของฉัน: cd ~/Dokumenty/node-webkit-*.
  3. Open nw binary โดยใช้คำสั่ง hex editor นำหน้าด้วยsudo:
    • sudo hexedit nwเรียกใช้:
  4. ค้นหาlibudev.so.0เป็นสตริง ASCII:
    • ถ้าใช้hexedit : Tabกด
    • กด+CtrlS
    • ประเภท: libudev.so.0.
  5. เปลี่ยน0ในlibudev.so.0สตริง1จึงกลายเป็น: libudev.so.1:
    • ใช้ปุ่มลูกศรเพื่อเลือก0ในlibudev.so.0สตริง
    • กด1บนคีย์บอร์ด
  6. ออกและบันทึกการเปลี่ยนแปลง
    • กด+CtrlX
    • กดYเพื่อบันทึกการเปลี่ยนแปลง

คุณทำเสร็จแล้ว นอกจากนี้ยังช่วยแก้ไขปัญหากับ Atraci แบบไบนารีเมื่อทำตามคำแนะนำเดียวกันยกเว้นการแก้ไข hex ไฟล์ Atraci แทน nw


2
cat nw | sed s/libudev.so.0/libudev.so.1/ > fixed_nw, chmod a+x fixed_nwและจากนั้นคุณสามารถเรียกใช้งานไม่จำเป็นต้องติดตั้งอะไร
Catalyst

4

คำตอบเดียวที่นี่ที่ทำงานบน Ubuntu 14.04 เป็นคำตอบที่ยอมรับได้และเนื่องจากมีความคิดเห็นมากมายชี้ให้เห็นว่าสิ่งนี้อาจทำให้เกิดปัญหากับระบบตามถนน (แม้ว่าฉันจะไม่รู้ตัวเองก็ตาม) สคริปต์นี้จะแจ้งให้ (ใน terminal) สำหรับรหัสผ่านรูทของคุณ มันจะสร้างลิงก์สัญลักษณ์และเปิดแอปพลิเคชัน (ในกรณีของฉันเวลาป๊อปคอร์น) เมื่อคุณออกจากแอปพลิเคชันมันจะใช้เซสชัน sudo ที่มีอยู่เพื่อลบลิงก์สัญลักษณ์:

#!/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 แทนหรือไม่
Flimm

@ สรุปให้ฉันรู้ว่าคุณจะไปได้อย่างไร
TenLeftFingers

1
ฉันลงเอยด้วยคำตอบนี้แทน
Flimm

4

ฉันเพิ่งพบวิธีที่จะทำให้งานนี้มันค่อนข้างโง่

ฉันมี Google Chrome ติดตั้งอยู่ในระบบของฉันและ Chrome มีการแชร์วัตถุนี้ฝังอยู่ ดังนั้นฉันต้องสร้างลิงก์สัญลักษณ์ไปยังไลบรารีในไดเรกทอรีการติดตั้ง Chrome

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

มันใช้งานได้ดีสำหรับฉัน


4

นี่เป็นวิธีที่ง่ายที่สุดที่ฉันพบ

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

2

ดังที่ฟิลสตรองชี้ให้เห็น

ติดตั้ง libudev.so.1

sudo apt-get install libudev1:i386

จากนั้นลิงก์เป็น libudev.so.0

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

1

ฉันทำสิ่งนี้ใน 14.04 แต่ควรจะคล้ายกัน เพียงลบแพ็คเกจและติดตั้งใหม่ ไลบรารีที่ถูกต้องจะถูกติดตั้งอย่างเหมาะสม

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

ฉันแน่ใจว่าคำตอบอื่น ๆ ใช้งานได้ แต่ฉันมีความรู้พื้นฐานในการแก้ไขออบเจกต์ระบบไฟล์ที่จัดการโดยแพ็คเกจการจัดการการกำหนดค่า


1

นี่คือสิ่งที่ฉันใช้เพื่อแก้ไขปัญหาเดียวกันบน 32 บิต Ubuntu 15.04

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

0

UPDATE ฉันสร้างสคริปต์ทุบตีเพื่อปิดโปรแกรมที่คุณต้องการใช้งาน คุณสามารถเพิ่มลงในโฟลเดอร์ bin ในเครื่องของคุณและเพียงแค่เริ่มต้นโปรแกรมโดยไม่ต้องคัดลอก & วางหรือรันเชลล์สคริปต์

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

คำตอบเก่า ใน Ubuntu 14.04 ฉันได้รับข้อความแสดงข้อผิดพลาดจาก Dart Editor เมื่อพยายามใช้ Live Preview (Chromium) ข้อผิดพลาดก็แก้ไขได้โดยการติดตั้งlibudev1และการสร้างการเชื่อมโยงสัญลักษณ์

    sudo apt-get install libudev1

ฉันใช้สคริปต์ดังกล่าวข้างต้นโดย TenLeftFingers เพื่อดำเนินการ 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

หาก Dart Editor ไม่ทำงานให้ตรวจสอบว่ามีการติดตั้ง JAVA และนั่นไม่ใช่ปัญหาสิทธิ์

    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

และสร้าง IDE ที่ปฏิบัติการได้:

    sudo chmod a+x ./DartEditor

สิ่งนี้ใช้ได้สำหรับฉัน


0

ฉันได้รับข้อผิดพลาดเดียวกันในระบบ 32 บิตของฉันหลังจากอัปเกรดจาก Xubuntu Precise เป็น Trusty นี้แก้ไขให้ฉัน:

sudo dpkg-reconfigure google-chrome-stable

ผมพบว่ามันนี่ ไม่มีพารามิเตอร์อย่างแน่นอนฉันไม่แน่ใจว่าวิธีนี้จะแก้ไขได้ แต่มันก็ทำ สิ่งที่ฉันชอบที่สุดคือไม่ต้องทำอะไรที่อาจทำให้เกิดปัญหากับฉันในอนาคตและไม่ต้องการให้ฉันตามล่าหาแพ็คเกจใด ๆ


-1

หากใครเจอหน้านี้ในขณะที่ขุดเว็บเพื่อแก้ไขใน libudev.so.0 & Emotiv Epoc SDK Dev Edition บน Ubuntu ฉันหวังว่าสิ่งต่อไปนี้จะช่วยได้:

// config ของฉันคือ 64 บิต Ubuntu 13.04

สำหรับระบบ 64 บิต:

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

สิ่งที่อนุญาตให้ป้องกัน "ข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libudev.so.0: คลาส ELF ที่ไม่ถูกต้อง: ELFCLASS32"

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

สำหรับระบบ 32 บิต:

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

สิ่งที่อนุญาตให้ป้องกัน "ข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libudev.so.0: คลาสเอลฟ์ที่ไม่ถูกต้อง: ELFCLASS64" (โปรดทราบว่าเป็นการเดาฉันใช้ระบบ 64 บิต)

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

EmotivControlPanel, EmoKey, EmoComposer, ตัวอย่าง Java & ตัวอย่าง Qt ที่ปรับแต่งเองเล็กน้อยควรจะสามารถเรียกใช้ tu หลังจากทำตามข้างต้น (ฉันได้ลองทุกขั้นตอนด้านบน + อื่น ๆ ที่พบในเว็บ (ล้นล้น, .. ) แต่ไม่มีใครทำงาน สำหรับฉันนั่นคือสิ่งที่ฉันทำหลังจาก "ลอง & ผิด"

ท้ายสุด แต่ไม่ท้ายสุดถ้าใครที่นี่รู้วิธีเรียกใช้โปรแกรมที่คอมไพล์กับ 32 บิต libs บนระบบ 64 บิตในขณะที่ระบุว่าจะใช้งานไลบรารี 3 บิต 32 บิตของบุคคลที่จัดเตรียมไว้ให้หรือไม่?

สำหรับผู้ที่รู้ว่าฉันกำลังพูดถึงอะไรฉันควรจะเรียกใช้ตัวอย่าง "EmoCube" & "BlueAvatar" Qt ในระบบ 64 บิตของฉันอย่างไร

-> สำหรับสิ่งที่ฉันได้ลองมาแล้วสิ่งที่ฉันทำได้มากที่สุดคือ: "เกิดข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libedk.so.1: คลาส ELF ผิด: ELFCLASS64"

ฉันเดาว่า symlink ที่ lib ในไดเรกทอรี i386 จะไม่ทำให้มัน (แม้ว่าฉันยังไม่ได้ลอง) ดังนั้นถ้าใครมีคำตอบ ... ฉันรอคอยที่จะอ่านมัน

ไชโยทั้งหมด +


-4

รันคำสั่งเหล่านี้ในเทอร์มินัล:

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

สิ่งนี้ช่วยฉันได้


cd / lib / x86_64-linux-gnu / sudo cp libudev.so.0.13.0 libudev.so.1
user214274
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.