Como compilar e instalar programas da fonte

37

Este é um problema que realmente limita meu prazer com o Linux. Se o aplicativo não estiver em um repositório ou se não tiver um script de instalação, eu realmente luto onde e como instalar um aplicativo a partir do código-fonte.

Comparativamente ao Windows, é fácil. Você é (praticamente) necessário para usar um aplicativo instalador que faz todo o trabalho em um assistente. Com o Linux ... nem tanto.

Então, você tem alguma dica ou instruções sobre isso ou existem sites que explicitamente explicam como, por que e onde instalar programas Linux a partir do código-fonte?

    
por Nitrodist 11.08.2010 / 00:54

5 respostas

21

Normalmente, o projeto terá um site com instruções sobre como criá-lo e instalá-lo. Google para isso primeiro.

Na maior parte, você fará o seguinte:

  1. Faça o download de um tarball (arquivo tar.gz ou tar.bz2), que é um lançamento de uma versão específica do código-fonte
  2. Extraia o tarball com um comando como tar zxvf myapp.tar.gz para um tarball compactado ou tar jxvf myapp.tar.bz2 para um tarball bzipado
  3. cd no diretório criado acima
  4. executar ./configure && make && sudo make install

Ou:

  1. Use git ou svn ou o que for para extrair o código-fonte mais recente de seu repositório de origem oficial
  2. cd no diretório criado acima
  3. executar ./autogen.sh && make && sudo make install

Tanto o configure como o autogen.sh aceitarão um argumento --prefix para especificar onde o software está instalado. Eu recomendo verificar Onde devo colocar software eu me compilar? para aconselhamento sobre o melhor local para instalar software personalizado.

    
por 11.08.2010 / 01:02
3

Eu só quero acrescentar que existem gerenciadores de pacotes que compilam pacotes a partir do código-fonte e lidam com todas as dependências de pacotes, sinalizadores, etc.

Nos sistemas BSD, é ports : Uso da coleção de ports

No Debian, o gerenciador de pacotes apt-get pode instalar a partir da fonte também: APT HOWTO: Trabalhando com pacotes fonte (O mesmo vale para o Ubuntu, o Linux-mint e todo o resto baseado no Debian)

A distribuição do Gentoo usa o gerenciador de pacotes portage , que compila todo o sistema somente a partir da fonte: Introdução ao Portage .

O Slackware pode compilar pacotes, mas eu não sei se há algum gerenciador de pacotes para isso lá .. =)

De qualquer forma, você pode sempre compilar pacotes manualmente, como o Sandy mencionado acima =) Também deve ser possível usar apt-get ou portage gerenciadores de pacotes em qualquer outra distribuição ...

    
por 11.08.2010 / 01:14
2

Acho que é melhor ler a documentação que acompanha o programa ou aplicativo específico que você deseja instalar. Geralmente existem arquivos readmes / readmes dentro dos tarballs (o arquivo fonte da aplicação que você pode baixar normalmente) ou talvez até instalar arquivos para ler e aprender sobre qual é a maneira preferida de instalar o aplicativo. Resumindo: RTFM;)

    
por 11.08.2010 / 12:52
1

Um resumo para usar a coleção de ports no FreeBSD:

Encontrar porta

As portas são organizadas por categoria, por isso, se você não sabe em que categoria está a porta, precisa encontrá-la primeiro:

cd /usr/ports
make search name=myport

Às vezes, há muitas entradas dessa maneira. Eu pessoalmente prefiro:

find /usr/ports -name myport* -print -depth 2

Use o * ao pesquisar, pois geralmente há várias versões de uma porta disponíveis. O argumento de profundidade garante que seus resultados de retorno não sejam desnecessariamente cheios de correspondências que você não deseja.

Configuração

Muitas vezes, você vai querer fazer alguma configuração; softwares como Apache e Postgres praticamente exigem isso. Existem três opções principais: linha de comando, ambiente e arquivos de configuração. Para começar com a linha de comando:

make showconfig

isto listará as opções de configuração padrão. Se você gosta dos padrões, você está pronto para compilar e instalar. Se não,

make config

abrirá uma caixa de diálogo onde você pode selecionar as opções desejadas. (Não fique confuso com isso e make configure que configura sua porta com as opções escolhidas!) Isso é suficiente, mas para alguns softwares, como o Apache, geralmente há uma configuração complexa que é um simples diálogo não vai aguentar. Para isso, você também deve olhar para o (s) Makefile (s) que, às vezes, lhe fornecerão alguns alvos adicionais para o make, que lhe darão mais informações. Para continuar o exemplo do Apache

make show-modules
make show-options
make show-categories

lhe dará informações sobre como configurar os módulos escolhidos, opções de thread e afins. Se os padrões de sua porta são muito bons e você só quer mudar algumas coisas, você também pode simplesmente passar pares key = value como variáveis de ambiente:

make MYVBL1=MYVAL1 ... install clean

Além disso, você pode definir opções de troca por meio da opção -D :

make -D MYVAR -D MYOTHERVAR ... install clean

Para configuração complexa, entretanto, a linha de comando não funciona bem e você é melhor que nenhum dos dois primeiros métodos será efetivo. Nesse caso, você pode criar um arquivo de configuração e passá-lo para make com a variável __MAKE_CONF. O FreeBSD tem um arquivo de configuração padrão: /etc/make.conf , que geralmente contém informações sobre portas instaladas anteriormente e outras configurações do sistema. Para começar, crie um arquivo com suas opções de portas, chame-o de ~/myport.mk e combine esse arquivo com /etc/make.conf:

cat /etc/make.conf ~/myport.mk >> ~/make.myport.conf

você pode verificar sua configuração:

make showconfig __MAKE_CONF=~/make.port.conf

e se tudo parece bom:

make install clean __MAKE_CONF=~/make.myport.conf

CUIDADO! Se você precisar ajustar suas configurações após make configure ou uma instalação no todo ou em parte, você deve limpar sua configuração primeiro :

make rmconfig

Não fazer isso resultará em interações inesperadas entre o subsistema de portas, os padrões make da sua porta e sua configuração desejada.

Isso é muito para um resumo, mas a complexidade da configuração é principalmente sobre o aplicativo, não a porta. Bash, por exemplo, não tem realmente nenhuma opção.

Instalação

Esta é a parte fácil:

make install clean

ou você pode

make build
make install
make clean

que é apenas mais digitação.

Isso é muito bonito. Obviamente, há mais coisas que você pode fazer, como listar recursivamente dependências e opções de configuração, atualizar com patches e assim por diante. Aqui, vou encaminhá-lo para a seção Ports do Manual de usuário , a página do manual do subsistema de porta (boas informações sobre destinos de criação adicionais) e a página make man.

    
por 11.08.2010 / 17:55
0

Recentemente, comecei a usar o "Checkinstall" ao instalar a partir da origem fora do meu gerenciador de pacotes. Ele cria um "pacote" a partir de um tarball de terceiros que pode ser instalado e gerenciado (e desinstalado) por meio das ferramentas do gerenciador de pacotes.

Confira este artigo - link

    
por 11.08.2010 / 14:15