问题描述:当使用apt install安装某一个软件时,打印出如下信息。
dpkg: 警告: 无法找到软件包 x11proto-dev 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 graphviz 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libxapian30:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libgts-bin 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libjsoncpp-dev:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libevent-extra-2.1-7:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libxcb1-dev:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 libxau-dev:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
dpkg: 警告: 无法找到软件包 default-jre-headless 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。
在CSDN搜索此问题会出现一个解决方案如下,但是这种办法是错误的,dpkg警告就来自于这个文件夹下面的内容。所以绝对不能直接进行删除,否则警告就会增加到上千行。
解决某一行的方法如下,简单粗暴给它重新安装后这一行的警告就没了
sudo apt-get reinstall -y graphviz
但是显然,警告会出现很多行,为此我们可以使用一个shell脚本来解决,创建reinstall_package.sh
#!/bin/bash
# 读取文件的每一行
while IFS= read -r line; do
# 执行 reinstall 命令并自动确认
sudo apt-get reinstall -y "$line"
done < "$1"
再创建list.txt,将显示警告的软件包名称按照一行一个的顺序进行填写,如下所示
libxapian30:amd64
libgts-bin
libjsoncpp-dev:amd64
libevent-extra-2.1-7:amd64
libxcb1-dev:amd64
libxau-dev:amd64
最后执行这个脚本,受限于网络等原因可能警告并不会一次全部消除。使用同样的方法将所有警告可以全部消除。
./reinstall_package.sh list.txt