É melhor compilar a partir da fonte ou instalar a partir de um pacote .deb?

18

Às vezes, ao baixar um software da Internet, acho que existe um pacote .deb pronto para o meu Debian / Ubuntu e também um tarball a ser compilado. No começo, eu simplesmente usava o pacote para facilitar a instalação e nem ousava tentar compilar. Até o som disso me assustou um pouco. Hoje em dia, no entanto, quando tenho a opção, às vezes me encontro em um dilema: existe uma vantagem impopular na compilação a partir da fonte em comparação com o pacote .deb? Espero descobrir aqui, obrigado.

the_midget_17
fonte

Respostas:

24

A vantagem de compilar a partir do código-fonte é que você pode compilar pacotes com determinadas opções / sinalizadores que podem estar ausentes / desabilitadas nos pacotes Ubuntu padrão de estoque. Além disso, facilita a instalação de várias versões do mesmo programa. Além disso, você pode escolher uma versão exata de um pacote que já pode ser removido ou ainda não está presente nos repositórios do Ubuntu (exemplo: eu tenho várias versões do Python 2.4.x no meu diretório / opt /, pois preciso que ele execute alguns Programas).

A desvantagem de compilar a partir do código-fonte é que, a menos que você construa um .deb e o instale, o procedimento normal "./configure; make; sudo make install" mantém o gerenciador de pacotes do Ubuntu completamente inconsciente das alterações que você está fazendo. não receberá nenhuma atualização para o software compilado manualmente; e é possível que o gerenciador de pacotes mais tarde substitua / quebre seu pacote se você não for cuidadoso em instalá-lo em um local separado.

Resumindo: sempre considere instalar primeiro a partir de repositórios padrão do Ubuntu, depois considere instalar um .deb; compile apenas a partir das fontes se você souber exatamente por que precisa fazer isso.

Sergey
fonte
Eu também li, o que o desempenho do pacote pode ser diferente, quando compilado, melhor compatibilidade com o kernel atual. Não comparou pessoalmente.
Fedir RYKHTIK
@Fedir: Não tenho certeza se o kernel tem algo a ver com isso, é uma arquitetura de processador - por exemplo, antigamente muitas distribuições continham pacotes compilados com o conjunto de instruções 80386 para compatibilidade máxima, enquanto a compilação manual de um programa para o Pentium o habilitaria. para usar instruções mais eficientes. Existem distribuições inteiras, como o Gentoo, que são compiladas a partir do código fonte na máquina host por esse motivo. A diferença, no entanto, é geralmente mínima e só pode ser percebida em aplicações muito específicas.
Sergey
1
Observe que o uso de checkinstall no lugar de make install alivia muitas das desvantagens mencionadas. Veja help.ubuntu.com/community/CompilingEasyHowTo
ndemou
1
Desculpe por nitpicking, @EliahKagan, mas, embora virtualenv seja incrível, é mais para manter vários ambientes Python com diferentes bibliotecas instaladas. Se você queria uma versão específica do Python, talvez compilada com configurações específicas - ainda seria necessário instalar o binário real - a partir de um .deb ou compilado a partir do zero.
Sergey
@ Emery Você está certo. (E eu não vejo nada que você tenha dito como um erro - se eu pedir desculpas pelo meu comentário errado e enganoso!) Pelo que entendi, os gerenciadores de pacotes como criarão ambientes virtuaisconda automaticamente e instalarão instalações diferentes do Python para eles , criando e mantendo versões por projeto. Mas, como você diz, o virtualenv não faz isso sozinho.
Eliah Kagan 3/08
1

Eu estava discutindo sobre isso ontem. Eu acho que é extremamente importante não criar nada frágil, pois sabe-se que não existe documentação atualizada e boa, especialmente quando você está trabalhando com um sistema frágil, não haverá tempo para combater o fogo e escrever documentação e, onde tudo é robusto, a documentação não é necessária. Portanto, você nunca deve compilar a partir da fonte, encontrar outra solução, usar outro software, alterar sua arquitetura, mas não usar algo que irá quebrar após a atualização. E sim, não tem nada a ver com a versão do kernel, é sobre a arquitetura da sua máquina, e hoje em dia você dificilmente pode obter diferenças significativas com a compilação a partir do código fonte, aposto que você não receberá nenhuma.

Edik Mkoyan
fonte
0

Certamente é muito mais fácil instalar o .deb, embora, se você puder, a melhor aposta é encontrá-lo em um repositório ou em um ppa, para que você possa receber atualizações.

AFAIK não há nenhum benefício real em compilar você mesmo, a menos que você planeje alterá-lo primeiro. Se você deseja apenas o software como está, instale o arquivo .deb

Chris Wayne
fonte