
¿Cómo hago para que mi instalación de PHP Source utilice las bibliotecas dentro de /usr/local/programname/lib
en su lugar o /usr/local/lib
?
Intenté configurar LD_LIBRARY_PATH para cada uno de los nombres de programas como LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib"
.
Y me desconecté. Incluso ejecuté source /etc/environment
(puse la variable LD_LIBRARY_PATH en /etc/environment), incluso reinicié el sistema.
Pero aún así, cuando ejecuto ./configure --with-openssl --with-curl
, me dice que libssl no existe.
No quiero utilizar el paquete libssl-dev
and libcurl-dev
proporcionado por apt, porque necesito las versiones más recientes para realizar pruebas.
Y noté que: si instalo el directorio lib del programa en /usr/local/lib
lugar de /usr/local/programname/lib
, funciona sin configurar ninguna variable de entorno.
Pero, en mi opinión, /usr/local/programname/lib
es más claro, por eso quiero utilizar este tipo de camino.
¿Cómo puedo hacer para que PHP use las bibliotecas internas /usr/local/programname/lib
en lugar de /usr/local/lib
? Con esto quiero decir que quiero darle más prioridad /usr/local/programname/lib
que a otros lib
directorios.
programname
hace referencia al nombre de cada uno de los programas que se instalan dentro de /usr/local
.
Incluso intenté usarlo /etc/ld.so.conf.d/programname.conf
(escribí /usr/local/programname
dentro de él) y ejecuté ldconfig
. Pero todavía no hubo suerte.
Por cierto, estoy usando Ubuntu 20.10
Editar:
"No luches contra las convenciones del sistema."- No puedo seguir así. Tengo que intentar hacer esto, o simplemente me quedaré estancado y dependeré delun poco viejopaquetes que me da apt (incluso si me da los más nuevos, no puedo por ejemplo: usar http/3 y probarlo y más...). Y no será posible realizar ninguna prueba. Hago esto para que mis programas estén preparados para el futuro e incluso para divertirme experimentándolos. Probando con programas que son nuevos. La instalación /usr/local
no se siente bien, porque pruebo con múltiples versiones de las bibliotecas. Como lo pruebo con OpenSSL 1.1.1i y OpenSSL 3.0.0, y también con otras versiones. Por lo tanto, instalar en /usr/local no me beneficiará en esto, pero instalar en /usr/local/openssl-1.1.1i
y /usr/local/openssl-3.0.0
será más limpio y me ahorrará más tiempo. No puedo simplemente seguir corriendo make install
y make uninstall
todo el tiempo. No solo OpenSSL, incluso cURL y otros paquetes.
Respuesta1
La convención predeterminada del sistema se utiliza en tantos lugares que le genera una gran sobrecarga al utilizar diferentes directorios.
La forma más sencilla es utilizar contenedores Docker para sus pruebas. De esa manera puede utilizar ubicaciones predeterminadas del sistema dentro del contenedor.
Respuesta2
Agregué PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
set LD_LIBRARY_PATH
to /usr/local/programname/lib
y funciona ahora. Mi configuración PHP ahora usa la versión que instalé dentro de /usr/local/programname
.
Después de tanta investigación, esto es lo que se me ocurrió. Pero, hasta que lo siga comprobando, no puedo confirmar que funcione para todos los que quieran hacerlo de esta manera.