Ответы:
Я не могу однозначно сказать, что создает этот каталог, но, скорее всего, он создается либо как побочный эффект от установки сторонних драйверов ядра Linux, таких как NVIDIA или VirtualBox, с использованием DKMS , либо с помощью какого-либо другого неподдерживаемого сценария установщика, не предоставленного Ubuntu. Этот каталог, скорее всего, был создан как побочный эффект процесса установки, который поддерживает как дистрибутивы на основе rpm, так и на основе deb. DKMS является таким сценарием установки и определенно может создать этот каталог при правильных условиях. Каталог может быть безопасно удален без ущерба для вашей системы, но он может быть создан снова, когда обновления будут установлены позже. См. Сообщение об ошибке № 1069350 для получения открытого отчета об ошибке, отслеживающего эту проблему.
Это короткий ответ, теперь немного подробнее.
Как вы, возможно, знаете, rpm - это формат программного пакета и набор инструментов для установки пакетов и ведения базы данных установленных пакетов и их взаимозависимостей. Он используется во многих дистрибутивах, но не в Ubuntu и других дистрибутивах на основе deb. К сожалению, для Ubuntu, однако, любое использование rpm
команды требует наличия или создания действительной базы данных «rpmdb».
В дистрибутивах на основе rpm это не проблема, поскольку по определению они имеют общесистемный rpmdb. В системах Ubuntu, поскольку нет необходимости в общесистемной базе данных rpm, 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
команды как способ определения типа распространения, но это, безусловно, возможно. Например, вы можете установить LargePprietaryProgram из 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)?