dpkg 警告文件列出软件包缺失的文件

dpkg 警告文件列出软件包缺失的文件

我尝试安装一个软件包,成功了,而且看起来运行正常。但是,安装时我收到了几个有关缺少软件包的警告。

dpkg: warning files list file for package '...' missing, assuming package has no files currently installed.

因为这只是一个警告,而且无论如何它似乎都有效,所以我认为这并不重要,但我希望有人能证实这一点。

缺少的软件包是我故意卸载的,因为它们不是必需的并且占用了大量空间。

编辑:包是 tzdata。使用dpkg -i文件.deb进行安装。以上基本上是整个警告。只是它列出了包,而不是 ...。,,,python2.7-minimalpython -minimal`libsqlite3-0libaprutill-dbd-sqlite3

编辑:“你到底做了什么?”我运行了命令

dpkg -i tzdata_2017b-2_all.deb

安装包 tzdata。

“你想实现什么?”我想要安装该包。

“发生了什么?您遇到任何警告或错误消息了吗?”软件包安装并运行正常。但是,上述软件包出现了上述警告。

由于这是在另一台服务器上发生的,我无法复制粘贴。但我会在这里重写它:

dpkg: warning files list file for package python2.7-minimal missing, assuming package has no files currently installed.
dpkg: warning files list file for package libsqlite3-0 missing, assuming package has no files currently installed.
dpkg: warning files list file for package libaprutill-dbd-sqlite3, assuming package has no files currently installed.
dpkg: warning files list file for package python-minimal, assuming package has no files currently installed.

我是不是正在寻找解决方法。我只是好奇 dpkg 在这种情况下向我发出警告是否真的很重要。再次,该程序无论如何都能正常工作,并且我的系统上没有其他程序需要这些软件包。

答案1

看一下这个 Serverfault 问题

你可能想尝试这样的事情:

for package in $(apt-get upgrade 2>&1 |\
                 grep "warning: files list file for package '" |\
                 grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do
    apt-get install --reinstall "$package";
done

复制/粘贴在一行中:

for package in $(apt-get upgrade 2>&1 | grep "warning: files list file for package '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt-get install --reinstall "$package"; done

请注意,运行此命令需要一些时间,因为它会循环遍历每个包。

在找到这个之前,我想提出一些类似于那里接受的答案的建议。而且我没有足够的声誉来添加这个作为评论。

不幸的是,我无法回答为什么会发生这种情况。我在 dist-upgrade 之后遇到了这个问题,并通过重新安装软件包解决了它。

答案2

我们遇到了 RAID5 故障,似乎导致dpkg列表数据库损坏,所以我最近遇到了这个问题,但是上面的解决方案不起作用,因为apt-get install --reinstall xxx产生了更多可疑列表文件的错误。不过,我确实设法解决了这个问题,所以这是我使用的过程。


最后,对我有用的过程是删除数据库中与该包相对应的所有文件,然后在更新后重新安装dpkg

举个例子,这里有一个这样的错误(antlr从这里开始用你丢失的包名称替换):

dpkg: warning files list file for package antlr, assuming package has no files currently installed.

对我来说,解决方案是:

sudo mv /var/lib/dpkg/info/antlr* ~/var   # Backup in case of any other issues
                                          # Alternatively: sudo rm /var/lib/dpkg/info/antlr*

然后,

sudo dpkg --configure -a

关键似乎是在每次删除包列表时运行 configure 命令(与我见过的一些其他建议相反,这些建议是删除所有列表文件然后运行apt-get update/upgrade)。

然后最后sudo apt-get install --reinstall antlr就能正确完成。

答案3

我的一个实例上遇到了同样的问题,对我来说,解决方法是使用 apt 重新安装有问题的软件包:

sudo apt reinstall <package_name_1> <package_name_2>

重新安装成功后,重新运行相同的命令,错误消失

答案4

如果您尝试了@fronk 的答案,但apt-get upgrade没有返回任何 dpkg 警告,但apt-get install <some dummy package> --reinstall返回了 dpkg 错误。apt-get upgradeapt-get install <some dummy package> --reinstall像这样替换:

for package in $(apt-get install <some dummy package> --reinstall 2>&1 | grep "warning: files list file for package '" | grep -Po "[^'\n ]+'" | grep -Po "[^']+"); do apt-get install --reinstall "$package"; done

相关内容