システムルート/.rpmdbの不明なフォルダー


16

誰かがルートディレクトリの/.rpmdbフォルダーの目的を説明できますか?どのアプリケーションがそれを作成し、使用していますか?

回答:


11

このディレクトリを作成するものを明確に言うことはできませんが、DKMSを使用してNVIDIAやVirtualBoxなどのサードパーティLinuxカーネルドライバーをインストールする副作用として、または提供されていない他のサポートされていないインストーラースクリプトによって作成される可能性がありますUbuntu。このディレクトリは、たぶんrpmベースとdebベースの両方のディストリビューションをサポートするインストールプロセスの副作用として作成されたものです。DKMSはたまたまそのようなインストールスクリプトであり、適切な条件下で間違いなくこのディレクトリを作成できます。ディレクトリはシステムに害を与えることなく安全に削除できますが、後で更新プログラムをインストールすると再び作成される場合があります。この問題を追跡する未解決のバグレポートについては、バグ#1069350を参照してください。

それは簡単な答えですが、今はもう少し詳しく説明します。

.rpmdbとは何ですか?

ご存知かもしれませんが、rpmは、パッケージをインストールし、インストールされたパッケージとそれらの相互依存関係のデータベースを維持するためのソフトウェアパッケージ形式およびツールセットです。多くのディストリビューションで使用されていますが、Ubuntuやその他のdebベースのディストリビューションでは使用されていません。ただし、Ubuntuにとって残念なことに、rpmコマンドを使用するには、有効な「rpmdb」データベースが存在するか、作成される必要があります。

rpmベースのディストリビューションでは、定義によりシステム全体にrpmdbがあるため、これは問題ではありません。Ubuntuシステムでは、システム全体のrpmデータベースは必要ないため、rpm各ユーザーのホームディレクトリ、特ににあるデータベースを使用するように構成されます$HOME/.rpmdb。このデータベースは、rpm実行するたびに必要に応じてサイレントに作成されます。各ユーザーのホームディレクトリにあるため、共有アクセス許可や、管理者がデータベースを作成する必要はありません。すべてのユーザーは、独自の空のプライベートrpmデータベースを取得します。

Ubuntuで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、ディレクトリがシステム上に表示されます。しかし、なぜシステムのルートディレクトリにあるのでしょうか?

なぜ.rpmdbがルートディレクトリに作成されるのですか?

これの最も簡単な説明は$HOME、実行されるプロセスコンテキストで環境変数が何らかの形で設定解除されることrpmです。DKMSはrpmコマンドを実行できることが明確にわかっているため、議論のためにDKMSを使用しましょう。通常、パッケージのインストールまたは更新時に実行されるため、使用するパッケージマネージャーの環境で実行されます。sudo apt-getパッケージのインストールに使用する場合、正しいを継承します$HOME。PackageKitを使用する場合、$HOME変数がまったくない場合があります。SynapticまたはUbuntu Software Centerが提供する環境がわかりません。

そのため、DKMSが$HOME変数を持たない環境で実行されており、rpmデータベースの定義方法が原因で、/.rpmdbではなく空のrpmデータベースが作成されます/root/.rpmdb。これはrpm14.10開発バージョンのUbuntu のパッケージで修正されているため、定義されていない/root/.rpmdb場合でも作成$HOMEされるようになりました。

.rpmdbUbuntuシステムでディレクトリが呼び出される理由、それらが自動的に作成されるように見える理由、適切な条件の下でルートディレクトリにディレクトリを作成できる理由を説明してほしい。心配する必要はありません。このディレクトリの存在に悪意はありません。また、その存在が美学やセキュリティスキャナーに不快感を与える場合は、単純に削除できます。


-1

RPM(Red Hat Package Manager)はパッケージ管理システムです。RPMは、もともと1997年にErik TroanとMarc EwingによってRed Hat Linuxで使用するために作成されましたが、現在では多くのGNU / Linuxディストリビューションで使用されています。

パッケージマネージャーの背後で動作しているのは、RPMデータベース(RPMDB)で、に保存されてい/var/lib/rpmます。インストールされたrpmのすべてのメタ情報を含む単一のデータベース(パッケージ)で構成されます。データベースは、ユーザーが(RPMを使用して)パッケージをインストールするときに変更および作成されるすべてのファイルを追跡するために使用されるため、ユーザーは(RPM を介して)変更を元に戻し、後でパッケージを削除できます。


参照:http : //en.wikipedia.org/wiki/RPM_Package_Manager


4
これは/.rpmdb、Ubuntuシステム(rpmを使用しない)に表示される理由の説明にどのように関連しますか?
ジル 'SO-悪であるのをやめる

1
多分使用されるalien
ジェット
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.