Quais são as vantagens de criar ferramentas / bibliotecas a partir da fonte?

8

Ao construir a partir da fonte, você obtém algum benefício? O código é melhor otimizado para sua arquitetura de hardware? É otimizado melhor em geral?

Por que alguém escolheria construir a partir da fonte em vez de usar um sistema de gerenciamento de pacotes como o APT / yum? Se houver algum tipo de ganho de otimização, quando isso supera os benefícios de um sistema de gerenciamento de pacotes?

Doug T.
fonte
Suas duas opções não são mutuamente exclusivas. Você pode personalizar as fontes de um pacote ou até mesmo empacotá-lo.
Faheem Mitha 17/03/11

Respostas:

11

A criação a partir da fonte fornece as seguintes opções que não estão disponíveis ao usar uma versão de um gerenciador de pacotes binários.

Compilar a partir da fonte permite:

  • use otimizações específicas do processador
  • use a versão mais recente
  • saiba como funcionam a compilação e a vinculação (sugestão de @mattdm)
  • corrigir bugs, trabalho de desenvolvimento
  • definir opções de tempo de compilação (por exemplo, incluir recursos X no vim)
Shawn J. Goff
fonte
1
para um usuário comum de desktop, o ganho em otimizações específicas do processador vale o custo da complexidade do gerenciamento manual de dependências entre partes de software? É como um ganho de 2% ou uma duplicação no desempenho?
Doug T.
1
@Doug Para softwares pesados ​​com CPU, a diferença pode ser de 10 a 20%; para softwares de desktop típicos, a diferença é zero. Se você quiser tentar compilar software a partir da fonte, eu recomendaria uma distribuição baseada na fonte (por exemplo, Gentoo). É uma péssima idéia instalar o software da fonte (além do software de terceiros instalado no / opt) em uma distribuição binária.
Šimon Tóth
Eu acho que o desempenho não vale a pena sair das dependências do gerenciador de pacotes. No entanto, existem sistemas de gerenciamento de pacotes baseados na fonte que controlam as dependências e permitem compilar a partir da fonte. A vantagem listada acima que você não obtém com isso é apenas a 'versão mais recente' - o gerenciador de pacotes possui uma versão escolhida que funcionará com o restante da distribuição.
Shawn J. Goff
5
A única coisa que eu acrescentaria é: aprenda muito mais sobre o que está acontecendo sob o capô. Isso pode valer a pena por si só.
mattdm
7

Eu fiz exatamente isso muito recentemente.

Compilei o openssl-1.0.something da fonte em um sistema Linux Slackware 11.0. Eu queria consertar a coisa de login por senha para pausar por 7 segundos em um login com falha, de modo a impedir aqueles irritantes adivinhos de senha ssh em chinês.

Compilei o Apache httpd 2.2.17 no mesmo sistema Slackware 11.0 porque ele veio com o Apache 2.0.something e queria usar o 2.2.x httpd.conf de outro sistema.

Pensando bem, eu também compilei o Alpine 2.0 (cliente de email, sequência de pinho) para o mesmo sistema. Por que o Slackware 11.0? Ele está rodando em uma máquina de 2003 com gráficos Intel "Brookdale", e qualquer Slackware posterior simplesmente não suporta gráficos mal documentados da Intel.

Em uma máquina diferente, peguei o suporte para chip sem fio TI ACX111 do github e compilei um novo driver, permitindo que eu usasse uma placa sem fio de US $ 9.

Eu também costumo recompilar kernels do Linux para especificá-los para a máquina na qual eles são executados.

Portanto, no meu caso, há várias razões de personalização, suporte de hardware e "apenas porque".

Dado o que sabemos sobre epidemiologia em uma população uniforme (http://www.usenix.org/publications/login/2005-12/openpdfs/geer.pdf), por que nem todos compilam a partir da fonte em seus próprios sistemas, com qualquer opções de tempo de compilação que eles escolhem? Isso criaria uma população muito mais resistente a vírus e worms.

Bruce Ediger
fonte
Existem maneiras mais simples de diminuir a velocidade desses malfeitores ssh-hammering ... procure limitação de taxa de tabelas de ipt. Essa solução tem uma aplicabilidade mais ampla e, além disso, não anula sua garantia.
vonbrand
Normalmente, o linux não vem com garantia. O Slackware 11 já tem alguns anos. Você está implorando a pergunta com FUD, especificamente, "medo". "Oh não! Não faça isso! Você anulará sua garantia!" Quantas vezes alguém confia em uma garantia? Muito pouco. Todos gostaríamos que alguém assumisse a responsabilidade (especialmente moral, mas principalmente financeira) por todas as nossas ações, mas isso simplesmente não pode acontecer sem muitas conseqüências ruins para os indivíduos e a sociedade. Eu mantenho meu conselho e muito mais: compile você mesmo a fonte e assuma toda a responsabilidade. Não culpe ninguém por mais ninguém.
Bruce Ediger
Oh vamos lá. Se for RHEL ou SLES (ou mesmo Ubuntu LTS com contrato de suporte), certamente há uma garantia a ser anulada. Se fosse o Debian ou o Fedora, um relatório de bug para o seu OpenSSH hackeado será fechado apenas sem duas vezes.
vonbrand