Distri - uma distribuição para testar tecnologias rápidas de gerenciamento de pacotes

Michael Stapelberg, autor do gerenciador de janelas lado a lado i3wm e ex-desenvolvedor ativo do Debian (manteve cerca de 170 pacotes), desenvolve distribuição experimental distrito e um gerenciador de pacotes com o mesmo nome. O projeto se posiciona como uma exploração de possíveis maneiras de aumentar o desempenho dos sistemas de gerenciamento de pacotes e incorpora algumas novas ideias para a construção de distribuições. O código do gerenciador de pacotes é escrito em Go e distribuído por sob a licença BSD.

Uma característica importante do formato do pacote da distribuição é que o pacote é entregue na forma de imagens SquashFS, em vez de arquivos tar compactados. O uso do SquashFS, semelhante aos formatos AppImage e Snap, permite “montar” um pacote sem precisar descompactá-lo, o que economiza espaço em disco, permite alterações atômicas e torna o conteúdo do pacote acessível instantaneamente. Ao mesmo tempo, os pacotes distri, como no formato clássico “deb”, contêm apenas componentes individuais vinculados por dependências a outros pacotes (as bibliotecas não são duplicadas em pacotes, mas são instaladas como dependências). Em outras palavras, as distribuições tentam combinar a estrutura granular de pacotes de distribuições clássicas como o Debian com os métodos de entrega de aplicativos na forma de contêineres montados.

Cada pacote na distribuição é montado em seu próprio diretório em modo somente leitura (por exemplo, o pacote zsh está disponível como "/ro/zsh-amd64-5.6.2-3"), o que tem um efeito positivo na segurança e protege contra alterações acidentais ou maliciosas. Para formar uma hierarquia de diretórios de serviço, como /usr/bin, /usr/share e /usr/lib, é usado um módulo FUSE especial, que combina o conteúdo de todas as imagens SquashFS instaladas em um todo (por exemplo, o / O diretório ro/share fornece acesso para compartilhar subdiretórios de todos os pacotes).

Pacotes em distri fundamentalmente entregue de manipuladores chamados durante a instalação (sem ganchos ou gatilhos), e diferentes versões de um pacote podem coexistir entre si, tornando possível a instalação paralela de pacotes. A estrutura proposta limita o desempenho do gerenciador de pacotes apenas ao rendimento da rede através da qual os pacotes são baixados. A instalação ou atualização real do pacote é realizada de forma atômica e não requer duplicação de conteúdo.

Os conflitos na instalação de pacotes são eliminados, pois cada pacote está associado a seu próprio diretório e o sistema permite a presença de diferentes versões de um pacote (o conteúdo do diretório com uma revisão mais recente do pacote está incluído nos diretórios union). A construção de pacotes também é muito rápida e não requer a instalação de pacotes em um ambiente de construção separado (as representações das dependências necessárias do diretório /ro são criadas no ambiente de construção).

Suportado comandos típicos de gerenciamento de pacotes, como “distri install” e “distri update”, e em vez de comandos de informações, você pode usar o utilitário padrão “ls” (por exemplo, para visualizar os pacotes instalados, basta exibir uma lista de diretórios no “ /ro” e para descobrir em qual pacote o arquivo está incluído, veja para onde leva o link deste arquivo).

O kit de distribuição do protótipo proposto para experimentação inclui cerca de 1700 pacotes E pronto imagens de instalação com instalador, adequado tanto para instalação como SO principal quanto para execução em QEMU, Docker, Google Cloud e VirtualBox. Ele suporta a inicialização a partir de uma partição de disco criptografada e um conjunto de aplicativos padrão para criar uma área de trabalho baseada no gerenciador de janelas i3 (o Google Chrome é oferecido como navegador). Forneceu um kit de ferramentas completo para montar uma distribuição, preparar e gerar pacotes, distribuir pacotes através de espelhos, etc.

Fonte: opennet.ru

Adicionar um comentário