Por que nem todas as alternativas são listadas / aplicadas?

0

Eu não usei alternatives antes, e posso estar fazendo errado: certamente não estou obtendo os resultados esperados. Preciso usar duas versões do GCC e queria configurá-las usando alternatives . Aqui está o que eu fiz:

$ sudo alternatives --install /usr/bin/gcc gcc /opt/gcc4.6.3/bin/gcc 20000
$ sudo alternatives --config gcc

There is 1 program that provides 'gcc'.

  Selection    Command
-----------------------------------------------
*+ 1           /opt/gcc4.6.3/bin/gcc

Enter to keep the current selection[+], or type selection number: 1
$ which gcc
/usr/lib64/ccache/gcc

O que está acontecendo? Por que o gcc ainda é aquele instalado em outro lugar? Por que este (que por algum motivo é selecionado, independentemente da minha escolha) não é sequer listado como uma alternativa?

Estou usando o Fedora 17, se for importante.

    
por wvxvw 15.02.2013 / 20:09

1 resposta

1

Seu comando é basicamente:

alternatives --install /usr/bin/gcc gcc /opt/gcc4.6.3/bin/gcc

Isso significa que o sistema de alternativas irá ajustar o link simbólico / usr / bin / gcc para apontar para o binário correto em / opt ou o que quer que seja.

Ao fazer isso, não mudará o caminho que você vê em which e comandos similares, que apenas procuram um binário chamado gcc em $ PATH, e é realmente impossível para as alternativas sistema para alterar dinamicamente o $ PATH do seu shell já em execução.

Além disso, você tem ccache instalado, o que significa que o diretório de scripts do wrapper ccache é colocado em $ PATH antes do usual / usr / bin, portanto which sempre exibirá o caminho do script wrapper. (O script, quando executado, procurará o gcc real usando o mesmo $ PATH novamente.)

    
por 16.02.2013 / 00:29