Como construir todo o meu pacote instalado a partir de fontes?

26

Eu li sobre como as distribuições Linux baseadas na fonte, como o Gentoo, podem ter um aumento considerável de desempenho quando comparadas às distribuições pré-criadas como o Ubuntu, porque instalam a partir da fonte com otimizações para o seu sistema em particular. É possível construir o Ubuntu a partir da fonte para obter o mesmo tipo de benefício?

ciferkey
fonte
3
Instale o Gentoo, não o Ubuntu, para isso. Sério, por que usar uma distribuição que falha absolutamente no gerenciamento de dependências com base na fonte, em vez de uma que é ótima?
mathepic
7
Eu ficaria curioso para ver referências entre o código-fonte e o binário, onde eles realmente usavam as mesmas versões e configurações de pilha. A comparação é geralmente uma versão do Ubuntu (com seus padrões) versus o mais recente possível do Gentoo, com um sistema de arquivos excêntrico e padrões de aplicativos bizarros. Os padrões do Ubuntu são geralmente bastante sensatos e é daí que vem a maior parte de seu desempenho, e é por isso que as comparações mais diretas colocam o Ubuntu à frente do Gentoo.
Oli
1
Um ótimo exemplo de uma comparação ruim é este artigo da Linux Magazine (é necessário registro gratuito para ler) em que eles usam kernels diferentes, drivers Nvidia diferentes, versões X diferentes e ambientes de desktop diferentes. Você também pode comparar duas versões diferentes do Ubuntu. Eles mostrarão escalas semelhantes de diferença.
Oli
4
Aumentos de desempenho de quê? Taxa de transferência de rede, velocidade do disco, comutação de processos, cálculos matemáticos, gráficos 3D, tempo de inicialização?
desconhecido usuário
1
Eu recomendaria apenas a compilação de software, que precisa de desempenho da CPU em grande escala (a codificação de vídeo vem à mente) e é muito usado pelo usuário e se beneficia da otimização da CPU, como por exemplo, FMA3 ou AVX2.
21713 keiki

Respostas:

42

Is is possible to build Ubuntu from source to get the same kind of benefit?

Não tenho certeza dos benefícios se você tiver componentes de hardware razoavelmente novos, mas para a parte "Ubuntu da fonte" da pergunta, a resposta é SIM, você pode criar não apenas seus aplicativos favoritos da fonte, mas todo o sistema operacional.

Aqui está como:

Você precisa instalar o apt-build . É uma ferramenta de linha de comando como o apt-get, mas em vez de baixar e instalar o pacote binário, o apt-build baixa o código-fonte do pacote, o compila e depois o instala no seu sistema.

Depois de instalá-lo com

sudo apt-get install apt-build

Ser-lhe-á pedido um nível de otimização (o meio está ok), se você deseja criar um repositório apt-build para APT (Sim) e uma pergunta sobre a arquitetura do processador (minha intel i7 é considerada core2). Obviamente, todas as opções podem ser reconfiguradas desta maneira:

dpkg-reconfigure apt-build

O comando acima oferece duas opções adicionais para o compilador gcc e make builder. Suas descrições podem ser encontradas nos manuais do sistema: man gcc e man make.

Para obter opções de comando manuais e disponíveis, verifique

man apt-build

Mas os mais úteis são:

  • apt-build update - atualiza a lista de repositórios (como apt-get update)
  • apt-build upgrade - atualiza o sistema operacional (como apt-get upgrade)
  • programa de instalação do apt-build - instala um aplicativo (como o apt-get install)
  • mundo apt-build - algo para usuários hard-core, recompila todo o sistema!

Por exemplo:

Vamos dizer que você deseja compilar / instalar o Gedit. Em vez de instalar o apt-get, basta

sudo apt-build install gedit

O Apt-build utiliza as entradas deb-src contidas no arquivo /etc/apt/sources.list, para que os processos de compilação e instalação sejam totalmente automáticos (semelhante ao emergir encontrado no Gentoo). O Apt-build baixa fontes do aplicativo principal e suas dependências, os compila, cria um pacote deb e finalmente instala o pacote.

Algumas notas sobre o mundo apt-build.

Na minha opinião, não tente, a menos que você tenha 24 horas ou mais disponíveis!

Se for o primeiro, remova / desative / desinstale qualquer aplicativo de terceiros (é melhor fazer em uma nova instalação do Ubuntu) e faça:

sudo su
dpkg --get-selections | awk '{if ($2 == "install") print $1}'> /etc/apt/apt-build.list
exit

O comando acima copiará sua lista completa de pacotes do sistema para o apt-build.list para que eles possam ser compilados a partir do código-fonte. Abra esse arquivo

sudo gedit /etc/apt/apt-build.list

e remova qualquer entrada do GCC / G ++

Então você pode fazer:

sudo apt-build world

Sugiro adicionar duas opções - --yes e --force-yes - para tornar o processo de reconstrução totalmente automático.

Salih Emin
fonte
10
+1 na resposta concreta, em comparação com "por que construir?" respostas. Prefiro ler também uma opinião mais extensa (mesmo que subjetiva) sobre os benefícios que você pode (ou não) obter usando apt-build.
Enzotib
1
No momento, existem +17 para esta resposta. Mas alguém fez isso com sucesso?
315 keiki
1
@ otakun85 Eu usei o apt-build para compilar alguns pacotes com sucesso no Ubuntu (não me lembro qual versão, uma das 12.04 | 12.10 | 13.04), tentei o apt-build world que era uma bagunça. A página de manual do apt-build tem isso no final BUGS Many., então espere problemas.
Phizes
Acho que, em vez de usar apt-build world, é melhor fazer o download de um livro "Linux from Scratch" e fazer apt-buildpara todos os pacotes listados nele. Ele especifica a ordem correta, etc. Por exemplo, não tenho certeza, se apt-build worldsabe que deve primeiro recompilar binutils, depois gcc, binutilsnovamente, gccnovamente, então linguagens de programação gzipetc. Parece que apenas compila tudo em ordem alfabética.
Serhyi Vynohradov
@SerhyiVynohradov: Não importa. O LFS faz isso para evitar deixar dependências das bibliotecas no sistema host, mas aqui está apenas substituindo tudo no lugar por versões compiladas; eles ainda estarão no mesmo local, terão a mesma ABI, etc.
Nick Matteo
3

Você pode iniciar uma guerra de chamas e um grande debate sobre esse tipo de tópico, mas vamos ver a vida real.

A velocidade do seu sistema operacional depende muito do hardware que você executa e esse é o principal fator.

Eu mudo de distro com frequência enquanto na maioria das vezes fico com o Arch, mas o Arch é muito mais rápido que o Ubuntu? Não.

O Gnome com compiz no Ubuntu 10.10 usa cerca de 300ram, no Arch 200ram, tenho 4gb de ram, não sinto a diferença, mas se você comparar o Ubuntu com o gnome com o Arch com impressionante, haverá um grande aumento na capacidade de resposta e recursos uso (300ram vs 50ram), mas isso só importa se você estiver escolhendo uma distribuição para um netbook.

Portanto, se você tem uma área de trabalho rápida e não quer gastar tempo mexendo no seu sistema, basta usar o Ubuntu, mas se você tiver um netbook, considere usar um WM leve no Arch :)

Marcus Maxwell
fonte
Bem, em algum momento você pode chegar à situação em que possui o hardware mais recente, mas ainda precisa executar operações de uma hora. E, em vez de configurar vários servidores para distribuir a carga, você não se importa de gastar algum tempo mexendo, para obter esse aumento extra de 20%. Eu nunca usei o Arch, mas tentei o Gentoo. E vi que muitas vezes não existe uma "distribuição mais rápida". Em vez disso, há uma "distribuição com menos software". Você pode ter um sistema básico que é rápido, mas não seguro. E quando você instala os outros pacotes, ele se torna a mesma velocidade do Ubuntu + apt-build.
Serhyi Vynohradov 20/11
0

O Apt-build é útil para mais do que desempenho, você pode criar imagens de distribuição personalizadas e repositório para hardware específico pronto para instalação em massa para o seu negócio. Com isso, quero dizer uma distribuição binária otimizada, se você souber que todo o hardware será o mesmo. Dessa forma, apenas um computador faz todo o trabalho de compilação e o restante é atualizado usando o ISO remasterizado. Não é completamente apenas para leve ou codificação. E um ISO Instalador personalizado permite que você reinstale sem recompilar se, por algum motivo, seu sistema for irrecuperável após um desastre.

Double T
fonte