Відповіді:
Я не можу остаточно сказати, що створює цей каталог, але, ймовірно, він створений або як побічний ефект установки сторонніх драйверів Linux ядра, таких як NVIDIA або VirtualBox за допомогою DKMS , або за допомогою іншого непідтримуваного сценарію інсталятора, який не надається Ubuntu. Цей каталог, швидше за все, був створений як побічний ефект процесу встановлення, який підтримує як розподіли на основі rpm, так і на дебю. DKMS - це такий сценарій встановлення, і він, безумовно, може створити цей каталог за правильних умов. Каталог можна безпечно видалити, не завдаючи шкоди вашій системі, але він може бути створений заново, коли оновлення буде встановлено пізніше. Дивіться про помилку №1069350 для відкритого звіту про помилку, який відстежує цю проблему.
Ось така коротка відповідь, тепер ще трохи детальніше.
Як ви, можливо, знаєте, rpm - це формат упаковки програмного забезпечення та набір інструментів для встановлення пакетів та ведення бази даних встановлених пакетів та їх взаємозалежності. Він використовується багатьма дистрибутивами, але не Ubuntu та іншими дистрибутивами на основі дебюту. На жаль для Ubuntu, однак, будь-яке використання rpm
команди вимагає, щоб існувала або була створена дійсна база даних "rpmdb".
Для розподілів на основі rpm це не проблема, оскільки вони мають загальносистемний rpmdb за визначенням. У системах Ubuntu, оскільки немає потреби в загальносистемній базі даних об / хв, rpm
налаштовано на використання бази даних в домашньому каталозі кожного користувача, зокрема $HOME/.rpmdb
. Ця база даних безшумно створюється за потреби під час кожного rpm
запуску. Оскільки він знаходиться у домашньому каталозі кожного користувача, немає проблем із спільними дозволами або вимагає створення бази даних адміністратором. Кожен користувач просто отримує власну приватну порожню базу даних rpm.
Виявляється, деякі проекти люблять створювати сценарії встановлення, які працюватимуть на будь-якому дистрибутиві, незалежно від того, чи заснований він на rpm, deb чи на основі жодного. DKMS - один з таких проектів, він дозволяє будувати сторонні драйвери для будь-якого ядра Linux, що працює в системі, і він написаний для роботи в різних дистрибутивах. Частина своєї логіки визначає, на якому дистрибутиві він працює і в якій версії ядра присутня, він виконує rpm
команду для запиту бази даних. Як я пояснював раніше, це мовчки створить .rpmdb
каталог, якщо його вже не існує в домашньому каталозі поточного користувача. Запит на базу даних повинен бути невдалим, оскільки Ubuntu не є розподілом на основі rpm, а DKMS продовжується.
Якщо ви встановите будь-які додаткові пакети драйверів ядра Linux з Ubuntu, такі як VirtualBox, NVIDIA, ndiswrapper або openswan, ви, ймовірно, використовуєте DKMS для встановлення цих драйверів для свого ядра. Зазвичай це робиться автоматично, коли драйвер встановлений із сховищ Ubuntu. Тому щоразу, коли встановлено або оновлення ядра, або драйвер, DKMS запускається знову, щоб відновити драйвер для всіх доступних версій ядра. Показано, що коли ці пакунки оновлюються, /root/.rpmdb
фактично з'являється каталог, який знаходиться в домашній директорії root, оскільки для встановлення оновлень потрібен root.
Я не знаю жодних інших конкретних сценаріїв встановлення сторонніх розробників, які також можуть виконувати rpm
команди як спосіб виявлення типу розподілу, але це, безумовно, можливо. Наприклад, ви, можливо, захочете встановити LargeProprietaryProgram від Initech, і для цього запустіть install.sh
сценарій як root. Цей скрипт може спробувати здійснити запит до бази даних rpm, щоб побачити, чи працює ви дистрибутив на основі rpm, і /root/.rpmdb
чи створюється він знову.
Отже, це пояснює, чому ви можете бачити, /home/user/.rpmdb
а /root/.rpmdb
каталоги відображаються у вашій системі. Але чому в системному кореневому каталозі?
Найпростішим поясненням цього є те, що $HOME
змінна середовища якимось чином не налаштована в деякому контексті процесу, який працює rpm
. Давайте використовуємо DKMS для аргументу, оскільки ми остаточно знаємо, що він може запускати rpm
команди. Оскільки він зазвичай працює, коли пакунки встановлені або оновлені, він запускається в середовищі будь-якого менеджера пакунків, який ви використовуєте. Якщо ви використовуєте sudo apt-get
для встановлення пакетів, він успадкує правильний $HOME
. Якщо ви використовуєте PackageKit, він може взагалі не мати $HOME
змінної. Я не впевнений, яке середовище надає Synaptic або Ubuntu Software Center.
Отже, якщо DKMS працює в середовищі, що не має $HOME
змінної, і через спосіб визначення бази даних rpm, /.rpmdb
замість цього буде створена порожня база даних rpm /root/.rpmdb
. Це було зафіксовано в rpm
пакеті для Ubuntu у версії 14.10 розробки, тому тепер він повинен створюватись, /root/.rpmdb
навіть якщо $HOME
це не визначено.
Сподіваюсь, це пояснює, чому в системі .rpmdb
Ubuntu взагалі викликаються каталоги , чому вони можуть створюватися, здавалося б, автоматично, і чому їх можна створити в кореневому каталозі під правильним набором умов. Не варто хвилюватися, в цьому каталозі немає нічого шкідливого, і його можна просто видалити, якщо його присутність образлива для естетики чи сканерів безпеки.
RPM (Red Hat Package Manager) - система управління пакетами. Цей RPM був спочатку написаний в 1997 році Еріком Троаном та Марком Юінгам для використання в Red Hat Linux, але зараз використовується у багатьох дистрибутивах GNU / Linux.
За лаштунками менеджера пакунків працює база даних RPM ( RPMDB ), що зберігається в /var/lib/rpm
. Він складається з єдиної бази даних (пакети), що містить всю метаінформацію встановлених rpms . База даних використовується для відстеження всіх файлів, які змінюються та створюються, коли користувач (за допомогою RPM) встановлює пакет , таким чином, дозволяючи користувачеві (через RPM) повернути зміни та видалити пакет пізніше.
alien
/.rpmdb
він з'явиться в системі Ubuntu (яка не використовує rpm)?