服务器系统升级到了 Ubuntu 22.04 LTS Buildroot 2020.08 的 Fakeroot 版本过旧导致的兼容性问题
进一步,我在 Docker 镜像中手动下载并编译 fakeroot 1.20.2、1.21 和 1.25.3,都可以复现这个问题,编译 1.29 版本则没有问题。,进一步定位到 upstream/1.26 和 upstream/1.27 版本都是正常的。进一步二分,找到修复的 commit 是。可以看到,正常情况下,mknodat 系统调用被拦截,由 fakeroot 来创建空文件;而错误的 fakeroot 版本下,没有拦截成功,就出现了 EPERM。的方法可以解决编译的问题,但是还是出现 EPERM。
转载
2023-08-14 20:19:27 ·
545 阅读 ·
2 评论