Por que o software não gerenciado por pacote não é atualizado sozinho?

Por que o software não gerenciado por pacote não é atualizado sozinho?

Sou usuário de distros baseadas em Debian - Debian, Ubuntu, Linux Mint. Eu sei que muitas vezes as versões mais recentes do software não estão nos repositórios, então frequentemente eu os baixo diretamente da fonte e os instalo.

No entanto, noto que este software raramente informa sobre uma atualização. Além disso, nunca notei nenhum deles atualizando sozinho e apenas pedindo permissão para instalar.

É porque geralmente é assumido entre os codificadores que as versões do Linux serão atualizadas através do gerenciador de pacotes?

Responder1

Implementar esse tipo de recurso é bastante difícil, tanto o lado de “ligar para casa” (para ver se houve uma atualização) quanto o lado de “atualizar no local”:

  • o software em execução no sistema do usuário precisa saber como verificar se uma versão mais recente está disponível (o que significa adicionar código de rede ao seu aplicativo, que pode não ter outro motivo para usar a rede);
  • o software precisa funcionar independentemente das condições de rede em que se encontra (obviamente quando está totalmente offline; mas também não deve falhar com erros estranhos quando se encontra parcialmente conectado);
  • você precisa ter alguma maneira de decidir se uma versão mais recente está disponível (como comparar versões quando os usuários compilam a partir do repositório de origem?);
  • você precisa ter um servidor em algum lugar com o lado do servidor, que também pode ser necessário desenvolver;
  • você precisa garantir que as atualizações não possam ser comprometidas, seja no servidor ou por meio de um ataque man-in-the-middle (portanto, você precisa usar TLS e/ou algum tipo de assinatura forte);
  • você precisa disponibilizar as atualizações de uma forma que possa ser usada pelos seus usuários; eles podem ter compilado a partir do código-fonte inicialmente, mas não há garantia de que o sistema em que estão executando o software tenha tudo o que é necessário para reconstruir uma versão mais recente a partir do código-fonte - então você precisa fornecer binários (para todas as plataformas de destino possíveis?).

(Esta não é uma lista exaustiva.)

Todos esses são problemas que foram resolvidos pelas distribuições, então é mais fácil deixar as distribuições cuidarem de tudo. Além disso, comoKusalanandaexplicou, os usuários que se preocupam em executar a versão mais recente de um software provavelmente se preocupam o suficiente com isso para seguir pelo menos uma lista de discussão de anúncios, para que sejam notificados dessa forma.

Outro aspecto a considerar é que um número significativo de pessoas não deseja de forma alguma que o software que usam para telefonar para casa. Algumas distribuições vão até certo ponto pararemovercódigo que faz isso a partir do software que eles distribuem, ou mesmo de outras partes do software que podem ser usadas para rastrear seu uso (por exemplodocumentação que carrega imagens ou fontes ou CSS da web). Veja todas as tags de “violação de privacidade” emLintian do Debianpor exemplo.

Tudo isso explica por que existem tão poucos softwares que contêm os mecanismos necessários para fornecer informações de atualização, e menos ainda que podem se atualizar.

Existem outras maneiras de resolver o “problema”: os desenvolvedores de software que usam um sistema de CI geralmente podem estendê-lo para fornecer compilações “noturnas” em algum tipo de forma consumível (como pacotes); usuários interessados ​​podem configurar seus próprios sistemas de construção para obter regularmente fontes atualizadas de software de seu interesse (isso é bastante comum em contextos empresariais); ou você pode configurar pacotes no estilo AUR que são construídos a partir da fonte mais recente.

Responder2

A menos que o próprio software tenha a capacidade de "ligar para casa" para verificar atualizações, como alguns navegadores e coisas comoSincronizandoparece ser capaz de fazer, geralmente não há nenhum mecanismo capaz de alertar automaticamente o usuário/administrador de que há uma versão mais recente do software disponível.

Os pacotes que você instala com seu gerenciador de pacotes são feitos por humanos, usuários que provavelmente terão interesse em mantê-los atualizados e funcionais nos sistemas operacionais de seu interesse.

Alguém que embala, por exemploAnsible, ouCoreutils GNU, oua concha Yash, ouCMakeou qualquer outro dos milhares de projetos de software disponíveis para um sistema Unix específico provavelmente (mas não necessariamente) será inscrito nas listas de discussão relevantes para esses projetos e/ou terá ferramentas especiais para observar regularmente repositórios de código-fonte ou arquivos de distribuição de código-fonte . Quando eles tomam conhecimento de uma nova versão, eles baixam, compilam, testam, corrigem (etc.) e empacotam o software da maneira relevante, dependendo dos procedimentos de empacotamento em seu Unix. Isso pode envolver comunicação tanto upstream (para o desenvolvedor do software) quanto downstream (para usuários do software) sobre incompatibilidades ou outros problemas que aparecem no processo de construção/embalagem.

Então eles irão, dependendo do Unix com o qual trabalham e de como funciona a distribuição de pacotes de terceiros, registrar, fazer upload ou submeter o pacote de alguma forma para que usuários como eu e você possam usar nossos gerenciadores de pacotes para atualizar nossos sistemas.

Eu me importo, por exemplo, em terArmazenamento GNUdisponível para OpenBSD (sou o "mantenedor da porta" deste software). Eu verifico de tempos em tempos qual é o status atual do Stow no site do GNU (ele não é atualizado com muita frequência), e quando encontro uma nova versão eu instalo-a e certifico-me de que funciona, e atualizo a porta do OpenBSD na minha máquina particular. Em seguida, envio por e-mail a lista de portas do OpenBSD com um patch para a porta (as portas são distribuídas como um conjunto de Makefiles no OpenBSD). Alguém com direitos de commit irá então garantir que meu patch seja aplicado corretamente e que a porta pareça correta antes de enviá-la para a árvore CVS de portas do OpenBSD.

Na próxima vez que um usuário atualizar a árvore CVS e reconstruir a porta, ou baixar a porta binária que eventualmente aparecerá, sua instalação do GNU Stow será atualizada.Mas o GNU Stow não sabe se uma nova versão dele está disponível.Simplesmente não é algo que o GNU Stow deveria estar fazendo. É uma ferramenta usada para instalar software de terceiros em hierarquias de diretórios independentes, e seriaseriamente estranhose ele tentasse "ligar para casa" toda vez que fosse usado (tão estranho quanto se lsde repente precisasse de acesso à rede para funcionar).

A atualização do software por si só pode, em muitos casos, ser indesejável, pois muitos componentes de um sistema precisam ser testados em conjunto. Os pedaços de infraestrutura necessários também sobrecarregariam seriamente os pacotes menores, e seria impossível para indivíduos que não tivessem o conhecimento ou os recursos executar algum tipo de servidor de atualização de alta disponibilidade para desenvolver software que se mantivesse atualizado automaticamente.

Responder3

Antigamente, os computadores eram administrados por profissionais, que instalavam novos softwares conforme necessário.

Com o tempo, diferentes sistemas operacionais desenvolveram duas tradições diferentes para aliviar o fardo de manter o software atualizado manualmente.

  • No Linux e na maioria das outras variantes modernas do Unix, o sistema operacional vem com umgerenciador de pacotes. A maior parte do software é instalada por meio deste gerenciador de pacotes, e o gerenciador de pacotes atualiza o software quando uma nova versão está disponível.
  • O Windows não vinha com um gerenciador de pacotes até recentemente, então os fornecedores de software Windows adquiriram o hábito de ter seu próprio código para instalar atualizações.

A abordagem do gerenciador de pacotes é especialmente adequada ao mundo do código aberto porque o software de código aberto é composto de milhares de pacotes que são desenvolvidos de forma independente e montados juntos. Muitas coisas podem dar errado ao montar pacotes, então a maioria das distribuições Linux fornece um conjunto consistente, chamadoliberar. Algumas distribuições têm “lançamentos contínuos” onde a única verificação de consistência é a compilação do software. Outros realizam mais testes e fornecem um novo lançamento apenas uma ou duas vezes por ano, ou mesmo uma vez a cada dois anos.

Uma vantagem da abordagem Linux sobre a abordagem Windows é que ela permite que os pacotes de software colaborem entre si. Isto é difícil na abordagem Windows porque se o software A e o software B quiserem fazer algo juntos, eles terão que monitorar se o seu parceiro está instalado, lidar com atualizações, tomar cuidado para não deixar migalhas para trás quando um deles for desinstalado… Isto é em particular por que o software Windows precisa agrupar todas as bibliotecas que usa, o que significa que se um bug for encontrado na biblioteca, todo o software que usa a biblioteca precisará ser atualizado. Por outro lado, no Linux, apenas o pacote que contém a biblioteca precisa ser atualizado, não importa quantos programas o utilizem.

Como o sistema operacional fornece um mecanismo para atualizações de software, os autores de software Linux não precisam reinventar a roda.

Raramente há necessidade de instalar versões de software mais recentes do que as fornecidas pela sua distribuição. Em geral, o software mais recente não apresenta menos bugs. As distribuições fornecem atualizações se um bug grave for encontrado (especialmente bugs de segurança). Uma versão mais recente de algum software só é útil se essa versão tiver um novo recurso que você pode usar.

Se você gosta de ter a versão mais recente do software, mesmo quando não precisa dela, você deve instalar uma distribuição contínua, como Debian instável ou Arch Linux. Distribuições com lançamentos coerentes como Ubuntu, Mint ou Debian stable são para pessoas que não querem quebrar seu sistema toda semana.

Responder4

As outras respostas são boas, mas quero acrescentar algo que nenhuma delas abordou com destaque: a questão da segurança.

A instalação de software (pelo menos em todo o sistema) geralmente requer acesso root. Você confia no gerenciador de pacotes da sua distribuição e nas pessoas que empacotam o software para usar esse privilégio de maneira adequada, mas não necessariamente confia em cada software aleatório que você instalou para fazer isso da maneira certa.

informação relacionada