Poções no Mageia. 05 – Como o Mageia se destaca entre as melhores distribuições ‘fáceis de usar’, mesmo que muitas pessoas não saibam disso.

Esta semana, estivemos aprimorando nosso sistema com alguns ingredientes fornecidos por nossa brilhante equipe de desenvolvedores e empacotadores. A forma como os aplicativos são gerenciados e empacotados no Mageia, em comparação com outros concorrentes, torna o gerenciamento do sistema e o uso do software muito simples para nossos usuários. A implementação de ferramentas gráficas, como o Centro de Controle Mageia, é uma parte importante do sistema, mas o que não é amplamente conhecido é como certos aplicativos são empacotados em comparação com outros sistemas, como a inclusão de plugins e extras de software para aplicativos é gerenciada e como as dependências são controladas durante todo o processo de empacotamento. Vamos começar!

Princípios conceituais

O Mageia herdou e aprimorou a filosofia de empacotamento do Mandriva/Mandrake; nosso objetivo é fornecer aplicativos “prontos para uso”, sem economizar em recursos opcionais ou complementos. Outras distribuições tendem a empacotar aplicativos em sua versão mais leve, omitindo plugins ou complementos, o que força o usuário a procurar pacotes extras. No Mageia, frequentemente incluímos plugins, integrações e suporte multimídia diretamente no aplicativo ou em um único metapacote.

O Mageia se caracteriza por uma filosofia de empacotamento integrada: em vez de dividir um programa em vários subpacotes ou aplicar restrições de licença rígidas no repositório principal, os mantenedores do Mageia compilam o software com o máximo possível de extensões, filtros e recursos de suporte a hardware habilitados por padrão, desde que adicionem funcionalidades extras ao aplicativo e sejam aprovados pela equipe de empacotamento.

Nosso instalador

No Mageia 10, temos atualmente o URPMI (User RPM Installer), que é o nosso gerenciador de pacotes padrão e a base dos processos de instalação de aplicativos, tanto gráficos quanto baseados em terminal, embora o suporte nativo para DNF (agora DNF5) também esteja incluído.

O URPMI possui diversas vantagens em relação aos seus concorrentes, tais como:

  • Ele utiliza arquivos de resumo muito leves, contendo apenas os dados essenciais para resolver dependências, permitindo que os repositórios sejam consultados ou atualizados quase instantaneamente, mesmo em conexões lentas.
  • Não é necessário armazenar localmente a descrição completa e as informações de cada pacote, a menos que seja preciso, economizando espaço em disco nos índices.
  • Uma de suas maiores vantagens não é apenas a linha de comando, mas o fato de o gerenciador de pacotes gráfico ‘rpmdrake’ compartilhar o mesmo mecanismo. Em outros gerenciadores, as ferramentas gráficas atuam como interfaces independentes que às vezes entram em conflito ou não refletem os mesmos status de pacotes órfãos.
  • O Urpmi passou décadas aprimorando seu algoritmo para detectar pacotes órfãos deixados após a desinstalação de um aplicativo, adaptando-o à estrutura de pacotes RPM do Mageia; isso impede que bibliotecas críticas do sistema sejam desinstaladas por engano durante o processo de limpeza.

O DNF também foi habilitado no Mageia devido a uma série de recursos modernos:

  • Histórico de transações.
  • Módulos e AppStream. Melhor integração com repositórios de software modernos.
  • Suporte ativo a upstream. É mantido diretamente pelo projeto rpm.org.

Alguns comandos urpmi no terminal:

  • urpme: para remover pacotes.
  • urpmq: para listar os pacotes.
  • urpmf: para pesquisar pacotes que contenham arquivos ou funcionalidades específicas.
  • urpmi: para instalação e atualizações.


Um breve diagrama

Na Mageia, por meio de nossas seções de repositório, empacotamos versões de programas compilados desde o início com suporte habilitado para, por exemplo, todos os módulos de rede, protocolos de streaming e vídeo com aceleração por hardware, bem como inúmeros formatos de imagem proprietários ou obscuros que outras distribuições movem para repositórios secundários ou removem completamente. A conveniência do usuário final é priorizada em detrimento da “pureza” estrita no empacotamento; desde que uma extensão torne o aplicativo empacotado mais útil, isso se deve em grande parte aos repositórios oficiais “Tainted” dedicados a softwares sujeitos a patentes ou restrições legais em certos países, que permitem que os aplicativos sejam empacotados em sua versão completa sem restringir a funcionalidade.

O Mageia mantém a infraestrutura de compilação, as dependências, as políticas e os controles para garantir que os pacotes formem um sistema coerente.

Um exemplo claro disso é o pacote “gimp-plugin-astronomy”, que permanece disponível para instalação até o fim do suporte ao Mageia 9. Embora não seja mais mantido por seus criadores, o Mageia continuou a fornecê-lo aos seus usuários até o lançamento do GIMP 3.0, com o qual deixou de ser compatível devido à mudança para o Python 3.

Outros exemplos:

  • LibreOffice. Em outras distribuições, ele é empacotado como componentes separados, e recursos como temas de ícones, integração com banco de dados ou ambientes de desktop são omitidos.
  • Inkscape. No Mageia, ele inclui um mapa de dependências que habilita, por padrão, todas as extensões para renderização matemática, processamento de bitmaps e importação/exportação de arquivos CAD, sem a necessidade de procurar outras bibliotecas Python.
  • Audacity, VLC, Kodi. Através dos diversos repositórios, eles são disponibilizados com suporte habilitado para recursos que não aparecem em outras distribuições.
  • Pidgin. Já discutimos essa aplicação em outro lugar. O pacote no Mageia é muito completo, apresentando muitos plugins e protocolos de mensagens não encontrados em outras distribuições.


Uma visão dos pacotes no Mageia

Por trás do processo de empacotamento, existem políticas definidas e procedimentos de revisão através dos quais buscamos garantir que o software se encaixe no sistema, em vez de simplesmente distribuir os pacotes conforme publicados pelos desenvolvedores.

Algumas características principais de nosso empacotamento:

  • Python. Convenções claras, pyproject, noarch, documentação e dependências gerenciadas por RPM:
  • Java. Evitamos dependências duplicadas de arquivos JAR e mantemos a separação de componentes.
  • Firefox. Pacote principal e traduções separadas. O idioma necessário é instalado com base no idioma do sistema.
  • LibreOffice. Instalação de todo o pacote e do idioma necessário com base no idioma do sistema, em um único metapacote, ou instalação separada de aplicativos individuais.
  • Bibliotecas. Separação entre tempo de execução, desenvolvimento e dependências.
  • Aplicações KDE/Qt. Políticas específicas para nomes, bibliotecas e componentes.
  • Licenças. Mantemos a separação de licenças por meio dos repositórios ‘Core/Nonfree/Tainted’.
  • As atualizações foram validadas pela equipe de controle de qualidade antes de serem lançadas na versão estável.

O que tudo isso significa para o usuário?

A maioria dessas decisões não aparece em uma captura de tela. Elas não melhoram, por si só, as animações do Plasma nem fazem o Firefox abrir mais rápido.

Seu valor se torna evidente em situações mais cotidianas:

  • Instalar um aplicativo e obter automaticamente as dependências corretas.
  • Desinstalar sem deixar arquivos residuais.
  • Atualizar uma biblioteca sem acabar com várias cópias incompatíveis.
  • Instalar apenas os idiomas de que precisamos.
  • Instalar a documentação somente quando tivermos interesse nela.
  • Ter pacotes de desenvolvimento separados.
  • Manter uma base de software consistente.
  • Receber atualizações que passaram por um processo de validação.

Em outras palavras, nossos usuários não precisam ficar pensando constantemente nos pacotes. Se o trabalho for feito corretamente, simplesmente funciona.

Conclusões

O principal ponto forte da nossa estrutura reside na forma como todas as nossas equipes trabalham juntas para garantir que cada programa se integre perfeitamente ao todo.

As políticas de empacotamento, a separação de componentes, o gerenciamento de dependências, a gestão cuidadosa de bibliotecas de terceiros, o gerenciamento de licenças e o processo de controle de qualidade formam um sistema integrado e coerente.

O trabalho realizado pelas nossas equipes de empacotamento, desenvolvimento e garantia de qualidade, embora invisível para os nossos usuários ou para o público em geral, é um dos fatores mais importantes para tornar nossa distribuição Linux verdadeiramente estável e confiável. Um grande esforço de engenharia é dedicado para garantir que tudo se encaixe perfeitamente e o resultado final seja alcançado.

(escrito em inglês por joselp e traduzido por xgrind)

Esta entrada foi publicada em Sem categoria com as tags , , , . ligação permanente.

Deixe um comentário

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