Quelqu'un peut-il expliquer à quoi sert le dossier /.rpmdb dans le répertoire racine? Quelle application le crée et l'utilise?
Je ne peux pas dire définitivement ce qui crée ce répertoire, mais il est probable qu'il soit créé soit comme effet secondaire de l'installation de pilotes de noyau Linux tiers tels que NVIDIA ou VirtualBox à l'aide de DKMS , soit par un autre script d'installation non pris en charge non fourni par Ubuntu. Ce répertoire a probablement été créé comme effet secondaire d'un processus d'installation qui prend en charge les distributions basées sur rpm et deb. DKMS se trouve être un tel script d'installation et peut certainement créer ce répertoire dans les bonnes conditions. Le répertoire peut être supprimé en toute sécurité sans endommager votre système, mais il peut être recréé lors de l'installation ultérieure des mises à jour. Voir le bogue # 1069350 pour un rapport de bogue ouvert qui suit ce problème.
Voilà la réponse courte, maintenant un peu plus de détails.
Comme vous le savez peut-être, rpm est un format de package logiciel et un ensemble d'outils pour installer des packages et maintenir la base de données des packages installés et leurs interdépendances. Il est utilisé par de nombreuses distributions mais pas par Ubuntu et d'autres distributions basées sur deb. Malheureusement pour Ubuntu, cependant, toute utilisation de la rpm
commande nécessite l'existence ou la création d'une base de données "rpmdb" valide.
Sur les distributions basées sur rpm, ce n'est pas un problème car elles ont un rpmdb à l'échelle du système par définition. Sur les systèmes Ubuntu, puisqu'il n'y a pas besoin d'une base de données RPM à l'échelle du système, rpm
est configuré pour utiliser une base de données sous le répertoire personnel de chaque utilisateur, en particulier $HOME/.rpmdb
. Cette base de données est créée silencieusement selon les besoins à chaque rpm
exécution. Comme il se trouve dans le répertoire personnel de chaque utilisateur, il n'y a aucun problème avec les autorisations partagées ou nécessitant la création de la base de données par un administrateur. Chaque utilisateur obtient juste sa propre base de données vide privée rpm.
Il s'avère que certains projets aiment créer des scripts d'installation qui fonctionneront sur n'importe quelle distribution, que cette distribution soit basée sur rpm, deb ou aucune. DKMS est un de ces projets, il permet de construire des pilotes tiers pour tout noyau Linux qu'un système exécute, et il est écrit pour fonctionner sur toutes les distributions. Dans une partie de sa logique pour déterminer sur quelle distribution il s'exécute et sur quelle version de noyau est présente, il exécute une rpm
commande pour interroger la base de données. Comme je l'ai expliqué précédemment, cela créera silencieusement un .rpmdb
répertoire s'il n'en existe pas déjà dans le répertoire personnel de l'utilisateur actuel. La requête de base de données devrait échouer, car Ubuntu n'est pas une distribution basée sur rpm et DKMS continue.
Si vous installez des packages de pilotes de noyau Linux supplémentaires à partir d'Ubuntu tels que VirtualBox, NVIDIA, ndiswrapper ou openswan, vous utilisez probablement DKMS pour installer ces pilotes pour votre noyau. Cela se fait généralement automatiquement lorsque le pilote est installé à partir des référentiels Ubuntu. Ainsi, chaque fois qu'une mise à jour du noyau ou du pilote est installée, DKMS s'exécute à nouveau pour reconstruire le pilote pour toutes les versions de noyau disponibles. Il a été démontré que lorsque ces packages sont mis à jour, le /root/.rpmdb
répertoire apparaît en fait, qui se trouve dans le répertoire personnel de root, car root est requis pour installer les mises à jour.
Je ne connais aucun autre script d'installation tiers spécifique qui puisse également exécuter des rpm
commandes pour détecter le type de distribution, mais c'est certainement possible. Par exemple, vous souhaiterez peut-être installer LargeProprietaryProgram depuis Initech, et pour ce faire, vous exécuterez un install.sh
script en tant que root. Ce script peut essayer d'interroger une base de données rpm pour voir si vous exécutez une distribution basée sur rpm et /root/.rpmdb
est à nouveau créé.
Alors , ce qui explique pourquoi vous pouvez voir /home/user/.rpmdb
et /root/.rpmdb
répertoires apparaître sur votre système. Mais pourquoi dans le répertoire racine du système?
L'explication la plus simple est que la $HOME
variable d'environnement n'est pas définie d'une manière ou d'une autre dans un contexte de processus qui s'exécute rpm
. Utilisons DKMS à des fins d'argument car nous savons définitivement qu'il peut exécuter des rpm
commandes. Parce qu'il s'exécute généralement lorsque les packages sont installés ou mis à jour, il s'exécute dans l'environnement du gestionnaire de packages que vous utilisez. Si vous utilisez sudo apt-get
pour installer des packages, il héritera d'un correct $HOME
. Si vous utilisez PackageKit, il peut ne pas avoir de $HOME
variable du tout. Je ne sais pas quel environnement est fourni par Synaptic ou Ubuntu Software Center.
Donc, si DKMS s'exécute dans un environnement qui n'a pas de $HOME
variable, et en raison de la façon dont la base de données rpm a été définie, une base de données rpm vide sera créée à la /.rpmdb
place de /root/.rpmdb
. Cela a été corrigé dans le rpm
package pour Ubuntu dans la version de développement 14.10, il devrait donc maintenant créer /root/.rpmdb
même s'il $HOME
n'est pas défini.
J'espère que cela explique pourquoi il existe des répertoires appelés .rpmdb
sur un système Ubuntu, pourquoi ils peuvent être créés apparemment automatiquement et pourquoi un peut être créé dans le répertoire racine dans le bon ensemble de conditions. Il n'y a rien à craindre, il n'y a rien de malveillant dans l'existence de ce répertoire, et il peut simplement être supprimé si sa présence est offensante pour les scanners esthétiques ou de sécurité.
RPM (Red Hat Package Manager) est un système de gestion de packages. Ce RPM a été initialement écrit en 1997 par Erik Troan et Marc Ewing pour être utilisé dans Red Hat Linux, mais est maintenant utilisé dans de nombreuses distributions GNU / Linux.
La base de données RPM ( RPMDB ), stockée dans, travaille dans les coulisses du gestionnaire de packages /var/lib/rpm
. Il se compose d'une seule base de données (packages) contenant toutes les méta-informations des rpms installés . La base de données est utilisée pour garder une trace de tous les fichiers modifiés et créés lorsqu'un utilisateur (utilisant RPM) installe un package , permettant ainsi à l'utilisateur (via RPM) d'annuler les modifications et de supprimer le package ultérieurement.
/.rpmdb
apparaîtrait sur un système Ubuntu (qui n'utilise pas rpm)?alien