AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 709407
Accepted
Ben
Ben
Asked: 2022-07-12 03:47:12 +0800 CST2022-07-12 03:47:12 +0800 CST 2022-07-12 03:47:12 +0800 CST

Por que existem pacotes pré-compilados nos repositórios?

  • 772

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.

linux repository
  • 5 5 respostas
  • 4226 Views

5 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2022-07-12T04:19:53+08:002022-07-12T04:19:53+08:00

    É 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 !

    • 57
  2. Artem S. Tashkinov
    2022-07-12T05:24:06+08:002022-07-12T05:24:06+08:00
    1. 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.

    2. 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.

    3. 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.

    4. 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.

    • 26
  3. Jörg W Mittag
    2022-07-12T12:57:05+08:002022-07-12T12:57:05+08:00

    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?

    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.)

    • 20
  4. MC68020
    2022-07-12T06:35:48+08:002022-07-12T06:35:48+08:00

    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 !

    • Evitando o pulseaudio com o firefox, por exemplo.
    • Preferindo confiar em libs compartilhadas do seu sistema em vez de implementações locais (harfbuzz, icu, apng, libevent, para não falar de codecs (av1, vpx, webp… (para não falar de codecs proprietários…)))
    • E, finalmente... sempre que você tiver motivos suficientes para divergir das escolhas upstream. (seu harware se tornando obsoleto sendo apenas um exemplo)

    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.

    • 11
  5. Scottie H
    2022-07-13T07:30:15+08:002022-07-13T07:30:15+08:00

    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:

    1. Permitir que alguém altere o código-fonte e, portanto, a funcionalidade do pacote de uma maneira que possa ser desconhecida para outras pessoas.
    2. Aumente o tempo necessário para construir a linha de base, promovê-la e instalá-la. Em um ambiente RTOS, as interrupções precisam ser minimizadas.
    3. Os pacotes são compilados da mesma maneira (padrão) o tempo todo. Não precisamos nos preocupar com variações de compiladores, arquivos de configuração, etc.

      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.
    • 2

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve