Come posso mantenere due versioni dello stesso pacchetto in archlinux?


8

Sto eseguendo Archlinux. Recentemente, uno dei pacchetti denominati è icustato aggiornato; tuttavia, Firefox dipende libicuuc.so.56, mentre R dipende da libicuuc.so.55. Come posso risolvere questo problema?

Nota: il pacchetto R è stato creato contro Intel MKLlibiary, quindi non funziona con la nuova versione delle dipendenze. Ho provato a ricostruire R - dipende ancora dal vecchiolibicuuc.so.55


2
Queste cose non dovrebbero accadere con il repository ufficiale. Solo se non è stato completamente aggiornato, poiché gli aggiornamenti parziali non sono supportati dalla versione rolling di archlinux. Se è davvero così (su un sistema completamente aggiornato) dovresti presentare un bug.
bvolkmer,

Risposte:


6

Suppongo che desideri eseguire un eseguibile specifico con la vecchia libreria. Chiamiamo l'eseguibile myprogram.

Se si inserisce libicuuc.so.55in una directory diversa, ad esempio in /opt/oldlibs/libicuuc.so.55quanto è possibile indicare myprogramcome utilizzare la vecchia libreria con un comando come questo:

LD_LIBRARY_PATH=/opt/oldlibs myprogram

I file della libreria possono essere estratti dal file del pacchetto (che probabilmente puoi trovare in /var/cache/pacman/pkg).

Se ciò non risolve il problema relativo al modo in cui si intende utilizzare l'applicazione, è possibile considerare di eseguirlo in un chroot o in un contenitore.


1
Io che ho il mix di esperienza tra * BSD e Linux, penso due volte tra chiamarlo una prigione o chroot. Il vero nome non è il carcere e chroot il comando per raggiungerlo? Altrimenti, eccellente risposta signore.
Rui F Ribeiro,

@RuiFRibeiro Penso che "jail" sia il termine comune su * BSD (e questi si comportano diversamente dai chroot, poiché sono più sicuri), mentre penso che "chroot" sia più comunemente usato su Linux. Credo che l'equivalente delle jail BSD su Linux, per quanto riguarda la sicurezza, sarebbe Linux Containers. Grazie per l'input.
Alexander,

1
Grazie per la tua risposta, funziona. Tengo a precisare che ho messo /opt/oldlibs/in /etc/ld.so.conf.d/R.conf. (Il R.conffile è già lì, con Ril percorso lib standard in esso.)
Nick

0

la mia esperienza con arch linux

systemctl start mongodb fornisce l'errore di avvio del processo

ho semplicemente colpito journalctl -xe per controllare il registro corrente

mostra mancante libboost_system.so.1.64.1 (vecchio)

è un sumlink che lo risolvo usando

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

readlink dimmi punto symlink a /usr/lib/libboost_system.so.1.65.1

estraggo boost-libs 1.64 da / var / cache / pacman / pkg e incollo tutti i file / lib in / usr / lib anche saltare per sovrascrivere il vecchio file

questo mi risolve a spezzare le dipendenze, inoltre se funziona risolve un collegamento simbolico di like mancanti

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

esperienza acquisita

non cercare patch usa sempre pacman -Suy && pacman -S nome_pacchetto per installare qualcosa. aggiornamento parziale non supportato (in caso di arco)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.