Quando você instala o software com make install
ou sudo make install
, arquivos diferentes são colocados em diretórios diferentes. Os executáveis que fornecem comandos que o usuário deve executar geralmente vão em um diretório bin
, as bibliotecas geralmente entram em um diretório lib
, as páginas de manual geralmente entram em um diretório man
e assim por diante.
Quando você executa ./configure
, a opção --prefix
permite especificar onde esses diretórios são . É chamado de --prefix
porque permite que você forneça o prefixo que aparece nos caminhos de cada um dos diretórios onde os arquivos do programa ou da biblioteca que você está construindo devem ser instalados. A maioria dos scripts configure
suportam --prefix
, e omitindo e apenas executando ./configure
é normalmente equivalente a ./configure --prefix=/usr/local
.
Para responder mais detalhadamente, reproduzi duas seções da minha resposta para Como instalar o arquivo tar “globalmente”? (em Unix & Linux ), que abordam especificamente essa questão:
Configurando sua compilação
Quando você tiver o código-fonte compilado executando
./configure
emake
, você normalmente usarámake install
(ousudo make install
) para instalá-lo. Isso copia arquivos do diretório de compilação no local de instalação. Quando a coisa que você está instalando fornece comandos executáveis, esses executáveis são normalmente copiados em um diretório que está em$PATH
ou que você deve considerar adicionar a$PATH
.Embora a criação e instalação de software seja geralmente tão simples quanto executando
./configure
,make
, às vezesmake check
oumake test
, e, em seguida,make install
ousudo make install
, você às vezes deseja passar opções para o scriptconfigure
para configurar a compilação. Em particular, como diz pfnuesel , é assim que você configura onde o software será instalado. Mesmo que a etapamake install
realmente instale o software, os locais onde tudo será instalado são tipicamente estabelecidos no./configure
step.A opção mais comum para isso é
--prefix
. O prefixo padrão quando você não disserconfigure
o que usar, geralmente é/usr/local
. (Ocasionalmente, o código fonte de um programa ou biblioteca é padronizado outro prefixo. Felizmente isso é raro.)Portanto,
./configure
é geralmente equivalente a./configure --prefix=/usr/local
. Para instalar o software em seu diretório inicial, você pode usar./configure --prefix=/home/galahad
(se/home/galahad
for seu diretório home) ou--prefix="$HOME"
. Então, claro, você deve ainda construa e instale o software commake
. Eu devo dizer que nem todo o software que é distribuído na forma de código-fonte é construído este caminho. Você deve sempre procurar documentação dentro do arquivo de código-fonte.O que
--prefix
significaQuando você executa
./configure --prefix=directory
, você está indicando que o software deve ser instalado sob o Diretóriodirectory
. Mas isso raramente, ou nunca, coloca arquivos soltos emdirectory
. Em vez disso, ele coloca arquivos que servem diferentes nos diferentes subdiretórios dedirectory
. Se aqueles subdiretórios não existem, eles os criam.Os executáveis geralmente vão em
directory/bin
, embora eles pode ir emdirectory/sbin
se eles são comumente usados para administração do sistema ou eles podem ir (mais raramente, nos dias de hoje) emdirectory/games
se forem jogos. Bibliotecas entramdirectory/lib
ou outro diretório com nomes semelhantes %código%. Arquivos de cabeçalho entram %código%. Páginas de manual entram %código%. Arquivos de dados usados pelo software entramdirectory/lib32
.Isso é o que significa que
directory/include
é um prefixo . É o diretório pai que contém os locais nos quais diferentes arquivos será instalado. Assim, aparece como um prefixo no absoluto caminhos da maioria dos arquivos e diretórios criados executandodirectory/man
oudirectory/share
.Existem algumas exceções para isso. Configuração em todo o sistema arquivos - que às vezes são criados ao instalar o software que vai usá-los, embora nem sempre - geralmente vão em
directory
. Isso não é normalmente afetado pela especificação de um prefixo diferente. Mesmo se você instalar um monte de software emmake install
, ele ainda vai usar principalmentesudo make install
, e seu diretório/etc
provavelmente será inexistente, vazio ou contém muito poucos arquivos.Em muitos sistemas, você pode encontrar mais informações sobre layout do sistema de arquivos executando
/usr/local
. Se você estiver usando um GNU / Linux sistema você pode estar interessado na Hierarquia do sistema de arquivos Padrão .