Cartella sconosciuta sul sistema root /.rpmdb

Qualcuno può spiegare a cosa serve la cartella /.rpmdb nella directory root? Quale applicazione lo crea e lo sta usando?

Non posso dire in modo definitivo cosa crei questa directory, ma è probabile che venga creata come un effetto collaterale dell’installazione di driver di kernel Linux di terze parti come NVIDIA o VirtualBox usando DKMS , o da qualche altro script di installazione non supportato non fornito da Ubuntu. Questa directory è stata probabilmente creata come un effetto collaterale di un processo di installazione che sembra supportare sia le distribuzioni basate su rpm che quelle basate su deb. DKMS sembra essere uno script di installazione di questo tipo e può sicuramente creare questa directory nelle giuste condizioni. La directory può essere cancellata senza danneggiare il tuo sistema, ma può essere creata di nuovo quando gli aggiornamenti vengono installati in seguito. Vedi bug # 1069350 per un bug report aperto che tiene traccia di questo problema.

Questa è la risposta breve, ora alcuni più dettagli.

Cos’è .rpmdb?

Come forse saprai, rpm è un formato di packaging software e un set di strumenti per installare pacchetti e mantenere il database dei pacchetti installati e le loro interdipendenze. È usato da molte distribuzioni ma non da Ubuntu e altre distribuzioni basate su deb. Sfortunatamente per Ubuntu, comunque, qualsiasi utilizzo del comando rpm richiede un database “rpmdb” valido da esistere o da creare.

Nelle distribuzioni basate su rpm questo non è un problema perché hanno un rpmdb a livello di sistema per definizione. Sui sistemi Ubuntu, poiché non è necessario un database rpm a livello di sistema, rpm è configurato per utilizzare un database nella directory home di ciascun utente, in particolare $HOME/.rpmdb . Questo database viene creato silenziosamente in base alle esigenze ogni volta che viene eseguito rpm . Poiché si trova nella home directory di ogni utente, non vi sono problemi con le autorizzazioni condivise o richiede la creazione del database da parte di un amministratore. Ogni utente ottiene il proprio database privato rpm vuoto.

Perché dovrebbe essere eseguito rpm su Ubuntu?

Risulta che alcuni progetti amano creare script di installazione che funzionino su qualsiasi distribuzione, indipendentemente dal fatto che tale distribuzione sia basata su rpm, basata su deb o su nessuno dei due. DKMS è uno di questi progetti, consente di build driver di terze parti per qualunque kernel Linux un sistema sia in esecuzione, ed è scritto per funzionare su tutte le distribuzioni. In parte della sua logica per determinare su quale distribuzione è in esecuzione e quale versione del kernel è presente, esegue un comando rpm per interrogare il database. Come ho spiegato prima, ciò creerà silenziosamente una directory .rpmdb se non esiste già nella home directory dell’utente corrente. La query del database dovrebbe fallire, dal momento che Ubuntu non è una distribuzione basata su rpm e DKMS continua.

Se installi ulteriori pacchetti di driver del kernel Linux da Ubuntu come VirtualBox, NVIDIA, ndiswrapper o openswan, probabilmente stai utilizzando DKMS per installare quei driver per il tuo kernel. Questo in genere viene eseguito automaticamente quando il driver viene installato dai repository di Ubuntu. Quindi, ogni volta che viene installato un aggiornamento del kernel o del driver, DKMS viene eseguito nuovamente per ribuild il driver per tutte le versioni del kernel disponibili. È stato dimostrato che quando questi pacchetti vengono aggiornati, la directory /root/.rpmdb appare di fatto, che si trova nella directory principale di root poiché root è necessaria per installare gli aggiornamenti.

Non conosco altri specifici script di installazione di terze parti che potrebbero anche eseguire comandi rpm come metodo per rilevare il tipo di distribuzione, ma è certamente ansible. Ad esempio, è ansible installare LargeProprietaryProgram da Initech e, per farlo, si esegue uno script install.sh come root. Questo script può provare a interrogare un database rpm per vedere se si sta eseguendo una distribuzione basata su rpm e /root/.rpmdb viene nuovamente creato.

Questo spiega perché potresti vedere le directory /root/.rpmdb e /root/.rpmdb sul tuo sistema. Ma perché nella directory radice del sistema?

Perché .rpmdb è stato creato nella directory principale?

La spiegazione più semplice per questo è che la variabile d’ambiente $HOME viene distriggersta in qualche modo in un contesto di processo che esegue rpm . Usiamo DKMS a scopo argomentativo perché sappiamo definitivamente che può eseguire comandi rpm . Poiché in genere viene eseguito quando i pacchetti vengono installati o aggiornati, viene eseguito nell’ambiente di qualsiasi gestore di pacchetti che si è verificato. Se si utilizza sudo apt-get per installare i pacchetti, erediterà un $HOME corretto. Se usi PackageKit, potrebbe non avere una variabile $HOME . Non sono sicuro di quale ambiente sia fornito da Synaptic o dal software center di Ubuntu.

Quindi, se DKMS è in esecuzione in un ambiente che non ha una variabile $HOME e a causa del modo in cui è stato definito il database rpm, verrà creato un database rpm vuoto in /.rpmdb invece di /root/.rpmdb . Questo è stato corretto nel pacchetto rpm per Ubuntu nella versione di sviluppo 14.10, quindi ora dovrebbe creare /root/.rpmdb anche se $HOME non è definito.

Spero che questo spieghi perché ci sono directory chiamate .rpmdb su un sistema Ubuntu, perché potrebbero essere create apparentemente in modo automatico, e perché è ansible .rpmdb una nella directory root sotto il giusto insieme di condizioni. Non c’è nulla di cui preoccuparsi, non c’è nulla di malizioso nell’esistenza di questa directory e può essere semplicemente cancellato se la sua presenza è offensiva per l’estetica o gli scanner di sicurezza.

RPM (Red Hat Package Manager) è un sistema di gestione dei pacchetti. It RPM fu originariamente scritto nel 1997 da Erik Troan e Marc Ewing per l’uso in Red Hat Linux, ma ora è usato in molte distribuzioni GNU / Linux.

Lavorare dietro le quinte del gestore dei pacchetti è il database RPM ( RPMDB ), memorizzato in /var/lib/rpm . Consiste in un singolo database (pacchetti) contenente tutte le meta informazioni degli rpm installati . Il database viene utilizzato per tenere traccia di tutti i file modificati e creati quando un utente (utilizzando RPM) installa un pacchetto , consentendo all’utente (tramite RPM) di invertire le modifiche e rimuovere il pacchetto in un secondo momento.


Riferimento: http://en.wikipedia.org/wiki/RPM_Package_Manager