最近实验测项目比较多,打算记录一下Debug的原则问题。目前使用Linux环境已经有2、3年了,遇到的坑确实不少。最近频繁的给学生部署环境的过程中,又遇到许多老问题和新问题,这里一并打包总结一下。
原则
- 遵守项目环境,如果可以用Docker环境,则用Docker(参考OpenLANE的环境部署:The-OpenROAD-Project/OpenLane)
- 出现问题解决步骤:1)如果是新的概念,可以询问大模型;2)查阅相关官方文档和issue,喂给大模型总结(大模型目前解决具体问题的能力比较有限,但是总结的能力一般不会出错);3)自己实践总结。
- 在解决完成一个问题后,去拓展学习相关的一类知识(只需要掌握最常用(80%时间用到)的20%基础知识)。
Linux缺少库文件
缺少库文件(so),链接时某个符号(GLIBCXX)找不到是最常遇到的问题。解决步骤:
- 首选部署官方的docker。
- 如果需要在host的环境中使用,请使用nix(Download | Nix & NixOS)和home-manager(Home Manager Manual)
- 其他方法:检查LD_LIBRARY_PATH变量,使用patchelf修改相关路径(不推荐)
访问权限问题
权限问题通常出现在多个用户情况和使用docker的情况:
是否其他用户生成的文件,或者是root的文件:
- 这种情况一般自己拷贝或者同步一份项目进行修改,每个人的环境和文件需要隔离。
podman或者docker权限问题,一般出现在需要挂载volume的情景:
- 挂载的文件是否是当前用户的文件
- docker中用户是否是root,一般需要是root才能修改主机中的文件
- 早版本的podman不允许在容器中使用特定的系统调用(如fork等),需要加上--privileged参数
字符不显示的问题
大概率原因是环境变量LANG没有设置为UTF-8格式的编码:笔者在使用tmux时候,经常在老服务器(centos7)上遇到这种问题,通过在启动脚本.bashrc或者.zshrc中加入export LANG="C.UTF-8"解决。
问题总是存在的,但是好消息是办法一定是有的。