Debian e Fedora estão tentando resolver o problema de dependências

Distribuições Linux enfrentam o problema de aumentar as dependências dos projetos, embora o número de dependências para código Python, Perl e Ruby é mantido Dentro de limites razoáveis, os projetos JavaScript praticam a divisão em bibliotecas muito pequenas, geralmente executando uma função simples.

O repositório NPM já tem mais de um milhão de pacotes e aplicações típicas link para centenas de dependências, que por sua vez têm suas próprias dependências, tornando difícil manter e distribuir pacotes tradicionais com aplicativos JavaScript em distribuições Linux.

Devido ao estreito entrelaçamento das dependências da biblioteca JavaScript, atualizar qualquer pacote com essas bibliotecas em uma distribuição pode quebrar outros pacotes.

As vinculações de versão agravam o problema: uma biblioteca pode exigir uma versão de uma dependência para funcionar de forma estável e outra pode exigir outra.

Muitos projetos requerem as versões mais recentes de bibliotecas para funcionar, que nem sempre atendem aos requisitos de estabilidade da distribuição (o desenvolvimento contínuo é praticado no ecossistema Node.js usando as versões mais recentes de frameworks e a distribuição precisa de suporte por vários anos).

Tentativas de corrigir versões de pacotes apenas na distribuição levar a um aumento de versões desatualizadas no repositório que não é atualizado há anos. A interrupção da manutenção de um pacote afeta adversamente muitos outros pacotes e cria ainda mais problemas.

Além disso, ldependências cruzadas levam ao fato de que muitas bibliotecas de Node.js torna-se impossível desinstalar do sistemaque, por sua vez, impede que você desinstale outros programas Node.js.

Para resolver isso, o projeto Fedora aprovou recentemente um plano para impedir a formação padrão de pacotes separados com bibliotecas usadas em projetos baseados em Node.js.

Ele decidiu, começando com o Fedora 34, fornecer apenas pacotes básicos para Node.js com um interpretador, cabeçalhos, bibliotecas primárias, binários e ferramentas básicas de gerenciamento de pacotes (NPM, yarn).

Em aplicativos de repositório Fedora que usam Node.js, é permitido incorporar todas as dependências existentes em um pacote, sem dividir e separar as bibliotecas usadas em pacotes separados.

A incorporação de bibliotecas irá se livrar da desordem de pequenos pacotes, simplificar a manutenção de pacotes (anteriormente, o mantenedor passava mais tempo revisando e testando centenas de pacotes com bibliotecas do que no pacote principal com o programa), salvando a infraestrutura de conflitos de bibliotecas e resolver problemas de vinculação a versões de biblioteca (os mantenedores incluirão versões testadas e testadas em produção no pacote).

A desvantagem da integração será a complicação do processo de trazer correções a vulnerabilidades em bibliotecas, o que exigirá um trabalho coordenado dos mantenedores de todos os pacotes que incluem a biblioteca vulnerável. Existe o perigo de que um pacote esqueça de atualizar uma biblioteca embutida vulnerável e o pacote passe despercebido.

Os desenvolvedores de O Debian também está discutindo a mudança para um modelo de integração de dependência de pacote semelhante. Além do Node.js, a discussão aborda a criação de pacotes para a plataforma Kubernetes e projetos nas linguagens PHP e Go, para os quais há uma tendência de se dividir em pequenas dependências. Nenhuma decisão foi tomada ainda, mas espera-se que com o tempo o problema só piore e mais cedo ou mais tarde o projeto seja forçado a fazer algo.

A interface da web gsa (Greenbone Security Assistant) para o verificador de segurança gvm (Greenbone Vulnerability Management) é citada como um exemplo dos problemas que os mantenedores de pacotes têm.

A versão do gsa distribuída pelo Debian acabou sendo incompatível com as versões mais recentes do gvm, mas não foi possível atualizar o gsa para a versão atual, pois contém mudanças significativas e usa o npm para baixar as bibliotecas Node.js necessárias.

As bibliotecas solicitadas são muitas e requerem a criação de novos pacotes no Debian para alguém mantê-los, já que as regras do Debian proíbem o carregamento de componentes externos durante o processo de construção.

fonte: https://lwn.net/


O conteúdo do artigo segue nossos princípios de Ética editorial. Para relatar um erro, clique Clique aqui.

Um comentário deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   qtkk dito

    Essa fragmentação de frameworks e bibliotecas em ECMAscript saiu do controle.
    Bom artigo.