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.