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
./configureemake, 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$PATHou 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 checkoumake test, e, em seguida,make installousudo make install, você às vezes deseja passar opções para o scriptconfigurepara configurar a compilação. Em particular, como diz pfnuesel , é assim que você configura onde o software será instalado. Mesmo que a etapamake installrealmente instale o software, os locais onde tudo será instalado são tipicamente estabelecidos no./configurestep.A opção mais comum para isso é
--prefix. O prefixo padrão quando você não disserconfigureo 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/galahadfor 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
--prefixsignificaQuando 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/sbinse eles são comumente usados para administração do sistema ou eles podem ir (mais raramente, nos dias de hoje) emdirectory/gamesse forem jogos. Bibliotecas entramdirectory/libou 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/manoudirectory/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/etcprovavelmente 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 .