Recentemente (e tolamente, já que há uma solução simples aqui, configurei --prefix=
a opção para algo diferente de default /usr/bin
) configure
d e make
d gcc-4.9.1
, sem definir a --prefix=
opção. Eu realmente não quero repetir make
tudo, já que levará muito tempo.
Meu /usr/bin/
diretório já contém gcc-4.8.2
, conforme instalado pelo sistema operacional (Ubuntu-14.04). O ponto principal é que todos os links simbólicos existentes apontam para coisas como gcc-4.8
e serão substituídos no comando make install
por links simbólicos para gcc-4.9
etc.g++-4.9
Posso passar um argumento para make
, dizendo para não substituir links simbólicos que já existem? Ou similar?
Responder1
Primeiramente, observe queo prefixo padrãoa menos que um seja especificado explicitamente, geralmente é /usr/local. Portanto, substituir a instalação em/usr pode nem ser um problema no seu caso, embora certamente possa causar confusão no futuro, tendo um GCC em/usr e outro em/usr/local.
Embora eu não tenha certeza se ele funciona especificamente com o gcc-4.9.1 (embora eu veja poucas razões para que isso não aconteça), o autoconf (que gera o configure
script) fornece facilidades parasubstituindo o prefixo no momento da instalação.
Citando odocumentação do autoconf, seção "nomes de instalação":
A maneira mais portátil de afetar os locais de instalação é passar os locais corretos para configuração; entretanto, muitos pacotes fornecem um ou ambos os seguintes atalhos para passar atribuições de variáveis para a linha de comando 'make install' para alterar os locais de instalação sem ter que reconfigurar ou recompilar.
O primeiro método envolve fornecer uma variável de substituição para cada diretório afetado. Por exemplo, 'make install prefix=/path/to/alternate' escolherá um local alternativo, bem como influenciará todas as outras variáveis de configuração de diretório que foram expressas em termos de '${prefix}' (ou, dito de outra forma, todas diretórios especificados durante a configuração, mas não em termos do prefixo comum, devem ser substituídos no momento da instalação para que toda a instalação seja realocada). A abordagem de substituições de variáveis makefile para cada variável de diretório é exigida pelos Padrões de Codificação GNU e, idealmente, não causa recompilação. Porém, algumas plataformas possuem limitações conhecidas com a semântica de bibliotecas compartilhadas que acabam exigindo recompilação ao utilizar este método, particularmente perceptível em pacotes que utilizam GNU Libtool.
O segundo método envolve fornecer a variável 'DESTDIR'. Por exemplo, 'make install DESTDIR=/path/to/alternate' irá preceder '/path/to/alternate' antes de todos os caminhos de instalação. A abordagem de substituições 'DESTDIR' não é exigida pelos Padrões de Codificação GNU e não funciona em plataformas que possuem letras de unidade. Por outro lado, evita melhor problemas de recompilação e funciona bem mesmo quando algumas opções de diretório não foram especificadas em termos de '${prefix}' no momento da configuração. Para pacotes que suportam 'DESTDIR', a variável deve permanecer indefinida durante o configure e o 'make all', e somente ser especificada durante o 'make install'.
Entãomake install DESTDIR=/opt/gcc-4.8.2
devefaça praticamente o que você procura. Pode ser necessário mover os arquivos um pouco depois, dependendo da estrutura exata de diretórios desejada, mas deve ser boa o suficiente para começar.
Observe que não testei isso; você o executa por sua própria conta e risco.