一笔糊涂帐的清算
去年开始接触一个项目,这个项目编出来后运行时出现权限问题(Permission Denied),于是就用sudo运行.
因此,基于VSCode调试时就要先用sudo code --no-sandbox --user-data-dir vscode-root启动VSCode,再Debug-Launch.
后面整理了项目的编译,改用docker(要root权限),docker生成的build目录因此也是root的, 如此看来,用root来运行VSCode也没啥问题.
后面重构项目时,发现之所以要root启动,主要还是因为项目的数据目录用的是/data/xxxx.
这是因为一开始项目只有嵌入式场景的产物,所以没太在意目录的命名, 但适配PC后,这个目录其实就不太合适了.
于是我改成了$HOME/.cache/xxxx。但VSCode还是root
最近想体验公司的AI编程助手,发现无论如何都无法授权。
一开始我怀疑是Linux的iOA太拉了,按照客服的指导也无法拉起授权页。
后面终于发现问题不是Linux+iOA,而是root VSCode的无法拉起授权页(大概率和沙箱有关),改用正常启动的VSCode丝滑就完成授权了。
回过头来,我发现我们的项目完全可以不用Root VSCode:
- 首先项目的代码都是非root的
- build目录是root,但这些目录只有docker应该write,VSCode只需read,所以也没问题
于是,我就用正常VSCode打开了我们的项目。
另外root的VSCode还无法使用Linux的五笔中文输入法,这下也解决了。。。。。。
当初的一笔糊涂帐,最近由于想用AI,一下子理清了……
mark
11/18补档: 今天遇到一个问题,一个小程序一直无法跑起来,另外两个更复杂点的小程序都可以,由于工程中改了一些代码,猜测可能是改动导致的。 于是用另一个干净的工程运行,结果提示要下载子包,比较奇怪的是子包是已经存在的,为什么还要下载呢? 用ls查看了下,发现普通用户没有read权限!! 其实是因为,这个小程序之前用root权限运行过,就导致其包的本地缓存无法被后续的非root权限的程序读取, 修改的代码遇到此状况不会报错,而干净的工程(也就是修改前的)会触发下载,因此得以发现。