Como determinar qual versão do Berkeley DB é usada para o banco de dados do RPM?

1

Estou tentando ler e gravar o banco de dados RPM localizado em / var / lib / rpm no CentOS 5 e, eventualmente, outros tipos de sistema (CentOS 6, RHEL, etc.)

O problema é que não sei qual versão do Berkeley DB está sendo usada.

O comando file no arquivo de banco de dados relata "data".

Eu tentei abrir o banco de dados usando o Berkeley DB versões 3.3, 4.4 e 6.1, mas isso falha com o "argumento inválido".

Aqui está o código que estou usando (isso para 4.4 / 6.1)

int main()
{
    #define DATABASE "__db.001"

    DB *dbp;
    int ret;

    if ((ret = db_create(&dbp, NULL, 0)) != 0) {
        fprintf(stderr, "db_create: %s\n", db_strerror(ret));
        exit (1);
    }

    if ((ret = dbp->open(
        dbp, NULL, DATABASE, NULL, DB_UNKNOWN, 0, 0664)) != 0) {
        dbp->err(dbp, ret, "%s", DATABASE);
        exit(1);
    }
}

Alguma dica sobre o que está errado?

    
por Craig S. Anderson 17.06.2015 / 04:46

1 resposta

0

Acontece que os arquivos em / var / lib / rpm com db em seus nomes são não arquivos do banco de dados Berkeley. Os arquivos sem db em seus nomes são arquivos do banco de dados Berkeley.

Então, tentar abrir um arquivo chamado __db.001 é a coisa errada a se fazer.

(Pensei em apenas excluir a pergunta, mas outras pessoas podem se deparar com isso).

    
por 17.06.2015 / 04:57

Tags