为什么 dpkg 文件夹包含 2006 年的非常旧的文件?

Pat*_*ake 10 administration debian package-management

我知道Debian 软件包管理是怎么说的:

不要擦除或更改/var/lib/dpkg/.

但是,该文件夹中有 11,501 个文件可追溯到 2006 年:

$ ls -l /var/lib/dpkg/info | wc -l  
11502

sudo find /var/lib/dpkg/info -type f -printf '%T+ %p\n' | sort  | head -n 20 | awk '{print $NF}' | xargs ls -l  
  
-rwxr-xr-x 1 root root   184 Jul 19  2008 /var/lib/dpkg/info/extra-xdg-menus.postrm  
-rw-r--r-- 1 root root    27 Aug 10  2006 /var/lib/dpkg/info/freepats.conffiles  
-rw-r--r-- 1 root root 12993 Aug 10  2006 /var/lib/dpkg/info/freepats.md5sums  
Run Code Online (Sandbox Code Playgroud)

如何确定文件的状态和正确的管理方法?

在那里看到日期为 2006 年的文件令我感到惊讶,因为这台小机器(Acer Aspire One Netbook)仅在 2008 年发布,之后几年我都没有得到它(它以前运行的是 Windows,在 Linux 给它一个新生活)。

Gil*_*il' 34

dpkg 安装的文件的修改时间,包括 中的元数据文件/var/lib/dpkg/info,是它们在包存档文件(.tar.gz.deb文件中包含的等效文件)中的修改时间。通常是维护人员对手动编写的文件最后更改它们的时间。对于由包构建工具自动生成的文件,通常是构建包的时间,或者,对于可重现的构建更改日志文件中最新条目的日期。它与安装包的时间无关。

一些包元数据文件在很长一段时间内没有改变也就不足为奇了。即使包的内容因为程序有更新、新功能等而发生变化,有些东西也不会经常变化。例如,.postrm脚本包含卸载的最后一步要做的事情,而大多数软件包根本不需要;不足为奇的是,那时需要做的事情很少改变。在 的情况下freepats.md5sum.md5sum只要包更改,文件就会更改;这是一个多年来没有改变的数据文件(一些音频合成数据)(它只是数据,没有代码,因此出现错误的风险非常低,而且没有人有兴趣对其进行任何增强)。

每个包平均大约有 6 个文件/var/lib/dpkg/info,Debian 倾向于将软件拆分成细粒度的包(每个库分成自己的包,数据和文档通常与代码分开打包,等等)。所以通常有大约 10k 个文件。

您的系统状态正常,无需采取任何措施。


Ste*_*itt 19

中文件的时间戳/var/lib/dpkg/info反映了它们上次更改的日期和时间。对于其中的许多,这是构建包的日期和时间:文件是在构建过程中生成的。在某些情况下,它是存储在源存档中的原始文件的时间戳。对于.list文件,它是安装包导致文件列表更改的日期和时间。freepats当前 Debian 10 中的版本最后一次更新是在 2006 年...

然而,/var/lib/dpkg/info当相应的包被清除时,文件会被遗留下来。所有文件都以其所属的包命名;删除扩展名,然后检查该软件包是否已安装dpkg -l- 如果没有,您可以删除它们。