Nieznany folder w katalogu głównym systemu /.rpmdb

16

Czy ktoś może wyjaśnić, do czego służy folder /.rpmdb w katalogu głównym? Która aplikacja go tworzy i używa?

BSimulj
źródło

Odpowiedzi:

11

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.

Co to jest .rpmdb?

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 rpmpolecenia 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, rpmskonfigurowano 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 rpmuruchomieniu. 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.

Dlaczego rpm miałby być w ogóle uruchamiany na Ubuntu?

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 rpmpolecenie zapytania do bazy danych. Jak wyjaśniłem wcześniej, po cichu utworzy .rpmdbkatalog, 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/.rpmdbkatalog 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ć rpmpolecenia 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.shskrypt 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/.rpmdbzostał utworzony ponownie.

To wyjaśnia, dlaczego możesz zobaczyć, /home/user/.rpmdba /root/.rpmdbkatalogi pojawiają się w twoim systemie. Ale dlaczego w katalogu głównym systemu?

Dlaczego .rpmdb jest tworzony w katalogu głównym?

Najłatwiejszym wyjaśnieniem tego jest to, że $HOMEzmienna ś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ć rpmpolecenia. 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-getdo zainstalowania pakietów, odziedziczy poprawny $HOME. Jeśli korzystasz z PackageKit, może on $HOMEw 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 $HOMEzmiennej, a ze względu na sposób zdefiniowania bazy danych rpm, /.rpmdbzamiast niej zostanie utworzona pusta baza danych rpm /root/.rpmdb. Zostało to naprawione w rpmpakiecie dla Ubuntu w wersji rozwojowej 14.10, więc powinno się teraz tworzyć, /root/.rpmdbnawet jeśli $HOMEnie jest zdefiniowane.

Mam nadzieję, że to wyjaśnia, dlaczego .rpmdbw 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.

Mike Miller
źródło
-1

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

Lucio
źródło
4
W jaki sposób ma to znaczenie dla wyjaśnienia, dlaczego /.rpmdbpojawia się w systemie Ubuntu (który nie używa rpm)?
Gilles „SO- przestań być zły”
1
być może użytyalien
jet