回答:
このディレクトリを作成するものを明確に言うことはできませんが、DKMSを使用してNVIDIAやVirtualBoxなどのサードパーティLinuxカーネルドライバーをインストールする副作用として、または提供されていない他のサポートされていないインストーラースクリプトによって作成される可能性がありますUbuntu。このディレクトリは、たぶんrpmベースとdebベースの両方のディストリビューションをサポートするインストールプロセスの副作用として作成されたものです。DKMSはたまたまそのようなインストールスクリプトであり、適切な条件下で間違いなくこのディレクトリを作成できます。ディレクトリはシステムに害を与えることなく安全に削除できますが、後で更新プログラムをインストールすると再び作成される場合があります。この問題を追跡する未解決のバグレポートについては、バグ#1069350を参照してください。
それは簡単な答えですが、今はもう少し詳しく説明します。
ご存知かもしれませんが、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
、rootとしてスクリプトを実行したい場合があります。このスクリプトは、rpmベースのディストリビューションを実行しているかどうかを確認するためにrpmデータベースを照会しようとする場合があり、/root/.rpmdb
再度作成されます。
あなたが見ることができる理由を説明することはそう/home/user/.rpmdb
と/root/.rpmdb
、ディレクトリがシステム上に表示されます。しかし、なぜシステムのルートディレクトリにあるのでしょうか?
これの最も簡単な説明は$HOME
、実行されるプロセスコンテキストで環境変数が何らかの形で設定解除されることrpm
です。DKMSはrpm
コマンドを実行できることが明確にわかっているため、議論のためにDKMSを使用しましょう。通常、パッケージのインストールまたは更新時に実行されるため、使用するパッケージマネージャーの環境で実行されます。sudo apt-get
パッケージのインストールに使用する場合、正しいを継承します$HOME
。PackageKitを使用する場合、$HOME
変数がまったくない場合があります。SynapticまたはUbuntu Software Centerが提供する環境がわかりません。
そのため、DKMSが$HOME
変数を持たない環境で実行されており、rpmデータベースの定義方法が原因で、/.rpmdb
ではなく空のrpmデータベースが作成されます/root/.rpmdb
。これはrpm
14.10開発バージョンのUbuntu のパッケージで修正されているため、定義されていない/root/.rpmdb
場合でも作成$HOME
されるようになりました。
.rpmdb
Ubuntuシステムでディレクトリが呼び出される理由、それらが自動的に作成されるように見える理由、適切な条件の下でルートディレクトリにディレクトリを作成できる理由を説明してほしい。心配する必要はありません。このディレクトリの存在に悪意はありません。また、その存在が美学やセキュリティスキャナーに不快感を与える場合は、単純に削除できます。
RPM(Red Hat Package Manager)はパッケージ管理システムです。RPMは、もともと1997年にErik TroanとMarc EwingによってRed Hat Linuxで使用するために作成されましたが、現在では多くのGNU / Linuxディストリビューションで使用されています。
パッケージマネージャーの背後で動作しているのは、RPMデータベース(RPMDB)で、に保存されてい/var/lib/rpm
ます。インストールされたrpmのすべてのメタ情報を含む単一のデータベース(パッケージ)で構成されます。データベースは、ユーザーが(RPMを使用して)パッケージをインストールするときに変更および作成されるすべてのファイルを追跡するために使用されるため、ユーザーは(RPM を介して)変更を元に戻し、後でパッケージを削除できます。
alien
/.rpmdb
、Ubuntuシステム(rpmを使用しない)に表示される理由の説明にどのように関連しますか?