Por que o software gerenciado não-pacote é atualizado por conta própria?

1

Eu sou um usuário de distribuições 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 eu freqüentemente os baixo diretamente da fonte e as instalo.

No entanto, percebo que esse software raramente informa você sobre uma atualização. Além disso, eu nunca notei nenhum deles realmente atualizando por si só e, em seguida, apenas pedindo permissão para instalar.

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

    
por LNMNT5 08.04.2017 / 13:58

4 respostas

3

A implementação desse tipo de recurso é bastante difícil, tanto no lado "chamando para casa" (para ver se houve uma atualização) quanto no lado "atualizando no local":

  • o software em execução no sistema do usuário precisa saber como verificar se uma versão mais nova está disponível (o que significa adicionar código de rede ao seu aplicativo, o 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 off-line; 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 nova está disponível (como você compara as versões quando os usuários criam a partir do repositório de origem?);
  • você precisa ter um servidor em algum lugar com o lado do servidor, o que também pode ser necessário desenvolver;
  • você precisa garantir que as atualizações não sejam comprometidas, nem no servidor nem através de um ataque man-in-the-middle (portanto, é necessário usar TLS e / ou assinatura strong de algum tipo);
  • você precisa disponibilizar atualizações em um formulário que possa ser usado por seus usuários; eles podem ter sido construídos a partir da fonte inicialmente, mas não há garantia de que o sistema no qual eles estão rodando tem o que for necessário para reconstruir uma versão mais nova a partir da fonte - então você precisa fornecer binários (para todas as possíveis plataformas de destino). / li>

(Esta não é uma lista completa).

Estes são todos os problemas que foram tratados por distribuições, por isso é mais fácil deixar que as distribuições cuidem das coisas. Além disso, como o Kusalananda explicou, os usuários que se preocupam com a execução da versão mais recente de um software provavelmente se importam o suficiente sobre isso para seguir pelo menos uma lista de discussão de anúncios, para que eles sejam notificados dessa maneira.

Outro aspecto a considerar é que um número significativo de pessoas não quer que o software que eles usam para telefonar para casa seja o que for. Algumas distribuições chegam a alguns limites para remover código que faz isso do software que distribuem, ou até mesmo outras partes do software que podem ser usadas para rastrear seu uso (por exemplo, documentação). que carrega imagens ou fontes ou CSS da web). Veja todas as tags de "violação de privacidade" em Lintian do Debian , por 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": desenvolvedores de software que usam um sistema de CI geralmente podem estender isso para fornecer compilações "noturnas" em uma forma consumível de algum tipo (como pacotes); os usuários interessados podem configurar seus próprios sistemas de compilação para obter regularmente fontes atualizadas de software com os quais se importam (isso é bastante comum em contextos corporativos); ou você pode configurar pacotes no estilo AUR que se constroem a partir da fonte mais recente.

    
por 08.04.2017 / 14:58
3

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

Pacotes que você instala com o gerenciador de pacotes são feitos por seres humanos, usuários que provavelmente têm interesse em mantê-los atualizados e funcionais nos sistemas operacionais com os quais eles se importam.

Alguém que empacota, e. Ansible , ou GNU coreutils , ou o shell Yash , ou CMake ou qualquer outro dos milhares de projetos de software lá fora, para um sistema Unix em particular, é mais provável (mas não necessariamente) ser inscrito nas listas de discussão relevantes para esses projetos e / ou ter ferramentas especiais para assistir regularmente a 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 das maneiras relevantes, dependendo dos procedimentos de empacotamento em seus Unix. Isso pode envolver a comunicação tanto upstream (para o desenvolvedor do software) quanto downstream (para os usuários do software) sobre incompatibilidades ou outros problemas que aparecem no processo de construção / embalagem.

Depois, dependendo do funcionamento do Unix e da distribuição de pacotes de terceiros, registre, envie ou envie 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 preocupo, por exemplo, em ter o GNU Stow disponível para o OpenBSD (eu sou o "mantenedor de portas" para este software). Eu verifico de vez em quando qual é o status atual do Stow no site GNU (ele não é atualizado com muita frequência), e quando eu localizo uma nova versão eu o instalo e me certifico de que ele funciona, e atualizo a porta do OpenBSD na minha máquina privada. Eu então envio por email a lista de ports 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á se certificar de que meu patch se aplica de forma limpa e que a porta pareça correta antes de enviá-lo para a árvore CVS de portas do OpenBSD.

A próxima vez que um usuário atualizar a árvore do CVS e reconstruir a porta, ou fizer o download da porta binária que eventualmente aparecerá, a instalação do GNU Stow será atualizada. Mas o GNU Stow não está ciente de que uma nova versão de si está disponível. 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 seria seriamente estranho se tentasse "chamar de lar" toda vez que fosse usado (por mais estranho que pareça ls de repente precisou de acesso à rede para ser executado).

Ter a atualização de software por si só pode, em muitos casos, ser indesejável, pois muitos componentes de um sistema precisam ser testados juntos. As partes necessárias da infra-estrutura também estariam seriamente os pacotes menores, e seria impossível para os indivíduos que não possuem o conhecimento ou os recursos executarem algum tipo de servidor de atualização de alta disponibilidade para desenvolver software que se mantenha atualizado automaticamente.

    
por 08.04.2017 / 14:16
2

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

Com o passar do 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 um gerenciador de pacotes . A maioria dos softwares é instalada através deste gerenciador de pacotes, e o gerenciador de pacotes atualiza o software quando uma nova versão está disponível.
  • O Windows não veio com um gerenciador de pacotes até recentemente, então os provedores de software do 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 desenvolvidos independentemente e montados juntos. Muitas coisas podem dar errado ao montar pacotes, então a maioria das distribuições Linux fornece um conjunto consistente, chamado release . Algumas distribuições têm “releases contínuos” onde a única verificação de consistência é que o software compila. Outros têm mais testes e só fornecem uma nova versão uma ou duas vezes por ano, ou até mesmo uma vez a cada dois anos.

Uma vantagem da abordagem do Linux sobre a abordagem do Windows é que ela permite que os pacotes de software colaborem entre si. Isso é difícil na abordagem do Windows porque se o software A e o software B querem fazer algo juntos, eles precisam monitorar se o parceiro está instalado, lidar com atualizações, tomar cuidado para não deixar migalhas para trás quando um deles é desinstalado ... Por que o software Windows tem que agrupar todas as bibliotecas que ele usa, o que significa que se um bug for encontrado na biblioteca, todo o software que usa a biblioteca precisa ser atualizado. Em contraste, no Linux, somente o pacote que contém a biblioteca precisa ser atualizado, não importa quantos programas o usem.

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

Raramente é necessário instalar versões mais recentes de software do que a sua distribuição. O software mais recente não é, em geral, menos problemático. As distribuições fornecem atualizações se um bug grave for encontrado (especialmente bugs de segurança). Uma versão mais recente de alguns softwares só é útil se a versão tiver um novo recurso para o qual você tenha um uso.

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

    
por 09.04.2017 / 03:37
2

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

Instalar software (pelo menos, instalá-lo em todo o sistema) geralmente requer acesso root. Você confia no gerenciador de pacotes de sua distribuição e nos humanos que empacotam o software para usar esse privilégio apropriadamente, mas você não necessariamente confia em todos os softwares aleatórios que você instalou para fazer isso da maneira certa.

    
por 09.04.2017 / 13:18