removido
(usa Nenhuma)
Enviado em 24/02/2017 - 08:59h
homemsemnome escreveu:
Porr* Ruan, que boa notícia velho. Sempre ouvi dizer que era perigoso se adicionar pacotes recentes no Debian stable e por isso nunca o fiz. No máximo um backport. Mas vem cá, caso o pacote que eu esteja compilando exija libs externas, como eu faço para jogá-las em /usr/local/lib ? É que eu ando seguindo a dica de um bródi daqui do VOL para compilar pacotes sem permissão root e aí eu costumo utilizar o --prefix=/opt/non-root para compilar o pacote. Só que quando for exigidas libs externas, como eu faço para adicionar essas libs mais recentes (baixadas fora dos repositórios oficiais, talvez) em /usr/local/lib ? É só jogá-las lá e descompactá-las mesmo ou tem algo mais a se fazer? Fiquei contente em descobrir esse truque mano.
E só recapitulando aqui então para ver se eu entendi: primeiro eu direciono as libs mais novas para /usr/local/lib , depois eu ajusto o LD_LIBRARY_PATH , compilo o pacote com as variáveis LDFLAGS e CFLAGS e parto para o abraço?
Muito obrigado.
Tipo, se o pacote exige uma lib que esta instalada em /usr/lib, o pacote vai ser compilado em compatibilidade com essa lib. Se ele exige libs mais recentes, tu pode compilar essas bibliotecas mais recentes e mandá-las para outro local que quiser (via prefix e outras opções), por exemplo;
/configure --prefix=/home/usuario/opt --libdir=/home/usuario/opt/usr/lib --includedir=/home/usuario/opt/usr/include --sysconfdir=/home/usuario/opt/etc --localstatedir=/home/usuario/opt/var --mandir=/home/usuario/opt/usr/man --docdir=/home/usuario/opt/usr/doc
Essas são algumas opções padrões para o configure, geralmente são essas (para ver mais: ./configure --help). Fazendo isso, a pasta /home/usuario/opt vai se tornando uma nova raíz, com pastas como etc, usr, var, e outras.
Para compilar pacotes usando as bibliotecas dessa pasta, basta setar as variáveis LDFLAGS e CFLAGS antes do ./configure. Por exemplo, quero compilar um novo pacote que necessite da biblioteca que instalei agora pouco na pasta /home/usuario/opt, então faço:
LDFLAGS="-L/home/usuario/opt/usr/lib" CFLAGS="-I/home/usuario/opt/usr/include" ./configure --prefix=/home/usuario/opt --libdir=/home/usuario/opt/usr/lib --includedir=/home/usuario/opt/usr/include --sysconfdir=/home/usuario/opt/etc --localstatedir=/home/usuario/opt/var --mandir=/home/usuario/opt/usr/man --docdir=/home/usuario/opt/usr/doc
Fazendo dessa forma, o pacote vai ser compilado em compatibilidade com a biblioteca instala em /home/usuario/opt e não mais em /usr. Entretanto, esse é um modo que dá muito trabalho, afinal será necessário compilar bibliotecas mais novas e talvez algumas dessas não será trivial, exigindo algum patch e/ou alguma lib do core mais recente. Mas é possível.
O LD_LIBRARY_PATH seria para o seu pacote procurar as libs necessárias em outro local ao invés do padrão do sistema, que é em /usr/lib (ou /usr/lib64). Nesse caso, teria que que setar essa variável
antes de executar o binário que foi instalado em /home/usuario/opt. Por ex:
LD_LIBRARY_PATH=/home/usuario/opt/usr/lib /home/usuario/opt/usr/bin/binario
Há formas de deixar a pasta /home/usuario/opt/usr/lib em prioridade, para não precisar usar o LD_LIBRARY_PATH toda hora.
--
Microsoft Windows é como ar condicionado
Pára de funcionar quando você abre uma janela.
Linux Counter: #596371