¿Para qué se usa ld_library_path??

¿Para qué se usa ld_library_path??
Antes de conocer la ruta ld_library, debe tener el concepto de variables de entorno. Pero si no sabes, no te preocupes, explicaré lo que es. Las variables cuyo valor se determina por el sistema operativo o la capacidad de microservicio se denominan variables ambientales. Una variable de entorno es un valor designado dinámicamente que puede influir en cómo se comportan los procesos de computadora. El proceso se ejecuta en el componente del entorno del proceso.

En primer lugar, se desarrollaron variables de entorno para UNIX, pero ahora Windows y Linux también tienen estas variables. Cuando se crea algún proceso, hereda una copia del entorno de tiempo de ejecución de sus padres, con la excepción de los cambios explícitos realizados por el padre cuando el niño se crea por defecto. Un par de nombre/valor constituye una variable de entorno, y cualquier número de ellos puede generarse y referenciarse en cualquier momento. Comúnmente se usan letras mayúsculas al nombrar variables de entorno. Esto ayuda a diferenciar las variables de entorno de otros tipos de nombres en el código de programación en general.En el sistema operativo UNIX, las variables de entorno son sensibles a mayúsculas, pero no en DOS, OS/2 o Windows.

LD_Library es también una variable de entorno del sistema operativo Unix/Linux; En este artículo discutiremos esta variable de entorno en detalle.

Uso de la variable ld_library_path

En el sistema Unix/Linux Ld_library_path Para decir que Dynamic Link Loader, un pequeño programa que comienza todas sus aplicaciones, para determinar dónde buscar bibliotecas dinámicas compartidas con las que se vinculó una aplicación. Un colon (:) separa una lista de directorios, y esta lista se verifica incluso antes de las rutas/rutas de búsqueda incorporadas y ubicaciones convencionales como (/lib,/usr/lib ...).

Algunos otros usos de ld_library_path son:

  • Comparación de nuevas versiones de una biblioteca compartida con una aplicación que se ha compilado previamente.
  • Reubicación de bibliotecas compartidas, por ejemplo, para mantener vivas las versiones anteriores.
  • También se utiliza para crear un sistema autosuficiente, un entorno reubicable para aplicaciones más grandes para que sean independientes de cambiar las bibliotecas del sistema.

Problema con ld_library_path

Es muy útil hasta que intentes usarlo para resolver tus problemas. Esta línea parece extraña, pero esto es lo que realmente sucede cuando intenta aplicarla en un entorno de usuario/sistema, el escenario empeora y todas las variables ambientales comienzan dependiendo de ello y se bloquea, ya que no puede manejar todas las tareas!

Algunos problemas enfrentados usando LD_Library_Path son:

Seguridad: Los directorios LD_Library_Path se marcan primero, antes de su ubicación real. Este enfoque podría ser utilizado por un individuo malicioso para obligar a su aplicación a ejecutar una versión maliciosa de una biblioteca compartida. Una de las razones por las cuales los ejecutables setuid/setgid ignoran esa variable es debido a esto.

Actuación: El cargador de enlaces debe buscar en todos los directorios proporcionados hasta que encuentre bibliotecas compartidas (vinculadas con la aplicación). En consecuencia, hará que se abran varias llamadas del sistema y hará que se bloqueen con enoent "no hay dicho archivo o directorio". Si la ruta especificada tiene muchos directorios, llevará mucho tiempo y puede verificar esto desde la hora de inicio de su aplicación. Como resultado, esto hará que todo el sistema disminuya la velocidad.

Inconsecuencia: El problema más frecuente causado por el uso de ld_library_path es la inconsistencia. Ld_library_path obliga a un programa a cargar una biblioteca compartida contra la cual no estaba vinculada, lo que ciertamente es incompatible con la versión original. Esto puede ser muy evidente, como cuando la aplicación se bloquea, o puede dar como resultado resultados incorrectos si la biblioteca recogida no coincide exactamente con la funcionalidad de la versión original. Esto será difícil de depurar este último, especialmente.

Solución

La mejor solución es cuanto menos lo use, menos problemas enfrentará. De hecho, trate de evitar el uso de ld_library_path:

Cómo evitar ld_library_path:

Proporcione la ubicación correcta de la biblioteca compartida: Cuando compila su aplicación, debe proporcionar la ubicación exacta de las bibliotecas compartidas y especificar la ruta en la opción de enlazador '-RPath' para informar al enlazador para incluirlos en el Runpath de su ejecutable o puede usar LD_RUN_PATH para especificar múltiples rutas

Herramienta para solucionar el problema:Para arreglar/cambiar el runpath de un ejecutable binario, hay programas disponibles, como Chrpath en Linux. El problema de esta manera es que el espacio ejecutable que lleva esta información (yo.mi. la cadena de ruta) no se puede expandir, yo.mi. Solo puedes reescribir una ruta existente.

No ponga ld_library_path en el perfil de usuario: Al poner ld_library_path en el perfil de usuario, creará problemas para usted, así que evite esto.

No ponga ld_library_path en el perfil del sistema: Algunos ISV proporcionan un software que inserta automáticamente la configuración de la ruta de la biblioteca LD en los perfiles del sistema durante la instalación, o incluso le solicita al usuario que lo haga. Simplemente di que no! Intente manejar el problema de otra manera, por ejemplo, escribiendo un script de envoltura, o dígale al proveedor que lo rectifique.

Ld_library_path es útil si se usa para tres usos que se mencionan en la porción de uso, pero trate de usarlo lo menos posible para protegerse de meterse en problemas.

Conclusión

Ld_library_path es una variable ambiental utilizada en sistemas Linux/Unix. Se utiliza para decir cargadores de enlaces dinámicos dónde buscar bibliotecas compartidas para aplicaciones específicas. Es útil hasta que no te metas con él. Es mejor evitar el uso de ld_library_path y usar alternativas. En este artículo se discute el uso de la variable ambiental LD_Library_Path y luego se discute el problema con el uso y luego su solución. Después de leer este artículo, conocerá los pros y los contras de la variable ld_library_path.