
Como faço para que minha instalação do PHP Source use as bibliotecas dentro de /usr/local/programname/lib
ou /usr/local/lib
?
Eu tentei definir LD_LIBRARY_PATH para cada um dos nomes de programas como LD_LIBRARY_PATH="/usr/local/programname1/lib:/usr/local/programname2/lib:/usr/local/programname3/lib"
.
E eu desconectei. Até executei source /etc/environment
(coloquei a variável LD_LIBRARY_PATH em /etc/environment), até reiniciei o sistema.
Mas ainda assim, quando executo ./configure --with-openssl --with-curl
, ele me diz que libssl não existe.
Não quero usar o pacote libssl-dev
and libcurl-dev
fornecido pelo apt, porque preciso das versões mais recentes para teste.
E observei que: Se eu instalar o diretório lib do programa em /usr/local/lib
vez de /usr/local/programname/lib
, ele funcionará sem definir nenhuma variável de ambiente.
Mas, na minha opinião, /usr/local/programname/lib
é mais claro, então quero usar esse tipo de caminho.
Como posso fazer com que o PHP use as bibliotecas internas /usr/local/programname/lib
em vez de /usr/local/lib
? Com isso quero dizer que quero dar mais prioridade /usr/local/programname/lib
do que outros lib
diretórios.
programname
refere-se ao nome de cada um dos programas instalados dentro do /usr/local
.
Até tentei usar /etc/ld.so.conf.d/programname.conf
(escrevi /usr/local/programname
dentro dele), e executei ldconfig
. Mas ainda sem sorte.
A propósito, estou usando o Ubuntu 20.10
Editar:
"Não lute contra as convenções do sistema"- Não posso simplesmente seguir em frente assim. Tenho que tentar fazer isso, ou ficarei preso e dependente domeio velhopacotes que o apt me dá (mesmo que me dê os mais novos, não posso por exemplo: usar http/3 e testar e muito mais..). E nenhum teste será possível. Faço isso para tornar meus programas à prova de futuro e até mesmo para me divertir experimentando-os. Testando com programas novos. Instalar /usr/local
não é bom, porque eu testo com várias versões das bibliotecas. Como eu testei com OpenSSL 1.1.1i e OpenSSL 3.0.0, e outras versões também. Portanto, instalar em /usr/local não me beneficiará nisso, mas instalar em /usr/local/openssl-1.1.1i
e /usr/local/openssl-3.0.0
será mais limpo e me poupará mais tempo. Não posso simplesmente continuar correndo make install
e make uninstall
sempre. Não apenas OpenSSL, até mesmo cURL e outros pacotes.
Responder1
A convenção padrão do sistema é usada em tantos lugares que você cria uma grande sobrecarga ao usar diretórios diferentes.
A maneira mais fácil é usar contêineres Docker para testes. Dessa forma, você pode usar locais padrão do sistema dentro do contêiner.
Responder2
Eu adicionei PKG_CONFIG_PATH="/usr/local/programname/lib/pkgconfig"
set LD_LIBRARY_PATH
to /usr/local/programname/lib
e funciona agora. Minha configuração do PHP agora usa a versão que instalei dentro do /usr/local/programname
.
Depois de tanta pesquisa, foi isso que descobri. Mas, até que eu continue verificando, não posso confirmar se funcionará para todos que desejam fazer dessa forma.