多人使用节点总会有这有那的问题,毕竟每个人都有 sudo 权限,每个人都会装软件,每个人都会改配置文件,有人不遵守游戏规则瞎改配置文件就会出问题。
*Photo by Tim Gouw on Unsplash
前言
不知道是谁动了服务器,导致环境不对了,gcc/g++ 使用报错,找不到头文件,以及每次使用 apt 都会输出标题的 warning,后来在粘贴到 txt 文档发现有多达 180 个 warning,真的服气,找了很多方案都没用,比如删除 /var/lib/dpkg/info
然后自动生成,可能对那个博主有用,但是对我无效,最后这个:Ubuntu 18.04中的Dpkg警告解决方案,简单而粗糙 有用,稍微修改整理了下,于是有了这篇博客。
解决方法
他博客里面写需要新建三个文件,其实只需要两个文件,因为最后一个 Shell 脚本是自动生成的。
错误信息的文档
第一个就是包含 warning 的文本文档,我将其命名为 dpkg_warning.txt,然后将所有信息复制到这个文本中,大概如下:
1 | dpkg: 警告: 无法找到软件包 libc++abi1:amd64 的文件名列表文件,现假定该软件包目前没有任何文件被安装在系统里。 |
用于生成 Shell 的 Python 脚本
这个 Python 脚本的主要作用就是从上面的 txt 文档中提取出软件名,然后生成一条对应的重装命令,并写入 Shell 脚本,这个脚本我也做了修改,我去掉了软件名后面挂的 amd64,原博客是没去的,但是好像没影响。
1 | #!/usr/bin/env python3 |
执行 Shell 脚本
从上面的 Python 脚本中可以看到,最后的 Shell 脚本为 fix.sh,我们将其传到服务器上,由于是在 Windows 上写的文件,放到 Linux 上会由于换行存在问题,用 vim 打开,输入命令将换行转成 Linux 的格式。最后给脚本加上可执行的权限,最后运行即可。
1 | vim fix.sh |
在执行过程中可以看到 warning 仍然存在,但是个数在不断减少,当执行到最后一条命令时,不出意外 warning 应该没了。