Bagaimana saya bisa menyimpan dua versi dari paket yang sama di archlinux?

8

Saya menjalankan Archlinux. Baru-baru ini, salah satu paket bernama icudiperbarui; Namun, Firefox tergantung libicuuc.so.56, sedangkan R bergantung pada libicuuc.so.55. Bagaimana saya bisa menyelesaikan masalah ini?

Catatan: paket R dibangun terhadap Intel MKLlibiary, sehingga tidak berfungsi pada versi baru dependensi. Saya mencoba untuk membangun kembali R - masih tergantung pada yang lamalibicuuc.so.55

Nick
sumber
2
Hal-hal seperti itu seharusnya tidak terjadi dengan repo resmi. Hanya jika Anda belum memperbarui sepenuhnya, karena pembaruan parsial tidak didukung oleh rilis bergulir archlinux. Jika benar-benar seperti ini (pada sistem yang sepenuhnya diperbarui), Anda harus mengajukan bug.
bvolkmer

Jawaban:

6

Saya berasumsi Anda ingin menjalankan executable khusus dengan perpustakaan lama. Mari kita sebut executable myprogram.

Jika Anda menempatkan libicuuc.so.55di direktori yang berbeda, misalnya karena /opt/oldlibs/libicuuc.so.55dimungkinkan untuk menginstruksikan myprogramuntuk menggunakan perpustakaan lama dengan perintah seperti ini:

LD_LIBRARY_PATH=/opt/oldlibs myprogram

File perpustakaan dapat diekstraksi dari file paket (yang mungkin dapat Anda temukan di /var/cache/pacman/pkg).

Jika ini tidak menyelesaikan masalah tentang bagaimana Anda ingin menggunakan aplikasi, Anda dapat mempertimbangkan menjalankannya di chroot atau wadah sebagai gantinya.

Alexander
sumber
1
Saya memiliki campuran pengalaman antara * BSD dan Linux saya pikir dua kali antara menyebutnya penjara atau chroot. Bukankah nama sebenarnya penjara, dan chroot perintah untuk mencapainya? Kalau tidak, jawab tuan yang luar biasa.
Rui F Ribeiro
@RuiFRibeiro Saya pikir "penjara" adalah istilah umum pada * BSD (dan ini berperilaku berbeda dari chroot, karena mereka lebih aman), sementara saya pikir "chroot" lebih umum digunakan di Linux. Saya percaya setara dengan penjara BSD di Linux, keamanan bijaksana, akan menjadi Linux Containers. Terima kasih atas masukannya.
Alexander
1
Terima kasih atas jawaban Anda, itu berhasil. Saya harus menunjukkan bahwa saya dimasukkan /opt/oldlibs/ke dalam /etc/ld.so.conf.d/R.conf. ( R.confFile sudah ada di sana, dengan Rlib path standar di dalamnya.)
Nick
0

pengalaman saya dengan arch linux

systemctl mulai mongodb memberikan proses mulai kesalahan

saya cukup menekan journalctl -xe untuk memeriksa log saat ini

itu menunjukkan hilang libboost_system.so.1.64.1 (yang lama)

itu adalah sumlink yang saya pecahkan dengan menggunakan

readlink -f /lib/libboost_system.so.1.65.1  (new one)

readlink beri tahu saya titik symlink ke /usr/lib/libboost_system.so.1.65.1

saya mengekstrak boost-libs 1.64 dari / var / cache / pacman / pkg dan rekatkan itu semua / lib file ke / usr / lib juga lewati untuk mengganti file lama

ini menyelesaikan saya melanggar dependensi pekerjaan lebih lanjut jika tidak menyelesaikan membuat symlink yang hilang seperti

 ln -s /lib/libboost_system.so.1.64.1 /usr/lib/libboost_system.so.1.64.1 

mengalami gain

jangan mencari tambalan selalu gunakan pacman -Beli && pacman -S package_name untuk menginstal apa pun. pembaruan parsial tidak didukung (dalam hal lengkungan)

shivshankar
sumber