Como adicionar automaticamente o novo caminho à variável $ PATH após a instalação do pacote RPM?

3

Eu quero adicionar automaticamente um novo caminho para a variável $ PATH cada vez que meu pacote RPM for instalado.

Eu tentei usar um script de pós-instalação no meu RPM. Aqui está a parte do arquivo de especificação do RPM que contém este script de instalação de post:

%post
PATH=$PATH:/usr/app/mdg/bin
export PATH

Mas após a instalação bem-sucedida, o $ PATH não mudou. Por favor me ajude com esse problema.

    
por SIGSEGV 15.08.2012 / 14:38

2 respostas

4

Você não pode alterar o ambiente do usuário assim. Você poderia tentar adicionar algo a /etc/profile , mas isso é um desastre. Você poderia colocar um arquivo em /etc/profile.d , o que é melhor, mas sua distribuição pode não suportar. A melhor solução seria colocar um link simbólico de um lugar que já está em seu caminho, por exemplo:

ln -s /weird/place/my-program /usr/bin/my-program
    
por 15.08.2012 / 17:56
1

Tudo o que você fez foi definir a variável pela duração do script de pós-instalação. Isso não afeta o caminho em nenhum outro lugar.

O caminho do sistema é definido a partir de vários locais, alguns deles dependentes da distribuição. A única maneira que existe em todos os lugares é /etc/profile . Mas um script de instalação de pacote não tem permissão para modificar /etc/profile pelas regras de qualquer distribuição sã.

A verdadeira resposta à sua pergunta é: não faça isso. Se um executável pertencer ao caminho e for fornecido por um pacote, o executável pertencerá a /usr/bin . Você não precisa colocar o executável em si: é a maneira usual, mas não há problema em colocar um link simbólico. Por exemplo, se todos os executáveis do seu programa estiverem em /usr/lib/myprogram/bin , vincule os que devem estar no caminho em /usr/bin . Inclua os links simbólicos no rpm, para que eles sejam adequadamente rastreados pelo gerenciador de pacotes (não os crie no script postinstall). Você pode criá-los na seção %install da especificação de RPM, que é executada quando o RPM é criado (consulte também Criando symlink em / usr / bin ao criar um RPM ):

%install
…
ln -s ../../lib/myprogram/foo ../../lib/myprogram/bar ${RPM_BUILD_ROOT}%{_bindir}
    
por 16.08.2012 / 03:32