编译containerd报错的时候可能需要安装libbtrfs-dev报错信息:
btrfs/ioctl.h: No such file or directory
部分网友推荐 apt-get -y install btrfs-progs ,实测在ubuntu22.04及之后的系统上无效
解决方法:
有效: apt install libbtrfs-dev
参考: https://ubuntu.pkgs.org/20.04/ubuntu-main-arm64/libbtrfs-dev_5.4.1-2_arm64.deb.html
方法2: 编译的时候忽略 btrfs
make all BUILDTAGS=no_btrfs
编译runc报错的时候可能需要安装 pkg-config 和 libseccomp-dev报错信息1:
pkg-config: exec: "pkg-config": executable file not found in $PATH
解决方法:
apt install pkg-config
报错信息2:
go build github.com/seccomp/libseccomp-golang:
Package libseccomp was not found in the pkg-config search path.
Perhaps you should add the directory containing `libseccomp.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libseccomp', required by 'virtual:world', not found
pkg-config: exit status 1
解决方法:
apt install libseccomp-dev
在新的server上执行 runc -v报错 GLIBC_2.38 not found报错:
/usr/local/sbin/runc: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.38' not found (required by /usr/local/sbin/runc)
解决方法:
确保编译系统的glibc版本和运行系统的glibc相同,或者比运行系统低一点。
笔者最开始在ubuntu23.10 Desktop 上编译,在 ubuntu 22.04 server上运行, 而23.10 使用GLIBC 2.38,22.04使用的是GLIBC 2.35, 因此调整到22.04版本的系统上重新编译就可以正常使用了。
可以通过 strings /lib/x86_64-linux-gnu/libc.so.6 |grep GLIBC_ 查看当前系统上的glibc版本
通过 ldd --version 查看当前系统正在使用的glibc版本