make install
faz o que o autor Makefile
quer que ele faça. Normalmente, a essa altura, é muito tarde para alterar o diretório de instalação, como é frequentemente conhecido anterior , durante a compilação, para que arquivos de ajuda e arquivos de configuração possam ser referenciados com nomes de caminho corretos.
Muitos projetos usam o GNU Autotools para tentar melhorar sua portabilidade entre as diferenças de hardware e sistemas operacionais. (Diferentes variantes do Unix usam cabeçalhos ligeiramente diferentes para declarações de funções que estão um pouco fora do caminho usual - exceto que a maioria dos programas precisa de um ou outro dos declarados em locais diferentes.)
Quando um projeto usa o Autotools, o mantra normal para instalá-lo é:
./configure
make
make install
O ./configure
normalmente permite que você use uma opção de linha de comando como --prefix /opt/apache
ou algo semelhante para especificar um nome de caminho diferente. /usr/local/
é um padrão comum prefix
. É muito mais fácil para o software construído localmente residir em um único local e o software fornecido pela distribuição para residir nos "diretórios principais": /usr/
/bin/
e assim por diante. (Empacotadores são muito cuidadosos em nunca tocar arquivos em /usr/local/
- eles sabem que é exclusivamente para administradores de sistema.)
De qualquer forma, o ./configure --prefix /path/to/new/prefix
definirá uma variável no Makefile
que está disponível ao compilar o programa, modificando as páginas de manual para que elas apontem para os locais corretos dos arquivos, modificando os arquivos de configuração etc. Então, make
criará o software especificamente para o local de instalação desejado e make install
o instalará nesse local.
A maioria dos programas pode ser executada mesmo sem a etapa make install
final - apenas ./program_name
geralmente os inicia. Esta é definitivamente uma coisa por projeto - algumas, como postfix
, qmail
, etc., são compostas de muitas peças diferentes e dependem de que todas trabalhem juntas. Outros, como ls
ou su
, podem ser independentes o suficiente para executar bem a partir do diretório em que foram construídos. (Isso nem sempre é útil - mas às vezes muito útil.)
No entanto, nem todos os projetos usam os Autotools - eles são enormes , complicados e miseráveis para serem mantidos. Makefile
s manuscritas são muito mais simples de escrever, e eu pessoalmente acho que apenas distribuir uma variável Makefile
simples com variáveis de configuração disponíveis é muito mais fácil para desenvolvedores e usuários. (Embora o ./configure ; make ; make install
mantra seja realmente fácil para os usuários quando ele funciona.)