Odpowiedzi:
Nie mogę definitywnie powiedzieć, co tworzy ten katalog, ale jest prawdopodobne, że został on utworzony albo jako efekt uboczny instalacji sterowników jądra Linuksa innych firm, takich jak NVIDIA lub VirtualBox przy użyciu DKMS , lub przez inny nieobsługiwany skrypt instalatora nie dostarczony przez Ubuntu. Ten katalog został najprawdopodobniej utworzony jako efekt uboczny procesu instalacji, który obsługuje zarówno dystrybucje oparte na rpm, jak i deb. DKMS jest takim skryptem instalacyjnym i zdecydowanie może utworzyć ten katalog we właściwych warunkach. Katalog można bezpiecznie usunąć bez szkody dla systemu, ale można go utworzyć ponownie, gdy aktualizacje zostaną zainstalowane później. Zobacz błąd nr 1069350, aby uzyskać otwarty raport o błędzie śledzący ten problem.
To krótka odpowiedź, teraz trochę więcej szczegółów.
Jak zapewne wiesz, rpm to format pakietu oprogramowania i zestaw narzędzi do instalowania pakietów i utrzymywania bazy danych zainstalowanych pakietów i ich wzajemnych zależności. Jest używany przez wiele dystrybucji, ale nie przez Ubuntu i inne dystrybucje oparte na debacie. Niestety dla Ubuntu każde użycie rpm
polecenia wymaga istnienia lub utworzenia prawidłowej bazy danych „rpmdb”.
W przypadku dystrybucji opartych na rpm nie stanowi to problemu, ponieważ z definicji mają one ogólnosystemowe rpmdb. W systemach Ubuntu, ponieważ nie ma potrzeby ogólnosystemowej bazy danych rpm, rpm
skonfigurowano ją tak, aby korzystała z bazy danych w katalogu osobistym każdego użytkownika $HOME/.rpmdb
. Ta baza danych jest cicho tworzona w razie potrzeby przy każdym rpm
uruchomieniu. Ponieważ znajduje się on w katalogu osobistym każdego użytkownika, nie ma problemów z uprawnieniami współdzielonymi ani wymogiem tworzenia bazy danych przez administratora. Każdy użytkownik otrzymuje swoją prywatną, pustą bazę danych rpm.
Okazuje się, że niektóre projekty lubią tworzyć skrypty instalacyjne, które będą działać na dowolnej dystrybucji, bez względu na to, czy ta dystrybucja jest oparta na rpm, deb czy nie. DKMS jest jednym z takich projektów, pozwala budować sterowniki innych firm dla dowolnego jądra Linux, na którym działa system, i jest napisany do pracy w różnych dystrybucjach. W ramach logiki określającej, na której dystrybucji działa i która wersja jądra jest obecna, wykonuje rpm
polecenie zapytania do bazy danych. Jak wyjaśniłem wcześniej, po cichu utworzy .rpmdb
katalog, jeśli nie istnieje on jeszcze w katalogu osobistym bieżącego użytkownika. Zapytanie do bazy danych powinno zakończyć się niepowodzeniem, ponieważ Ubuntu nie jest dystrybucją opartą na rpm, a DKMS kontynuuje działanie.
Jeśli zainstalujesz dodatkowe pakiety sterowników jądra Linux z Ubuntu, takie jak VirtualBox, NVIDIA, ndiswrapper lub openswan, prawdopodobnie używasz DKMS do zainstalowania tych sterowników dla twojego jądra. Zwykle odbywa się to automatycznie, gdy sterownik jest instalowany z repozytoriów Ubuntu. Dlatego za każdym razem, gdy instalowana jest aktualizacja jądra lub sterownika, DKMS uruchamia się ponownie, aby przebudować sterownik dla wszystkich dostępnych wersji jądra. Wykazano, że kiedy te pakiety są aktualizowane, /root/.rpmdb
katalog faktycznie się pojawia, który znajduje się w katalogu głównym roota, ponieważ root jest wymagany do zainstalowania aktualizacji.
Nie znam żadnych innych skryptów instalacyjnych innych firm, które mogą również wykonywać rpm
polecenia w celu wykrycia typu dystrybucji, ale z pewnością jest to możliwe. Na przykład, możesz chcieć zainstalować LargeProprietaryProgram z Initech, i aby to zrobić, uruchom install.sh
skrypt jako root. Ten skrypt może próbować wysłać zapytanie do bazy danych RPM, aby sprawdzić, czy korzystasz z dystrybucji opartej na RPM, i /root/.rpmdb
został utworzony ponownie.
To wyjaśnia, dlaczego możesz zobaczyć, /home/user/.rpmdb
a /root/.rpmdb
katalogi pojawiają się w twoim systemie. Ale dlaczego w katalogu głównym systemu?
Najłatwiejszym wyjaśnieniem tego jest to, że $HOME
zmienna środowiskowa jest w jakiś sposób rozbrojona w działającym kontekście procesu rpm
. Użyjmy DKMS jako argumentu, ponieważ wiemy, że może on uruchamiać rpm
polecenia. Ponieważ zwykle działa, gdy pakiety są instalowane lub aktualizowane, działa w środowisku dowolnego menedżera pakietów, którego używasz. Jeśli użyjesz sudo apt-get
do zainstalowania pakietów, odziedziczy poprawny $HOME
. Jeśli korzystasz z PackageKit, może on $HOME
w ogóle nie mieć zmiennej. Nie jestem pewien, jakie środowisko zapewnia Synaptic lub Ubuntu Software Center.
Więc jeśli DKMS działa w środowisku, które nie ma $HOME
zmiennej, a ze względu na sposób zdefiniowania bazy danych rpm, /.rpmdb
zamiast niej zostanie utworzona pusta baza danych rpm /root/.rpmdb
. Zostało to naprawione w rpm
pakiecie dla Ubuntu w wersji rozwojowej 14.10, więc powinno się teraz tworzyć, /root/.rpmdb
nawet jeśli $HOME
nie jest zdefiniowane.
Mam nadzieję, że to wyjaśnia, dlaczego .rpmdb
w systemie Ubuntu są w ogóle wywoływane katalogi , dlaczego mogą być tworzone pozornie automatycznie i dlaczego można je utworzyć w katalogu głównym w odpowiednich warunkach. Nie ma się czym martwić, nie ma nic złośliwego w istnieniu tego katalogu i można go po prostu usunąć, jeśli jego obecność jest obraźliwa dla estetyki lub skanerów bezpieczeństwa.
RPM (Red Hat Package Manager) to system zarządzania pakietami. To RPM zostało pierwotnie napisane w 1997 roku przez Erika Troana i Marca Ewinga do użytku w Red Hat Linux, ale teraz jest używane w wielu dystrybucjach GNU / Linux.
Za kulisami menedżera pakietów działa baza danych RPM ( RPMDB ), przechowywana w /var/lib/rpm
. Składa się z pojedynczej bazy danych (pakietów) zawierającej wszystkie meta informacje o zainstalowanych programach rpms . Baza danych służy do śledzenia wszystkich plików, które zostały zmienione i utworzone, gdy użytkownik (korzystający z RPM) instaluje pakiet , umożliwiając w ten sposób użytkownikowi (poprzez RPM) cofnięcie zmian i usunięcie pakietu później.
Odniesienie: http://en.wikipedia.org/wiki/RPM_Package_Manager
alien
/.rpmdb
pojawia się w systemie Ubuntu (który nie używa rpm)?