Unbekannter Ordner im Systemstamm /.rpmdb

16

Kann jemand erklären, wofür der Ordner /.rpmdb im Stammverzeichnis ist? Welche Anwendung erstellt es und verwendet es?

BSimulj
quelle

Antworten:

11

Ich kann nicht definitiv sagen, wie dieses Verzeichnis erstellt wird, aber es ist wahrscheinlich, dass es entweder als Nebeneffekt der Installation von Linux-Kerneltreibern von Drittanbietern wie NVIDIA oder VirtualBox mit DKMS oder durch ein anderes nicht unterstütztes Installationsskript erstellt wird, das nicht von bereitgestellt wird Ubuntu. Dieses Verzeichnis wurde höchstwahrscheinlich als Nebeneffekt eines Installationsprozesses erstellt, der sowohl rpm-basierte als auch deb-basierte Distributionen unterstützt. DKMS ist ein solches Installationsskript und kann dieses Verzeichnis definitiv unter den richtigen Bedingungen erstellen. Das Verzeichnis kann sicher gelöscht werden, ohne Ihr System zu beschädigen. Es kann jedoch bei einer späteren Installation von Updates neu erstellt werden. Unter Fehler # 1069350 finden Sie einen offenen Fehlerbericht, in dem dieses Problem nachverfolgt wird .

Das ist die kurze Antwort, jetzt etwas detaillierter.

Was ist .rpmdb?

Wie Sie vielleicht wissen, ist rpm ein Softwarepaketformat und eine Reihe von Tools zum Installieren von Paketen sowie zum Verwalten der Datenbank installierter Pakete und ihrer Abhängigkeiten. Es wird von vielen Distributionen verwendet, aber nicht von Ubuntu und anderen deb-basierten Distributionen. Unglücklicherweise für Ubuntu setzt jedoch jede Verwendung des rpmBefehls voraus, dass eine gültige "rpmdb" -Datenbank vorhanden ist oder erstellt wird.

Bei rpm-basierten Distributionen ist dies kein Problem, da sie per Definition eine systemweite rpmdb haben. Da auf Ubuntu-Systemen keine systemweite RPM-Datenbank erforderlich rpmist , ist diese so konfiguriert, dass sie eine Datenbank im Basisverzeichnis jedes Benutzers verwendet $HOME/.rpmdb. Diese Datenbank wird bei jeder Ausführung unbeaufsichtigt nach Bedarf erstellt rpm. Da es sich in dem Basisverzeichnis jedes Benutzers befindet, gibt es keine Probleme mit freigegebenen Berechtigungen oder es ist erforderlich, dass die Datenbank von einem Administrator erstellt wird. Jeder Benutzer bekommt einfach seine eigene, leere RPM-Datenbank.

Warum sollte rpm überhaupt auf Ubuntu laufen?

Es stellt sich heraus, dass einige Projekte gerne Installationsskripte erstellen, die auf jeder Distribution funktionieren, unabhängig davon, ob diese Distribution rpm- oder deb-basiert ist oder nicht. DKMS ist ein solches Projekt. Es ermöglicht die Erstellung von Treibern von Drittanbietern für jeden Linux-Kernel, der gerade auf einem System ausgeführt wird, und ist für die verteilungsübergreifende Verwendung vorgesehen. Im Rahmen seiner Logik zur Bestimmung, auf welcher Distribution sie ausgeführt wird und welche Kernelversion vorhanden ist, führt er einen rpmBefehl zum Abfragen der Datenbank aus. Wie bereits erläutert, wird auf diese Weise im Hintergrund ein .rpmdbVerzeichnis erstellt, falls noch keines im Basisverzeichnis des aktuellen Benutzers vorhanden ist. Die Datenbankabfrage sollte fehlschlagen, da Ubuntu keine rpm-basierte Distribution ist und DKMS weiterarbeitet.

Wenn Sie zusätzliche Linux-Kerneltreiberpakete von Ubuntu wie VirtualBox, NVIDIA, ndiswrapper oder openswan installieren, verwenden Sie wahrscheinlich DKMS, um diese Treiber für Ihren Kernel zu installieren. Dies geschieht normalerweise automatisch, wenn der Treiber aus den Ubuntu-Repositorys installiert wird. Jedes Mal, wenn ein Kernel- oder Treiberupdate installiert wird, wird DKMS erneut ausgeführt, um den Treiber für alle verfügbaren Kernelversionen neu zu erstellen. Es hat sich gezeigt, dass beim Aktualisieren dieser Pakete /root/.rpmdbtatsächlich das Verzeichnis angezeigt wird , das sich im Stammverzeichnis befindet, da für die Installation von Updates root erforderlich ist.

Ich kenne keine anderen speziellen Installationsskripte von Drittanbietern, die möglicherweise auch rpmBefehle ausführen , um den Verteilungstyp zu ermitteln, aber es ist durchaus möglich. Möglicherweise möchten Sie beispielsweise LargeProprietaryProgram von Initech installieren und dazu ein install.shSkript als Root ausführen . Dieses Skript versucht möglicherweise, eine rpm-Datenbank abzufragen, um festzustellen, ob Sie eine rpm-basierte Distribution ausführen, und /root/.rpmdbwird erneut erstellt.

So das erklärt , warum können Sie sehen /home/user/.rpmdbund /root/.rpmdbVerzeichnisse auf Ihrem System angezeigt. Aber warum im Systemstammverzeichnis?

Warum wird .rpmdb im Stammverzeichnis erstellt?

Die einfachste Erklärung dafür ist, dass die $HOMEUmgebungsvariable in einem laufenden Prozesskontext irgendwie nicht gesetzt ist rpm. Lassen Sie uns DKMS als Argument verwenden, da wir definitiv wissen, dass es rpmBefehle ausführen kann. Da es normalerweise ausgeführt wird, wenn Pakete installiert oder aktualisiert werden, wird es in der Umgebung des Paket-Managers ausgeführt, den Sie gerade verwenden. Wenn Sie sudo apt-getzum Installieren von Paketen verwenden, wird eine korrekte geerbt $HOME. Wenn Sie PackageKit verwenden, enthält es möglicherweise überhaupt keine $HOMEVariable. Ich bin nicht sicher, welche Umgebung von Synaptic oder Ubuntu Software Center bereitgestellt wird.

Wenn die DKMS in einer Umgebung ausgeführt wird, in der keine $HOMEVariable vorhanden ist, und aufgrund der Art und Weise, wie die RPM-Datenbank definiert wurde, wird /.rpmdbstattdessen eine leere RPM-Datenbank erstellt /root/.rpmdb. Dies wurde im rpmPaket für Ubuntu in der Entwicklungsversion 14.10 behoben und sollte nun erstellt werden, /root/.rpmdbauch wenn dies $HOMEnicht definiert ist.

Ich hoffe, das erklärt, warum es .rpmdbauf einem Ubuntu-System überhaupt Verzeichnisse gibt, warum sie scheinbar automatisch erstellt werden und warum man sie unter den richtigen Bedingungen im Stammverzeichnis erstellen kann. Es gibt nichts zu befürchten, es gibt nichts Bösartiges in der Existenz dieses Verzeichnisses, und es kann einfach gelöscht werden, wenn seine Anwesenheit ästhetisch oder sicherheitstechnisch anstößig ist.

Mike Miller
quelle
-1

RPM (Red Hat Package Manager) ist ein Paketverwaltungssystem. Es wurde ursprünglich 1997 von Erik Troan und Marc Ewing für die Verwendung in Red Hat Linux geschrieben, wird aber jetzt in vielen GNU / Linux-Distributionen verwendet.

Hinter den Kulissen des Paketmanagers arbeitet die RPM-Datenbank ( RPMDB ), die in gespeichert ist /var/lib/rpm. Es besteht aus einer einzigen Datenbank (Packages), die alle Metainformationen der installierten RPMs enthält . Die Datenbank wird verwendet, um alle Dateien zu verfolgen, die geändert und erstellt werden, wenn ein Benutzer (mit RPM) ein Paket installiert . Auf diese Weise kann der Benutzer (über RPM) die Änderungen rückgängig machen und das Paket später entfernen.


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

Lucio
quelle
4
Inwiefern ist dies relevant, um zu erklären, warum /.rpmdbauf einem Ubuntu-System (das nicht rpm verwendet) angezeigt wird?
Gilles 'SO- hör auf böse zu sein'
1
vielleicht verwendetalien
Jet