searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

CTyunOS上部署k8s-install遇到的包编译问题汇总

2024-08-26 09:48:31
21
0

CTyunOS上部署k8s-install遇到的包编译问题汇总

编译的包的名字

moby、runc、containerd、cri-tools、kubernetes、libcgroup、containernetworking-plugins、socat、conntrack-tools、container-selinux

编译工具安装

yum install -y rpm-build

编译步骤

1. 修改macros.dist

cat /etc/rpm/macros.dist
macros.dist原内容.png

openEuler 2修改为vendor ctyunos,如图所示
macro修改后.png

2. 下载包

git clone -b openEuler-24.03-LTS https://gitee.com/src-openeuler/kubernetes.git

3. 将包的路径链接到/root/rpmbuild/SOURCES

ln -s /root/kubernetes /root/rpmbuild/SOURCES
编译下一个包时需要将SOURCES链接删除(rm SOURCES),再重新链接
不使用cp的原因是链接更加方便修改内容

4. 编译

rpmbuild -ba kubernetes.spec

共有问题

1. No space left on device

image (2).png

解决:

内存不够,扩大内存2G-->6G

2. 缺少patch.tar.gz

缺少gz.png

解决:

使用命令tar -zcvf patch.tar.gz patch压缩patch

3. 显示patch找不到

匹配不到patch.png

解决:

清空/rpmbuild/BUILD文件夹,上一个包编译完成后,BUILD里面保存了上一个包的patch,导致正在编译的包匹配不到正确的patch

编译moby遇到的问题

1. No build ID note find in ......

moby问题.png

解决:

在moby.spec文件中任意位置添加如下参数:

%define __debug_install_post   \
   %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

2. 需要高版本golang

需要高版本golang.png

解决:

下载1.21.4-8.ctl2.src.rpm,编译安装高版本golang
也可以从openEuler源下载编译高版本golang

wget https://repo.ctyun.cn/hostos/ctyunos-22.09/update/sources/aarch64/Packages/golang-1.21.4-8.ctl2.src.rpm
rpm2cpio 包路径|cpio -idvm -D 指定解压到的目录名
rpmbuild -ba golang.spec
rpm -ivh golang-*

编译golang遇到的问题

1. Obsoletes无版本错误

Obsoletes无版本警告.png

解决:

vi golang.spec添加版本限制:

Obsoletes:      %{name}-bin < 2.0.0
Obsoletes:      %{name}-shared < 2.0.0
Obsoletes:      %{name}-docs < 2.0.0

2. %check退出状态不好

check退出状态不好.png

解决:

使用命令rpmbuild -ba golang.spec --nocheck编译

3. 安装golang遇到循环依赖

使用--nodeps命令强制安装
rpm -ivh --nodeps golang-1.21.4-8.ctl3.x86_64.rpm
或者将要安装的包写在一起安装
rpm -ivh golang-*

编译container-selinux遇到的问题

1. container.if报错

container-selinux报错.png

解决:

查看是否存在多个container.if文件,删除多余的

tar -xzvf container-selinux-2.230.0.tar.gz
cd container-selinux-2.230.0/
find / -name container.if

多个container.if.png

cp /usr/share/selinux/devel/include/contrib/container.if /usr/share/selinux/devel/include/contrib/container.if.bak
rm -rf /usr/share/selinux/devel/include/contrib/container.if

压缩tar -zcvf container-selinux-2.230.0.tar.gz container-selinux-2.230.0文件夹后重新编译

2. container.te报错

container.te报错.png

解决:

tar -xzvf container-selinux-2.230.0
cd container-selinux-2.230.0/
vi container.te
删除第898行

重新编译
反复解压缩文件修改,可以写脚本进行编译,./build.sh

vi build.sh
#!/bin/bash
rm -rf v2.230.0.tar.gz
tar zcf v2.230.0.tar.gz container-selinux-2.230.0
rpmbuild -ba container-selinux.spec

3. ctl2系统在上述步骤解决后还存在问题

image (14).png

应该是ctl2系统和该高版本的container-selinux不匹配,降低版本编译
wget https://repo.ctyun.cn/hostos/ctyunos-22.06/sources/Packages/container-selinux-2.138.0-1.ctl2.src.rpm

编译conntrack-tools遇到的问题

需要高版本libnetfilter_conntrack

conntrack-tools遇到的问题.png

解决:

编译安装1.0.9版本的libnetfilter_conntrack
git clone -b openEuler-24.03-LTS https://gitee.com/src-openeuler/libnetfilter_conntrack.git

编译cri-tools遇到的问题

cri-tools报错.png

解决:

使用1.21版本golang

总结

低版本系统编译高版本包问题会比较多
golang版本很重要

0条评论
0 / 1000
6min
1文章数
0粉丝数
6min
1 文章 | 0 粉丝
6min
1文章数
0粉丝数
6min
1 文章 | 0 粉丝
原创

CTyunOS上部署k8s-install遇到的包编译问题汇总

2024-08-26 09:48:31
21
0

CTyunOS上部署k8s-install遇到的包编译问题汇总

编译的包的名字

moby、runc、containerd、cri-tools、kubernetes、libcgroup、containernetworking-plugins、socat、conntrack-tools、container-selinux

编译工具安装

yum install -y rpm-build

编译步骤

1. 修改macros.dist

cat /etc/rpm/macros.dist
macros.dist原内容.png

openEuler 2修改为vendor ctyunos,如图所示
macro修改后.png

2. 下载包

git clone -b openEuler-24.03-LTS https://gitee.com/src-openeuler/kubernetes.git

3. 将包的路径链接到/root/rpmbuild/SOURCES

ln -s /root/kubernetes /root/rpmbuild/SOURCES
编译下一个包时需要将SOURCES链接删除(rm SOURCES),再重新链接
不使用cp的原因是链接更加方便修改内容

4. 编译

rpmbuild -ba kubernetes.spec

共有问题

1. No space left on device

image (2).png

解决:

内存不够,扩大内存2G-->6G

2. 缺少patch.tar.gz

缺少gz.png

解决:

使用命令tar -zcvf patch.tar.gz patch压缩patch

3. 显示patch找不到

匹配不到patch.png

解决:

清空/rpmbuild/BUILD文件夹,上一个包编译完成后,BUILD里面保存了上一个包的patch,导致正在编译的包匹配不到正确的patch

编译moby遇到的问题

1. No build ID note find in ......

moby问题.png

解决:

在moby.spec文件中任意位置添加如下参数:

%define __debug_install_post   \
   %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

2. 需要高版本golang

需要高版本golang.png

解决:

下载1.21.4-8.ctl2.src.rpm,编译安装高版本golang
也可以从openEuler源下载编译高版本golang

wget https://repo.ctyun.cn/hostos/ctyunos-22.09/update/sources/aarch64/Packages/golang-1.21.4-8.ctl2.src.rpm
rpm2cpio 包路径|cpio -idvm -D 指定解压到的目录名
rpmbuild -ba golang.spec
rpm -ivh golang-*

编译golang遇到的问题

1. Obsoletes无版本错误

Obsoletes无版本警告.png

解决:

vi golang.spec添加版本限制:

Obsoletes:      %{name}-bin < 2.0.0
Obsoletes:      %{name}-shared < 2.0.0
Obsoletes:      %{name}-docs < 2.0.0

2. %check退出状态不好

check退出状态不好.png

解决:

使用命令rpmbuild -ba golang.spec --nocheck编译

3. 安装golang遇到循环依赖

使用--nodeps命令强制安装
rpm -ivh --nodeps golang-1.21.4-8.ctl3.x86_64.rpm
或者将要安装的包写在一起安装
rpm -ivh golang-*

编译container-selinux遇到的问题

1. container.if报错

container-selinux报错.png

解决:

查看是否存在多个container.if文件,删除多余的

tar -xzvf container-selinux-2.230.0.tar.gz
cd container-selinux-2.230.0/
find / -name container.if

多个container.if.png

cp /usr/share/selinux/devel/include/contrib/container.if /usr/share/selinux/devel/include/contrib/container.if.bak
rm -rf /usr/share/selinux/devel/include/contrib/container.if

压缩tar -zcvf container-selinux-2.230.0.tar.gz container-selinux-2.230.0文件夹后重新编译

2. container.te报错

container.te报错.png

解决:

tar -xzvf container-selinux-2.230.0
cd container-selinux-2.230.0/
vi container.te
删除第898行

重新编译
反复解压缩文件修改,可以写脚本进行编译,./build.sh

vi build.sh
#!/bin/bash
rm -rf v2.230.0.tar.gz
tar zcf v2.230.0.tar.gz container-selinux-2.230.0
rpmbuild -ba container-selinux.spec

3. ctl2系统在上述步骤解决后还存在问题

image (14).png

应该是ctl2系统和该高版本的container-selinux不匹配,降低版本编译
wget https://repo.ctyun.cn/hostos/ctyunos-22.06/sources/Packages/container-selinux-2.138.0-1.ctl2.src.rpm

编译conntrack-tools遇到的问题

需要高版本libnetfilter_conntrack

conntrack-tools遇到的问题.png

解决:

编译安装1.0.9版本的libnetfilter_conntrack
git clone -b openEuler-24.03-LTS https://gitee.com/src-openeuler/libnetfilter_conntrack.git

编译cri-tools遇到的问题

cri-tools报错.png

解决:

使用1.21版本golang

总结

低版本系统编译高版本包问题会比较多
golang版本很重要

文章来自个人专栏
k8s部署
1 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
1
0