Cartella sconosciuta su System root /.rpmdb


16

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

Risposte:


11

Non posso dire in modo definitivo cosa crea questa directory, ma è probabile che sia stata creata come effetto collaterale dell'installazione di driver del kernel Linux di terze parti come NVIDIA o VirtualBox tramite DKMS , o da qualche altro script di installazione non supportato non fornito da Ubuntu. Molto probabilmente questa directory è stata creata come effetto collaterale di un processo di installazione che supporta sia le distribuzioni basate su rpm che quelle basate su deb. DKMS sembra essere un tale script di installazione e può sicuramente creare questa directory nelle giuste condizioni. La directory può essere tranquillamente eliminata senza danneggiare il sistema, ma può essere creata di nuovo quando gli aggiornamenti vengono installati successivamente. Vedi bug # 1069350 per un rapporto bug aperto che tiene traccia di questo problema.

Questa è la risposta breve, ora qualche dettaglio in più.

Che cos'è .rpmdb?

Come forse saprai, rpm è un formato di pacchetto software e un insieme di strumenti per l'installazione di pacchetti e la manutenzione del database dei pacchetti installati e delle loro interdipendenze. È usato da molte distribuzioni ma non da Ubuntu e da altre distribuzioni basate su deb. Sfortunatamente per Ubuntu, tuttavia, qualsiasi uso del rpmcomando richiede l'esistenza o la creazione di un database "rpmdb" valido.

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 principale di ciascun utente, in particolare $HOME/.rpmdb. Questo database viene creato silenziosamente secondo necessità ogni volta che rpmviene eseguito. Dal momento che si trova nella home directory di ciascun utente, non ci sono problemi con le autorizzazioni condivise o la necessità di creare il database da un amministratore. Ogni utente ottiene il proprio database rpm vuoto privato.

Perché rpm dovrebbe essere eseguito su Ubuntu?

Si scopre che ad alcuni progetti piace creare script di installazione che funzioneranno su qualsiasi distribuzione, indipendentemente dal fatto che tale distribuzione sia basata su rpm, basata su deb o nessuna delle due. DKMS è uno di questi progetti, consente di creare driver di terze parti per qualunque kernel Linux sia in esecuzione su un sistema ed è scritto per funzionare su tutte le distribuzioni. Parte della sua logica per determinare su quale distribuzione è in esecuzione e su quale versione del kernel è presente, esegue un rpmcomando per interrogare il database. Come ho spiegato in precedenza, ciò creerà automaticamente una .rpmdbdirectory se non esiste già nella home directory dell'utente corrente. La query del database non dovrebbe riuscire, poiché Ubuntu non è una distribuzione basata su rpm e DKMS continua.

Se installi altri pacchetti di driver del kernel Linux da Ubuntu come VirtualBox, NVIDIA, ndiswrapper o openswan, probabilmente stai usando DKMS per installare quei driver per il tuo kernel. Questo di solito viene eseguito automaticamente quando il driver viene installato dai repository Ubuntu. Quindi ogni volta che viene installato un aggiornamento del kernel o del driver, DKMS viene eseguito nuovamente per ricostruire il driver per tutte le versioni del kernel disponibili. È stato dimostrato che quando questi pacchetti vengono aggiornati, /root/.rpmdbviene effettivamente visualizzata la directory, che si trova nella directory principale di root poiché è necessario il root per installare gli aggiornamenti.

Non conosco altri specifici script di installazione di terze parti che possono anche eseguire rpmcomandi come modo per rilevare il tipo di distribuzione, ma è certamente possibile. Ad esempio, potresti voler installare LargeProprietaryProgram da Initech e, per farlo, esegui uno install.shscript come root. Questo script può tentare di interrogare un database rpm per vedere se stai eseguendo una distribuzione basata su rpm e/root/.rpmdb è stato creato di nuovo.

Questo spiega perché potresti vedere /home/user/.rpmdbe/root/.rpmdb visualizzare le directory sul tuo sistema. Ma perché nella directory principale del sistema?

Perché .rpmdb viene creato nella directory principale?

La spiegazione più semplice per questo è che la $HOMEvariabile d'ambiente è in qualche modo disinserita in qualche contesto di processo che viene eseguito rpm. Usiamo DKMS per ragioni di argomento perché sappiamo definitivamente che può eseguire rpmcomandi. Poiché in genere viene eseguito quando i pacchetti vengono installati o aggiornati, viene eseguito nell'ambiente di qualsiasi gestore di pacchetti che si utilizza. Se si utilizza sudo apt-getper installare i pacchetti, erediterà un corretto $HOME. Se usi PackageKit, potrebbe non avere affatto una $HOMEvariabile. Non sono sicuro di quale ambiente sia fornito da Synaptic o Ubuntu Software Center.

Quindi, se DKMS è in esecuzione in un ambiente che non ha una $HOMEvariabile e, a causa del modo in cui è stato definito il database rpm, al suo /.rpmdbposto verrà creato un database rpm vuoto /root/.rpmdb. Questo rpmproblema è stato risolto nel pacchetto per Ubuntu nella versione di sviluppo 14.10, quindi dovrebbe essere creato /root/.rpmdbanche se $HOMEnon definito.

Spero che questo spieghi perché ci sono delle directory chiamate .rpmdbsu un sistema Ubuntu, perché possono essere create apparentemente automaticamente, e perché uno può essere creato nella directory root nelle giuste condizioni. Non c'è nulla di cui preoccuparsi, non esiste nulla di dannoso nell'esistenza di questa directory e può essere semplicemente eliminata se la sua presenza è offensiva per l'estetica o gli scanner di sicurezza.


-1

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

Il dietro le quinte del gestore pacchetti è il database RPM ( RPMDB ), archiviato in /var/lib/rpm. È costituito da un unico database (pacchetti) contenente tutte le meta informazioni degli rpms installati . Il database viene utilizzato per tenere traccia di tutti i file modificati e creati quando un utente (utilizzando RPM) installa un pacchetto , consentendo così all'utente (tramite RPM) di annullare le modifiche e rimuovere il pacchetto in un secondo momento.


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


4
In che modo ciò è rilevante per spiegare perché /.rpmdbdovrebbe apparire su un sistema Ubuntu (che non utilizza rpm)?
Gilles 'SO- smetti di essere malvagio' il

1
forse usatoalien
jet
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.