Ubuntu22.04解决dpkg: warning: files list file for package ‘****‘ missing

当在 Ubuntu系统中使用 dpkg 时,可能会遇到以下警告:

dpkg: warning: files list file for package '​**​​**​' missing; assuming package has no files currently installed

这通常是因为某个软件包的文件列表(/var/lib/dpkg/info/.list)被意外删除或损坏。

解决方案:重装受影响软件包

​​1. 手动重新安装单个包(适用于少量包)​​
如果只有个别包报错,直接重装即可:

sudo apt-get install --reinstall <package-name>

​​** 2. 自动修复(适用于大量包)**
当报错包数量较多时,可以通过如下shell脚本批量处理:

#!/bin/bash

# 假设你的dpkg警告信息保存在dpkg_warnings.txt文件中
# 如果你还没有这个文件,你可以将上述错误信息复制并粘贴到一个文本文件中,然后使用以下命令:
# dpkg --configure -a > dpkg_warnings.txt

# 从dpkg_warnings.txt文件中提取包名
grep "dpkg: warning: files list file for package" dpkg_warning.txt | \
sed -n "s/.*package '\([^']*\):amd64' missing; assuming package has no files currently installed/\1/p" | \
sort | \
uniq > packages_to_reinstall.txt

# 读取包名并重新安装
while IFS= read -r package; do
    echo "Reinstalling $package..."
    sudo apt-get install --reinstall "$package"
done < packages_to_reinstall.txt

# 清理临时文件
rm packages_to_reinstall.txt

​​3. 使用方法​​
首先将报错信息保存成一个txt文件,如下

dpkg: warning: files list file for package 'libjpeg8:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libxklavier16:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gir1.2-graphene-1.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libip4tc2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libksba8:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libexpat1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libavc1394-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gstreamer1.0-gl:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpipeline1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gir1.2-gtk-4.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'liblouis20:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcairo-script-interpreter2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gir1.2-rb-3.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'liblmdb0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgraphite2-3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libtirpc3:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'speech-dispatcher-audio-plugins:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libxcb-dri3-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'liblcms2-2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libdmapsharing-3.0-2:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libinput10:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libgl1-amber-dri:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpixman-1-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'mesa-vulkan-drivers:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libmozjs-91-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libglibmm-2.4-1v5:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gtk2-engines-murrine:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libedata-cal-2.0-1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libqpdf28:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcdparanoia0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gcc-11-base:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libwayland-server0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpaper1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcanberra-pulse:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'librest-0.7-0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libxml-parser-perl:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libzstd1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gir1.2-unity-7.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libcanberra0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libx11-xcb1:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libice6:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libpciaccess0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'gir1.2-gstreamer-1.0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libxcb-res0:amd64' missing; assuming package has no files currently installed
dpkg: warning: files list file for package 'libecal-2.0-1:amd64' missing; assuming package has no files currently installed

将txt文件命名为: dpkg_warnings.txt,须保存在与shell文件相同路径下
对刚刚写的shell文件进行赋予执行权限后运行:

bash

sudo chmod +x ***.sh
sudo sh ***.sh

你可能感兴趣的:(linux)