Невідома папка в системному корені /.rpmdb


16

Чи може хтось пояснити, для чого потрібна папка /.rpmdb у кореневому каталозі? Яка програма створює його та використовує?

Відповіді:


11

Я не можу остаточно сказати, що створює цей каталог, але, ймовірно, він створений або як побічний ефект установки сторонніх драйверів Linux ядра, таких як NVIDIA або VirtualBox за допомогою DKMS , або за допомогою іншого непідтримуваного сценарію інсталятора, який не надається Ubuntu. Цей каталог, швидше за все, був створений як побічний ефект процесу встановлення, який підтримує як розподіли на основі rpm, так і на дебю. DKMS - це такий сценарій встановлення, і він, безумовно, може створити цей каталог за правильних умов. Каталог можна безпечно видалити, не завдаючи шкоди вашій системі, але він може бути створений заново, коли оновлення буде встановлено пізніше. Дивіться про помилку №1069350 для відкритого звіту про помилку, який відстежує цю проблему.

Ось така коротка відповідь, тепер ще трохи детальніше.

Що таке .rpmdb?

Як ви, можливо, знаєте, rpm - це формат упаковки програмного забезпечення та набір інструментів для встановлення пакетів та ведення бази даних встановлених пакетів та їх взаємозалежності. Він використовується багатьма дистрибутивами, але не Ubuntu та іншими дистрибутивами на основі дебюту. На жаль для Ubuntu, однак, будь-яке використання rpmкоманди вимагає, щоб існувала або була створена дійсна база даних "rpmdb".

Для розподілів на основі rpm це не проблема, оскільки вони мають загальносистемний rpmdb за визначенням. У системах Ubuntu, оскільки немає потреби в загальносистемній базі даних об / хв, rpmналаштовано на використання бази даних в домашньому каталозі кожного користувача, зокрема $HOME/.rpmdb. Ця база даних безшумно створюється за потреби під час кожного rpmзапуску. Оскільки він знаходиться у домашньому каталозі кожного користувача, немає проблем із спільними дозволами або вимагає створення бази даних адміністратором. Кожен користувач просто отримує власну приватну порожню базу даних rpm.

Навіщо rpm взагалі працювати на Ubuntu?

Виявляється, деякі проекти люблять створювати сценарії встановлення, які працюватимуть на будь-якому дистрибутиві, незалежно від того, чи заснований він на 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каталоги відображаються у вашій системі. Але чому в системному кореневому каталозі?

Чому .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це не визначено.

Сподіваюсь, це пояснює, чому в системі .rpmdbUbuntu взагалі викликаються каталоги , чому вони можуть створюватися, здавалося б, автоматично, і чому їх можна створити в кореневому каталозі під правильним набором умов. Не варто хвилюватися, в цьому каталозі немає нічого шкідливого, і його можна просто видалити, якщо його присутність образлива для естетики чи сканерів безпеки.


-1

RPM (Red Hat Package Manager) - система управління пакетами. Цей RPM був спочатку написаний в 1997 році Еріком Троаном та Марком Юінгам для використання в Red Hat Linux, але зараз використовується у багатьох дистрибутивах GNU / Linux.

За лаштунками менеджера пакунків працює база даних RPM ( RPMDB ), що зберігається в /var/lib/rpm. Він складається з єдиної бази даних (пакети), що містить всю метаінформацію встановлених rpms . База даних використовується для відстеження всіх файлів, які змінюються та створюються, коли користувач (за допомогою RPM) встановлює пакет , таким чином, дозволяючи користувачеві (через RPM) повернути зміни та видалити пакет пізніше.


Довідка: http://en.wikipedia.org/wiki/RPM_Package_Manager


4
Наскільки це має відношення до пояснення, чому /.rpmdbвін з'явиться в системі Ubuntu (яка не використовує rpm)?
Жил "ТАК - перестань бути злим"

1
може бути використанийalien
струмінь
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.