誰かがルートディレクトリの/.rpmdbフォルダーの目的を説明できますか?どのアプリケーションがそれを作成し、使用していますか?
このディレクトリを作成するものを明確に言うことはできませんが、 DKMS を使用して、NVIDIAやVirtualBoxなどのサードパーティLinuxカーネルドライバーをインストールする副作用として作成される可能性があります。 Ubuntuによって提供されていない他のサポートされていないインストーラースクリプトによって。このディレクトリは、たぶんrpmベースとdebベースの両方のディストリビューションをサポートするインストールプロセスの副作用として作成されたものです。 DKMSはたまたまそのようなインストールスクリプトであり、適切な条件下で間違いなくこのディレクトリを作成できます。ディレクトリはシステムに害を与えることなく安全に削除できますが、後で更新プログラムをインストールすると再び作成される場合があります。この問題を追跡する未解決のバグレポートについては、 bug#106935 をご覧ください。
それは簡単な答えですが、今はもう少し詳しく説明します。
ご存知かもしれませんが、rpmは、パッケージをインストールし、インストールされたパッケージとそれらの相互依存関係のデータベースを維持するためのソフトウェアパッケージフォーマットおよびツールセットです。多くのディストリビューションで使用されていますが、Ubuntuやその他のdebベースのディストリビューションでは使用されていません。ただし、Ubuntuにとって残念なことに、rpm
コマンドを使用するには、有効な「rpmdb」データベースが存在または作成されている必要があります。
Rpmベースのディストリビューションでは、定義によりシステム全体にrpmdbがあるため、これは問題ではありません。 Ubuntuシステムでは、システム全体のrpmデータベースは必要ないため、rpm
は各ユーザーのホームディレクトリ、特に$HOME/.rpmdb
の下のデータベースを使用するように構成されます。このデータベースは、rpm
が実行されるたびに、必要に応じてサイレントに作成されます。各ユーザーのホームディレクトリにあるため、共有アクセス許可や、管理者がデータベースを作成する必要はありません。すべてのユーザーは、独自の空のプライベートrpmデータベースを取得します。
いくつかのプロジェクトは、ディストリビューションがrpmベース、debベース、またはどちらでもない、どのディストリビューションでも動作するインストールスクリプトを作成することを好みます。 DKMSはそのようなプロジェクトの1つであり、システムが実行中のLinuxカーネルに合わせてサードパーティのドライバーを構築でき、ディストリビューション全体で機能するように作成されています。実行しているディストリビューションと存在するカーネルバージョンを判断するロジックの一部で、rpm
コマンドを実行してデータベースを照会します。前に説明したように、現在のユーザーのホームディレクトリに.rpmdb
ディレクトリが存在しない場合は、これがサイレントに作成されます。 Ubuntuはrpmベースのディストリビューションではないため、データベースクエリは失敗し、DKMSは続行されます。
VirtualBox、NVIDIA、ndiswrapper、openswanなど、Ubuntuから追加のLinuxカーネルドライバーパッケージをインストールする場合、おそらくDKMSを使用してカーネル用のドライバーをインストールしていることになります。これは通常、ドライバーがUbuntuリポジトリからインストールされるときに自動的に行われます。そのため、カーネルまたはドライバーのアップデートがインストールされるたびに、DKMSが再度実行され、利用可能なすべてのカーネルバージョンのドライバーが再構築されます。これらのパッケージが更新されると、/root/.rpmdb
ディレクトリが実際に表示されることが示されています。これは、更新のインストールにルートが必要なため、ルートのホームディレクトリにあります。
配布タイプを検出する方法としてrpm
コマンドを実行する可能性のある他の特定のサードパーティインストールスクリプトは知りませんが、それは確かに可能です。たとえば、InitechからLargeProprietaryProgramをインストールしたい場合は、install.sh
スクリプトをルートとして実行します。このスクリプトは、rpmデータベースを照会して、rpmベースのディストリビューションを実行しているかどうかを確認し、/root/.rpmdb
が再度作成される場合があります。
したがって、/home/user/.rpmdb
および/root/.rpmdb
ディレクトリがシステムに表示される理由を説明しています。しかし、なぜシステムのルートディレクトリにあるのでしょうか?
これに対する最も簡単な説明は、rpm
を実行するプロセスコンテキストで$HOME
環境変数が何らかの形で設定解除されることです。 rpm
コマンドを実行できることが明確にわかっているため、議論のためにDKMSを使用しましょう。通常、パッケージのインストールまたは更新時に実行されるため、使用するパッケージマネージャーの環境で実行されます。 Sudo apt-get
を使用してパッケージをインストールすると、正しい$HOME
を継承します。 PackageKitを使用する場合、$HOME
変数がまったくない場合があります。 SynapticまたはUbuntu Software Centerが提供する環境がわかりません。
したがって、DKMSが$HOME
変数を持たない環境で実行されており、rpmデータベースの定義方法が原因で、/.rpmdb
ではなく/root/.rpmdb
に空のrpmデータベースが作成されます。これは14.10開発バージョンのUbuntuのrpm
パッケージで修正されているため、/root/.rpmdb
が定義されていなくても$HOME
を作成する必要があります。
Ubuntuシステムに.rpmdb
と呼ばれるディレクトリが存在する理由、一見自動的に作成される理由、適切な条件の下でルートディレクトリに作成できる理由を説明することを願っています。心配する必要はありません。このディレクトリの存在に悪意はありません。また、その存在が美学やセキュリティスキャナーに不快感を与える場合は、単純に削除できます。