เกิดข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libicuuc.so.59: ไม่สามารถเปิดไฟล์วัตถุที่ใช้ร่วมกัน: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว


11

หลังจากอัพเดตด้วยpacman -Syuq:

# pacman -Sc

pacman: ข้อผิดพลาดขณะโหลดไลบรารีที่แชร์: libicuuc.so.59: ไม่สามารถเปิดไฟล์วัตถุที่แชร์ได้: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

# find / -name libicuuc.so.* 2>/dev/null
/usr/lib/libicuuc.so.60.1
/usr/lib/libicuuc.so.60

Arch Linux ในรุ่น Pi 1:

# uname -an
4.9.62-1-ARCH #1 SMP Fri Nov 17 13:42:55 UTC 2017 armv6l GNU/Linux

ปัญหาเดียวกันที่นี่ปรากฏขึ้นในวันนี้ สำหรับฉัน libicuuc.so.59 ฉันต้องผ่าน command line เพื่อบู๊ตและหลาย ๆ โปรแกรมไม่ทำงานอีกต่อไป
zakrapovic

libicui18n.so.59 อาจหายไปเช่นกัน
zakrapovic

จริง ๆ แล้วฉันแก้ปัญหาด้วย pacman -Sc แล้วตามด้วย pacman -Syuu
zakrapovic

คำตอบ:


20

วิธีแก้ปัญหาที่เสนอก่อนหน้านี้ไม่เกี่ยวข้องหรือไม่ได้ผลสำหรับฉัน ด้วยเหตุผลบางประการการอัพเกรดicuแพ็คเกจจาก 59.1-2 เป็น 60.1-1 ทำให้การเชื่อมโยงขาดและหลายโปรแกรม (รวมถึง pacman) ล้มเหลวด้วยข้อผิดพลาดนี้หลังจาก Pacman ไม่ขัดจังหวะด้านข้างของฉัน

หากคุณยังมีแพ็คเกจก่อนหน้าในแคชคุณสามารถลองใช้วิธีนี้ได้ซึ่งเหมาะกับฉัน:

  1. ค้นหาแพคเกจเวอร์ชันแคช (เช่นของฉันคือ/var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz)
  2. แยกมัน: mkdir -p ~/pkg/tmp && tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
  3. คัดลอก libs ไปยังโฟลเดอร์ lib ของคุณ: sudo cp ~/pkg/tmp/usr/lib/libicu*.59 /usr/lib/
  4. ดำเนินการต่อด้วยการอัปเดต: sudo pacman -Syyu
  5. ตอนนี้คุณสามารถลบไฟล์ที่คุณเพิ่งแตกออกมาได้

2
ขอบคุณสิ่งนี้ใช้ได้สำหรับฉัน แต่ฉันจะลบไฟล์ libicu * .59 ที่คัดลอกได้อย่างไร rm /usr/lib/libicu*.59?
Skatox

สิ่งนี้ใช้ได้สำหรับฉันเช่นกัน ขอบคุณมี upvote
Vaughan Hilts

2

คุณยังสามารถใช้ตัวแปร LD_LIBRARY_PATH เพื่อโหลดไลบรารี icu จากตำแหน่งอื่น ด้วยวิธีนี้คุณสามารถหลีกเลี่ยงสำเนาใด ๆ ไปยัง / usr / lib:

$ mkdir -p ~/pkg/tmp
$ tar xJvf /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz -C ~/pkg/tmp
$ su
# LD_LIBRARY_PATH=`pwd`/pkg/tmp pacman -U /var/cache/pacman/pkg/icu-59.1-2-x86_64.pkg.tar.xz

มันเป็นLD_LIBRARY_PATH=`pwd`/pkg/tmp/usr/libในกรณีของฉัน
v_2e

1

/var/log/pacman.logฉันวิจัยปัญหาและพบเกี่ยวกับ ฉันอ่านบันทึกและพบว่าปัญหาคือ:

...
[2017-11-28 04:34] [ALPM] upgraded libmariadbclient (10.1.28-1 -> 10.1.29-1)
[2017-11-28 04:34] [ALPM] transaction interrupted

การอัปเดตถูกขัดจังหวะดังนั้นปัญหาการเชื่อมโยง

จากนั้นผมก็ดาวน์โหลดเฟิร์มจากที่นี่ ฉันดึงไลบรารี่ที่หายไป:

$ gunzip ArchLinuxARM-rpi-latest.tar.gz
$ tar -tf ArchLinuxARM-rpi-latest.tar |grep libicuuc.so.59
./usr/lib/libicuuc.so.59.1
./usr/lib/libicuuc.so.59
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59.1
$ tar -xf ArchLinuxARM-rpi-latest.tar ./usr/lib/libicuuc.so.59

libicuuc.so.59เป็น symlink ไปlibicuuc.so.59.1ดังนั้นฉันย้ายไปlibicuuc.so.59.1/usr/lib/libicuuc.so.59

เล่นpacmanผมได้รับข้อผิดพลาดที่libicudata.so.59ขาดหายไป ฉันดึงไลบรารี่ที่หายไป/usr/libและpacmanทำงาน :)

ฉันอัปเดตระบบด้วยpacman -Syuqและตรวจสอบกับldd /usr/bin/pacmanห้องสมุดทั้งหมดว่ามีอยู่ ฉันย้ายห้องสมุด v59 จาก/usr/libและตรวจสอบว่าpacmanใช้งานได้

รีบูตด้วยนิ้วมือข้าม ... สำเร็จแล้ว !!!

pacman -Sc และเข้านอนด้วยรอยยิ้ม :)



0

แก้ไขปัญหาด้วย pacman -Sc แล้วตามด้วย pacman -Syyu ไม่แน่ใจว่าทำไมมันแก้ปัญหาได้


0

ในระบบของคุณไม่ได้ติดตั้ง lib32-icu เพียงติดตั้ง lib32-icu จาก pacman และปัญหาทั้งหมดจะได้รับการแก้ไข

sudo pacman -S lib32-icu

0

ฉันแก้ไขปัญหานี้ด้วยความช่วยเหลือของลิงค์ต่อไปนี้ ที่นี่

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.