LD_LIBRARY_PATH sempre em branco após o sudo

8

Eu recebo erros de biblioteca compartilhada sempre que pareço instalar o software manualmente. Ao executar echo $LD_LIBRARY_PATH , ele aparece como ... nada . Eu tentei adicionar /usr/local/lib a um arquivo .conf em /etc/ld.so.conf.d , mas parece que nunca é executado.

Isso não funciona (citações ou outras):

LD_LIBRARY_PATH="/usr/local/lib"
export LD_LIBRARY_PATH
sudo ldconfig -v

O valor será definido temporariamente, mas não reterá o valor se eu sair tanto de uma janela de terminal. A reinicialização também não faz nada.

    
por Dissident Rage 03.12.2014 / 15:28

3 respostas

7

Adicione o seguinte ao seu .bashrc :

vim ~/.bashrc

...
export LD_LIBRARY_PATH=/usr/local/lib

Isso permitirá que você reinicie seu computador e ainda tenha esse caminho atribuído.

    
por 03.12.2014 / 15:37
1

No Red Hat Enterprise Linux (RHEL) 6, /etc/ld.so.conf contém include ld.so.conf.d/*.conf . Sem essa linha, itens em /etc/ld.so.conf.d/*.conf nunca seriam analisados.

Para ver quais bibliotecas / diretórios ldconfig estão analisando

ldconfig -v 

Print current version number, the name of each directory as it is scanned, and any links that are created.

    
por 03.12.2014 / 16:09
0

Eu finalmente resolvi isso com um alias:

alias sudo='sudo PATH="$PATH" HOME="$HOME" LD_LIBRARY_PATH="$LD_LIBRARY_PATH"'

Certifique-se de usar aspas simples, para que as variáveis sejam expandidas no momento da chamada, e não no momento em que o alias for definido.

Isto:

  • preserva HOME (que, caso contrário, é definido como / root)
  • preserva o PATH (que, caso contrário, é definido como um caminho 'seguro' em suders)
  • preserva o valor atual de LD_LIBRARY_PATH (que, caso contrário, fica em branco)

(Você pode ver com o que as coisas são definidas: sudo bash -c "echo $HOME" )

Estou trabalhando com drivers personalizados e sempre tenho que usar meus programas de teste para acessar o driver. Eu não quero instalar versões de teste de bibliotecas na área do sistema, então eu uso LD_LIBRARY_PATH para configurar um diretório de teste específico conforme necessário. Eu não posso apenas definir um LD_LIBRARY_PATH fixo, eu preciso ser capaz de alterá-lo e manter a configuração atual. Preservar o PATH e o HOME me dá acesso ao meu ambiente de trabalho - scripts e estrutura de diretórios.

Esse alias evita ter que conceder permissões gerais a sudoers ... e aparentemente não há solução alternativa para LD_LIBRARY_PATH, independentemente das configurações dos sudoers. Não funciona sudo dentro de scripts, mas estes podem ser codificados conforme necessário.

    
por 13.11.2015 / 21:16