luckyyyyy / blog

William Chan's Blog
https://williamchan.me/
175 stars 28 forks source link

Proxmox 7 更新了 cgroup2 对于 centos7 容器的兼容性问题 #63

Open luckyyyyy opened 2 years ago

luckyyyyy commented 2 years ago

最近有一项工作是让nodejs 18 继续在centos7中运行,由于官方工具链已经完全放弃centos7,故需要编译环境。 好在目前编译的成本并不高,其实只要重新编译就可以,追溯了下是因为v8中的一个修改导致,但v8其实并没有放弃低版本libc

v8后面也进行了修复 主要是 memfd_create 需要 glibc 2.27 https://github.com/v8/v8/commit/4e81f2584ee15cd6300e180585c26f16616210f3

# root @ centos7-build in ~/node-v18.3.0-linux-x64/bin [9:20:05] 
$ ./node
./node: /lib64/libm.so.6: version `GLIBC_2.27' not found (required by ./node)
./node: /lib64/libc.so.6: version `GLIBC_2.25' not found (required by ./node)
./node: /lib64/libc.so.6: version `GLIBC_2.28' not found (required by ./node)
./node: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./node)
./node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by ./node)
./node: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by ./node)

那么在 Proxmox7 使用 centos7 LXC容器 需要更新centos7中的systemd,也有backports的版本

进入容器 pct enter <CTID>

ifup eth0
curl -o /etc/yum.repos.d/jsynacek-systemd-backports-for-centos-7-epel-7.repo https://copr.fedorainfracloud.org/coprs/jsynacek/systemd-backports-for-centos-7/repo/epel-7/jsynacek-systemd-backports-for-centos-7-epel-7.repo
yum update

退出容器 之后重启容器 一切正常 pct stop <CTID>