¿Cómo puedo mantener dos versiones del mismo paquete en archlinux?

8

Estoy ejecutando Archlinux. Recientemente, uno de los paquetes nombrados icuse actualizó; sin embargo, Firefox depende libicuuc.so.56, mientras que R depende de libicuuc.so.55. ¿Como puedó resolver esté problema?

Nota: el paquete R se creó contra la Intel MKLbiblioteca, por lo que no funciona en una nueva versión de dependencias. Traté de reconstruir R, todavía depende de lo viejolibicuuc.so.55

Mella
fuente
2
Tales cosas no deberían suceder con el repositorio oficial. Solo si no ha actualizado completamente, ya que las actualizaciones parciales no son compatibles con la versión continua de archlinux. Si realmente es así (en un sistema completamente actualizado), debe presentar un error.
bvolkmer

Respuestas:

6

Supongo que desea ejecutar un ejecutable específico con la biblioteca anterior. Llamemos al ejecutable myprogram.

Si lo coloca libicuuc.so.55en un directorio diferente, por ejemplo, ya /opt/oldlibs/libicuuc.so.55que es posible indicar el myprogramuso de la biblioteca anterior con un comando como este:

LD_LIBRARY_PATH=/opt/oldlibs myprogram

Los archivos de la biblioteca se pueden extraer del archivo del paquete (que probablemente pueda encontrar /var/cache/pacman/pkg).

Si esto no resuelve el problema de cómo piensa utilizar la aplicación, puede considerar ejecutarla en un chroot o contenedor.

Alejandro
fuente
1
Yo teniendo la mezcla de experiencia entre * BSD y Linux, lo pienso dos veces antes de llamarlo una cárcel o chroot. ¿No es el nombre real de la cárcel, y chroot el comando para lograrlo? De lo contrario, excelente respuesta señor.
Rui F Ribeiro
@RuiFRibeiro Creo que "cárcel" es el término común en * BSD (y estos se comportan de manera diferente a los chroots, ya que son más seguros), mientras que creo que "chroot" se usa más comúnmente en Linux. Creo que el equivalente de las cárceles BSD en Linux, en cuanto a seguridad, serían los Contenedores Linux. Gracias por el aporte.
Alexander
1
Gracias por tu respuesta, eso funciona. Debo señalar que puse /opt/oldlibs/en /etc/ld.so.conf.d/R.conf. (El R.confarchivo ya está allí, con Rla ruta de acceso lib estándar en él.)
Nick
0

mi experiencia con arch linux

systemctl start mongodb dar error de inicio de proceso

Simplemente presiono journalctl -xe para verificar el registro actual

muestra falta libboost_system.so.1.64.1 (anterior)

es un sumlink lo resuelvo usando

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

readlink dime el enlace del enlace simbólico a /usr/lib/libboost_system.so.1.65.1

extraigo boost-libs 1.64 de / var / cache / pacman / pkg y pego todos los archivos / lib en / usr / lib también omito para anular el archivo antiguo

esto me resuelve romper dependencias más trabajo si no resolver hacer un enlace simbólico de falta como

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

ganancia de experiencia

no busque parches siempre use pacman -Suy && pacman -S package_name para instalar cualquier cosa. actualización parcial no compatible (en caso de arco)

shivshankar
fuente