Eu amo (o jeito) como o Linux & Co. permite que os usuários instalem muitos pacotes de diferentes repositórios. AFAIK, eles também vêm com pacotes-fonte, para que você possa compilá-los sozinho.
Mas por que se preocupar em "manter/oferecer" pacotes pré-compilados, quando você pode compilá-los sozinho? Quais são as intenções de mantê-los/oferecê-los?
É possível configurar o Linux, para baixar apenas pacotes de origem e deixar o sistema operacional fazer o resto? (Assim como uma instalação de pacote pré-compilado?)
Obrigado por suas respostas.
É uma troca: as distribuições que fornecem pacotes pré-construídos gastam tempo construindo-os uma vez (em todas as configurações que suportam), e seus usuários podem instalá-los sem gastar tempo para construí-los. Os usuários aceitam os binários das distribuições como estão. Se você considerar o número de instalações de pacotes para algumas das distribuições maiores, o tempo economizado por não exigir recompilação em todos os lugares é considerável.
Existem algumas distribuições que enviam o código-fonte e a infraestrutura necessária para construí-lo e dependem dos usuários para construir tudo localmente; veja por exemplo Gentoo . Isso permite que os usuários controlem exatamente como seus pacotes são construídos.
Se você seguir esse caminho, mesmo com a economia de tempo que pode obter simplificando as compilações de pacotes, você deve estar pronto para gastar muito tempo criando pacotes. Eu não mantenho os pacotes mais complexos no Debian, mas um dos meus pacotes leva mais de duas horas para compilar em construtores x86 de 64 bits e mais de doze horas em arquiteturas mais lentas !
Você implica que todas as pessoas têm CPU/RAM/armazenamento/tempo/conhecimento suficientes para compilar pacotes. Não, não é o caso, o oposto é verdadeiro, a maioria das pessoas não quer esperar, por exemplo, horas para compilar algo. A compilação do Firefox em um Raspberry Pi pode levar várias semanas. Isso está bem? Não.
A segunda razão é que as distribuições Linux criam pacotes em um ambiente controlado, livre de malware e funcionando corretamente, o que não é garantido para o usuário final.
Todos os usuários da distro no final executam absolutamente o mesmo código que ajuda a relatar bugs e depurar o que pode não ser verdade para usuários que decidem compilar software por conta própria.
Muitas distribuições Linux modernas oferecem suporte a inicialização segura, que requer a assinatura de pacotes com chaves que não podem ser distribuídas entre os usuários finais, pois isso significaria que sua cadeia de confiança está completamente quebrada.
Você está convidado a construir tudo usando Gentoo, LFS ou o repositório AUR no Arch Linux. Na verdade, os pacotes de software podem ser compilados na maioria das distribuições, mas os três acima foram criados com a compilação em mente.
Economia simples. Compilar os pacotes de uma distribuição inteira leva semanas, mesmo em um cluster grande, usa muita energia e produz muito calor.
Simplesmente faz sentido fazer isso apenas uma vez, em vez de fazê-lo repetidamente para cada usuário.
Ele também aumenta massivamente o tamanho e a complexidade (e, portanto, a superfície de ataque!!!) de uma instalação básica, já que você precisa incluir cada compilador para cada linguagem de programação que cada pacote usa como parte da instalação básica.
Muitos, muitos anos atrás, eu realmente gostava de Linux From Scratch e escrevi um script que automatiza todo o processo de instalação de um sistema LFS básico. Ele funcionou por cerca de dois dias, e lembre-se de que um sistema LFS básico é um sistema realmente básico . Inclui o kernel, a libc, o shell, o bootloader e algumas ferramentas básicas… e é basicamente isso. Sem ambiente gráfico, sem navegador da web, sem programa de e-mail, sem pacote de escritório, sem player multimídia, sem ambiente Java, sem Python / Ruby / PHP / Node.js / qualquer que seja sua linguagem de programação preferida, sem jogos, sem editor de fotos, sem ferramentas científicas, nada de todas as coisas que realmente tornam um computador "útil".
E alguns deles são muito grandes e levam muito tempo para compilar. Um único pacote pode facilmente levar semanas para compilar, dependendo do computador em que você está executando. (Imagine, por exemplo, seu roteador ou seu smartwatch.)
Por ser um usuário do gentoo desde que me mudei do FreeBSD Pfff! Foi há dez anos, eu não poderia concordar mais com as respostas de Stephen e Artem que eu de fato voto positivo.
Eu nunca estive entre aqueles que acreditavam que definir opções pessoais encantadoras para o gcc (pensando em -funroll-loops -fomg-optimize por exemplo) levaria a um ganho significativo de desempenho, apesar de ter sido uma das principais razões reivindicadas pela grande maioria dos compilando viciados.
No meu sistema core II duo… claro… compilar cromo vai precisar de mais do que um dia inteiro… : Simplesmente… ridículo! Ainda mais estúpido se você quiser acompanhar o ritmo das atualizações do upstream!
Ridículo? Bem, no final do dia… não necessariamente… dependendo do que você realmente se importa, pois há coisas que você não pode simplesmente alcançar com pacotes pré-construídos !
Se você não conseguir nenhuma dessas vontades então… bem… simplesmente pense que obviamente não é uma maneira ecologicamente correta de manter seu sistema… um par de desenvolvedores líderes gentoo desistiram por esse motivo.
Trabalho em ambiente fechado. Alguns de nossos sistemas são considerados críticos e bloqueados. Compiladores e depuradores não são permitidos no sistema.
Os pacotes são instalados como estão pelo fornecedor.
Compilar/instalar a partir do código-fonte seria:
Resumindo, ele garante uma maneira fácil e com poucos recursos de garantir que cada computador tenha exatamente o mesmo pacote instalado da maneira que o fornecedor pretende que seja instalado.