![¿Por qué no está /usr/local/lib en la ruta de la biblioteca de forma predeterminada?](https://rvso.com/image/109240/%C2%BFPor%20qu%C3%A9%20no%20est%C3%A1%20%2Fusr%2Flocal%2Flib%20en%20la%20ruta%20de%20la%20biblioteca%20de%20forma%20predeterminada%3F%20.png)
Bajo laFHS, los paquetes del sistema (por ejemplo, RPM) instalan bibliotecas en /usr/lib
(o /usr/lib64
). De manera similar, las bibliotecas compiladas utilizando la antigua " configure;make;make install
" rutina, que no forman parte de la distribución del sistema, se instalan de forma predeterminada en /usr/local/lib
(o /usr/local/lib64
).
En general, se considera de mala educación exigir a los usuarios que modifiquen LD_LIBRARY_PATH o ld.so.conf
las aplicaciones que instalan. Ver por ejemplo:
http://web.archive.org/web/20060719201954/http://www.visi.com/~barr/ldpath.html
Sin embargo, ¿no debería /usr/local/lib
haber una excepción a esta regla?
Si ese es el caso, ¿por qué muchas/la mayoría de las distribuciones no se incluyen /usr/local/lib
en la ruta de búsqueda de la biblioteca de forma predeterminada? Hasta ahora sólo ArchLinux parece haber considerado esto como un error.http://bugs.archlinux.org/task/20059?project=1&opened=2263
& el relacionadohttp://bbs.archlinux.org/viewtopic.php?id=99807
¿Es más correcto /usr/local/lib
incluir una aplicación que necesita una biblioteca /usr/local/lib
en su RPATH o esperar que el sistema operativo ya tenga esa configuración? No me gusta la idea de usar algo que no esté basado en $ORIGIN en RPATH.
Esto no es una cuestión de pedantería, ya que tiene implicaciones para la estabilidad del sistema y cómo se debe empaquetar el software.
Respuesta1
Se ha sugerido que /usr/local/lib debería estar en la ruta predeterminada y debería considerarse un 'error' en variantes de Linux como Red Hat donde no lo está.
esta respuestahttps://stackoverflow.com/a/17653893 señala las partes más destacadas dehttp://linuxmafia.com/faq/Admin/ld-lib-path.html
Muchas distribuciones derivadas de Red Hat normalmente no incluyen /usr/local/lib en el archivo /etc/ld.so.conf. Considero que esto es un error, y agregar /usr/local/lib a /etc/ld.so.conf es una ``solución'' común necesaria para ejecutar muchos programas en sistemas derivados de Red Hat.
Le planteé esto a Red Hat y ahora no estoy de acuerdo.
Los paquetes proporcionados por Red Hat nunca se instalan en /usr/local en sistemas donde los proveedores sí instalan en /usr/local, la respuesta es diferente. En esos sistemas, se puede esperar razonablemente que /usr/local/lib esté en la ruta de búsqueda predeterminada.
Red Hat señaló que /usr/local/lib no debería estar en la ruta de búsqueda predeterminada ya que cualquier biblioteca agregada allí podría ser seleccionada por RPM y yum.
Investigué esto más a fondo. Si instala su propia versión de una biblioteca del sistema en /usr/local/lib, entonces podría satisfacer una dependencia de otro paquete del sistema que instala normalmente mediante RPM o yum. Obviamente esto podría afectar la estabilidad del sistema. Peor aún, lo haría de forma bastante sutil. yum check podría informar que tiene todas las versiones de proveedor de todos los paquetes que necesita y no darse cuenta de que tiene su propia versión de algo importante en /usr/local/lib.
En sistemas que utilizan un administrador de paquetes diferente, es posible que esto no se aplique.
No tengo una respuesta completa sobre qué poner en su RPATH. Sin embargo, creo que debería evitar depender de las bibliotecas en /usr/local/lib y en su lugar instalarlas en /opt (es decir, en algún lugar que usted controle como parte de su instalación) siempre que sea práctico.