Pular para o conteúdo
RPM 6.1.0 chega com novo mecanismo de bloqueio, macros avançadas e suporte a PKCS11

RPM 6.1.0 chega com novo mecanismo de bloqueio, macros avançadas e suporte a PKCS11

Versão estável do RPM traz melhorias no keystore, novas opções de macro, suporte a tokens PKCS11 e correções de bugs críticos.

A nova versão estável RPM 6.1.0 foi publicada em 11 de maio de 2026. O update traz diversas funcionalidades e correções que aprimoram a experiência de gerenciamento de pacotes, especialmente em relação ao bloqueio do keystore, ao processador de macros e ao suporte a assinaturas com tokens PKCS#11. As mudanças são relevantes para quem utilizava a série 6.0.x, já que várias regressões foram sanadas.


Principais novidades

Novo mecanismo de bloqueio do keystore

  • O keystore agora utiliza um lock dedicado, separado do lock de transação.
  • Essa alteração elimina o bloqueio de todas as consultas ao rpmdb durante transações, problema observado a partir da versão 6.0.0.
  • Referência: #4110.

Reativação da busca NSS para usuários e grupos

  • Por padrão, as consultas a usuários e grupos voltam a ser feitas via Name Service Switch (NSS), como nas versões anteriores ao 4.19.0.
  • Caso necessário, ainda é possível desativar definindo as macros %_passwd_path e %_group_path.
  • Em operações --root, a busca NSS permanece desabilitada.
  • Referências: #3994, #882.

Suporte a macros literais e “one‑shot”

  • Nova sintaxe permite especificar modificadores entre < e > ao definir macros, habilitando expansão literal (l) ou de uso único (o).
  • Detalhes em rpm-macros(7).
  • Referências: #4145, #1155.

Opções avançadas para %define

  • %define aceita agora os flags -e (expansão no momento da definição) e -g (escopo global).
  • Quando combinados, o comportamento equivale ao uso de %global.
  • Referência: #4163.

Melhorias no processo de build

  • O ambiente de script de compilação é exportado para o arquivo rpmbuild.env dentro de %{builddir}, facilitando a replicação por ferramentas externas.
  • rpmuncompress(1) passa a obedecer às opções de rpm-common(8) e inclui suporte a arquivos CAR.
  • Utilitários rpmuncompress e rpm-setup-autosign foram adicionados ao $PATH padrão, com links simbólicos mantidos em /usr/lib/rpm para compatibilidade.
  • Mensagens de erro ao empacotar binários incompatíveis agora exibem nomes e tipos de arquivos, agilizando a depuração.
  • O alvo k permite encurtar a execução do rpmbuild direto para a fase %check.
  • Falhas por arquivos de patch ou fonte ausentes retornam erro de compilação com número da linha, corrigindo regressão da 4.20.0.
  • Scripts Lua não mais travam quando executados fora de pacotes gerados pelo RPM.
  • Referências: #3147, #3015, #4079, #4189.

Assinatura e verificação aprimoradas

  • rpmsign(1) passa a suportar assinatura de arquivos usando tokens PKCS#11.
  • rpmkeys(8) agora garante que o código de saída não “estoure”, evitando retornos falsos de sucesso.
  • Saídas excessivas ou enganosas em cenários de verificação foram eliminadas.
  • Referências: #4124, #4176, #3303, #4036.

Plugins e integração com systemd

  • O plugin rpm-plugin-syslog(8) foi ajustado para não exibir nomes de operação enganosos nem mensagens duplicadas.
  • O nome do programa nas mensagens foi alterado de [RPM] para rpm, facilitando buscas com grep.
  • Agora, journalctl -t rpm mostra de forma prática o histórico de transações.
  • Referências: #4172, #1254.

Novas páginas de manual

  • Foram incluídas diversas man pages novas ou revisadas, como:
    • elfdeps(1)
    • rpm-dependency-generators(7)
    • rpm-design(7)
    • rpm-scriptlets(7)
    • rpm-sysusers(7)
  • A página rpmbuild(1) ganhou seção dedicada ao processo de build, e rpmkeys(8) passou a abordar a política de verificação completa.
  • Referência: #3612.

Atualizações de API

  • Scriptlets Lua obedecem a rpmtsSetScriptFd(), permitindo redirecionamento de stdout/stderr.
  • Ganchos de plugin psm_pre e psm_post são executados apenas nas operações principais (install, erase, restore).
  • Nova função rpmKeyringVerifySig3() que também retorna “lints”.
  • Bindings Python recebem rpm.ds.Ti() para obter o índice atual de trigger.
  • Extensões de tags podem ser usadas em buscas de padrões no rpmdb.
  • Funções como rpmtxnImportPubkey() e Fdopen() receberam validações adicionais.
  • Correções diversas nas bindings Python.
  • Referências: #3328, #1254, #4069, #3943, #4077, #4096, #3058.

Compilação com Clang e macOS

  • Todos os erros e avisos de compilação com Clang foram resolvidos, garantindo builds limpos.
  • Regressão de compilação no macOS presente na 6.0.1 foi corrigida.
  • Foram adicionados presets úteis ao CMake para simplificar a configuração.
  • Referências: #4070, #4105, #4139, #4118.

Impacto para administradores e desenvolvedores

  • Desempenho: o fechamento de descritores de arquivo em kernels ≥ 5.11 com glibc ≥ 2.34 pode reduzir o tempo de instalação em até 26 %.
  • Segurança: suporte a tokens PKCS#11 amplia as opções de assinatura de pacotes, atendendo a políticas corporativas mais rígidas.
  • Compatibilidade: a restauração das buscas NSS garante comportamento esperado em ambientes que utilizam LDAP, NIS ou outros serviços de identidade.
  • Desenvolvimento: as novas macros e opções de %define facilitam a criação de spec files mais claros e reutilizáveis.

Como atualizar

Os usuários podem obter a versão estável via gerenciadores de pacotes da distribuição ou diretamente do site oficial:

# Exemplo para distribuições baseadas em Fedora
sudo dnf upgrade rpm

Para quem deseja testar a versão de desenvolvimento, consulte as notas da release RC1 disponíveis na página oficial.


Esta notícia foi baseada nas notas de lançamento oficiais do RPM 6.1.0.

Via rpm.org. Você pode conferir o post original em inglês:

RPM 6.1.0 Release Notes (DRAFT)

Por · Última atualização: