error: rpmdb: BDB0113 Thread/process

error: rpmdb: BDB0113 Thread/process

Este erro error: rpmdb: BDB0113 Thread/process ocorre quando é executado dnf ou yum e indica que o banco de dados do seu gerenciador de pacotes RPM está bloqueado ou corrompido.

Isso geralmente acontece quando:

  • um processo de gerenciamento de pacotes (como yum, dnf ou o próprio rpm) é interrompido de forma inesperada — por exemplo, se o sistema travou, o processo foi finalizado à força (kill) ou houve uma queda de energia.
  • falta de espaço em disco.
  • outros..

Quando isso ocorre, arquivos de “lock” (travamento) podem ser deixados para trás, impedindo que qualquer outro processo de pacotes acesse o banco de dados.

Como Resolver (Passo a Passo)

Siga estes passos com atenção. Você precisará de permissões de superusuário (root) para executar os comandos. Use sudo antes de cada comando, se necessário.

Passo 1: Verifique se não há processos do YUM/DNF em execução

Antes de apagar qualquer arquivo, certifique-se de que nenhum gerenciador de pacotes esteja realmente rodando em segundo plano.

ps aux | grep -E 'yum|dnf'

Se este comando retornar algo além do próprio comando grep, significa que um processo está ativo. Espere ele terminar ou, se tiver certeza de que está travado, finalize-o com kill <ID_DO_PROCESSO>. Se o comando não retornar nada, você pode prosseguir.

Passo 2: Remova os arquivos de lock do banco de dados

Os arquivos de lock são os causadores do bloqueio. Eles geralmente começam com __db no diretório do RPM.

Execute o seguinte comando como root:

rm -f /var/lib/rpm/__db.*

O que este comando faz:

  • rm -f: Remove (rm) forçadamente (-f) os arquivos especificados, sem pedir confirmação.
  • /var/lib/rpm/__db.*: O caminho para os arquivos de lock do banco de dados RPM. O * garante que todos os arquivos que começam com __db. sejam removidos.

Passo 3: Reconstrua o banco de dados do RPM

Depois de remover os arquivos de lock, o banco de dados pode estar em um estado inconsistente. O próximo passo é reconstruí-lo para corrigir quaisquer problemas.

Execute o seguinte comando como root:

rpm --quiet -qa
rpm --rebuilddb

O que este comando faz:

  • rpm --rebuilddb: Lê os cabeçalhos de todos os pacotes que você tem instalados e cria, do zero, um novo banco de dados limpo e funcional. Este processo é seguro e não remove nenhum pacote instalado.

Passo 4: Limpe o cache do gerenciador de pacotes (Recomendado)

Para garantir que tudo funcione corretamente, é uma boa prática limpar o cache do seu gerenciador de pacotes (yum ou dnf).

Se você usa um sistema baseado em CentOS/RHEL 7 ou mais antigo (que usa yum):

yum clean all

Se você usa um sistema baseado em Fedora, CentOS/RHEL 8 ou mais novo (que usa dnf):

dnf clean all

Resumo

Em 99% dos casos, a sequência de comandos abaixo, executada como root, resolverá o problema:

# 1. Remover os arquivos de lock (travamento)
rm -f /var/lib/rpm/__db.*

# 2. Reconstruir o banco de dados a partir dos pacotes instalados
rpm --quiet -qa
rpm --rebuilddb

# 3. (Opcional) Limpar o cache do gerenciador de pacotes
# Use 'yum' ou 'dnf', dependendo do seu sistema
yum clean all
# ou
dnf clean all

Após executar esses passos, tente usar o yum, dnf ou rpm novamente. O erro deverá ter desaparecido.