系统根目录/.rpmdb上的未知文件夹
有人可以解释根目录中的/.rpmdb文件夹是什么吗? 哪个应用程序创建并正在使用它?
我无法明确说明创建此目录的内容,但很可能是因为使用DKMS安装第三方Linux内核驱动程序(如NVIDIA或VirtualBox)或其他一些不支持的安装程序脚本的副作用。 Ubuntu Linux系统。 此目录很可能是作为安装过程的副作用而创建的,该过程恰好支持基于rpm和基于deb的分发。 DKMS恰好是这样的安装脚本,并且绝对可以在适当的条件下创建此目录。 可以安全地删除该目录而不会损害您的系统,但是稍后安装更新时可能会再次创建该目录。 有关跟踪此问题的错误报告,请参阅错误#1069350 。
这是简短的答案,现在更详细一些。
什么是.rpmdb?
您可能知道,rpm是一种软件打包格式和一组工具,用于安装软件包并维护已安装软件包及其相互依赖性的数据库。 它被许多发行版使用,但不被Ubuntu和其他基于deb的发行版使用。 不幸的是,对于Ubuntu,任何使用rpm
命令都需要存在或创建有效的“rpmdb”数据库。
在基于rpm的发行版上,这不是问题,因为根据定义它们具有系统范围的rpmdb。 在Ubuntu系统上,由于不需要系统范围的rpm数据库,因此rpm
配置为在每个用户的主目录下使用数据库,特别是$HOME/.rpmdb
。 每当rpm
运行时,都会根据需要静默创建此数据库。 由于它位于每个用户的主目录中,因此共享权限没有问题或者需要管理员创建数据库。 每个用户只需获得自己的私有空rpm数据库。
为什么在Ubuntu上运行rpm?
事实certificate,有些项目喜欢创建适用于任何发行版的安装脚本,无论该发行版是基于rpm,基于deb还是两者都没有。 DKMS就是这样一个项目,它允许为系统正在运行的任何Linux内核构建第三方驱动程序,并且它可以编写为跨分布工作。 在确定运行哪个分发以及存在哪个内核版本的逻辑的一部分中,它执行rpm
命令来查询数据库。 正如我之前解释的那样,如果当前用户的主目录中尚不存在.rpmdb
目录,它将默默创建.rpmdb
目录。 数据库查询应该失败,因为Ubuntu不是基于rpm的发行版,DKMS会继续。
如果您从Ubuntu安装任何其他Linux内核驱动程序包,如VirtualBox,NVIDIA,ndiswrapper或openswan,您可能正在使用DKMS为您的内核安装这些驱动程序。 这通常在从Ubuntu存储库安装驱动程序时自动完成。 因此,无论何时安装内核或驱动程序更新,DKMS都会再次运行以重建所有可用内核版本的驱动程序。 已经certificate,当这些包更新时,/ /root/.rpmdb
目录实际上会出现在root的主目录中,因为root需要安装更新。
我不知道任何其他特定的第三方安装脚本也可以执行rpm
命令作为检测分发类型的方法,但它肯定是可能的。 例如,您可能希望从Initech安装LargeProprietaryProgram,为此,您可以以root身份运行install.sh
脚本。 此脚本可能会尝试查询rpm数据库以查看您是否正在运行基于rpm的分发,并再次创建/root/.rpmdb
。
这就解释了为什么你可能会看到/home/user/.rpmdb
和/root/.rpmdb
目录显示在你的系统上。 但为什么在系统根目录?
为什么.rpmdb在根目录中创建?
对此最简单的解释是$HOME
环境变量在某些运行rpm
进程上下文中以某种方式取消设置。 让我们使用DKMS作为参数,因为我们明确地知道它可以运行rpm
命令。 因为它通常在安装或更新软件包时运行,所以它在您碰巧使用的任何软件包管理器的环境中运行。 如果你使用sudo apt-get
来安装包,它将inheritance一个正确的$HOME
。 如果您使用PackageKit,它可能根本没有$HOME
变量。 我不确定Synaptic或Ubuntu软件中心提供什么环境。
因此,如果DKMS在没有$HOME
变量的环境中运行,并且由于rpm数据库的定义方式,将在/.rpmdb
而不是/root/.rpmdb
创建一个空的rpm数据库。 这已在14.10开发版本的Ubuntu的rpm
包中修复,因此即使未定义$HOME
,它现在应该创建/root/.rpmdb
。
我希望这可以解释为什么在Ubuntu系统上存在名为.rpmdb
目录,为什么它们可能看似自动创建,以及为什么可以在正确的条件下在根目录中创建一个目录。 没有什么可担心的,这个目录的存在没有任何恶意,只要它的存在对美学或安全扫描仪不利,它就可以被删除。
RPM(Red Hat Package Manager)是一个包管理系统。 它RPM最初由Erik Troan和Marc Ewing在1997年编写,用于Red Hat Linux,但现在用于许多GNU / Linux发行版。
在软件包管理器的幕后工作的是RPM数据库( RPMDB ),存储在/var/lib/rpm
。 它由一个包含所安装的rpms的所有元信息的数据库(Packages)组成。 该数据库用于跟踪用户(使用RPM) 安装软件包时更改和创建的所有文件,从而使用户(通过RPM)可以撤消更改并在以后删除软件包。
参考: http : //en.wikipedia.org/wiki/RPM_Package_Manager