如何将银河麒麟v11源码(cri-o)编译成rpm包的详细步骤操作?
摘要:银河麒麟v11源码编译为rpm包全流程详解 很多小伙伴在银河麒麟高级服务器操作系统v11下部署服务时还是习惯于使用rpm包部署,即简单,又快捷,但是kylinos v11默认的base和update源中又没有我们项目中所需服务指定版本的rp
银河麒麟v11源码编译为rpm包全流程详解
很多小伙伴在银河麒麟高级服务器操作系统v11下部署服务时还是习惯于使用rpm包部署,即简单,又快捷,但是kylinos v11默认的base和update源中又没有我们项目中所需服务指定版本的rpm包,这时就需要考虑自己制作rpm包,来实现rpm包自由。
准备工作
在kylinos v11中进行rpm打包与v10的流程基本一致,都是通过rpmbuild来完成。
本次我们使用比较常见的容器服务cri-o 1.35.0版本来进行演示,首先将构建前的准备工作完成。
下载cri-o源码
https://github.com/cri-o/cri-o/archive/refs/tags/v1.35.0.zip
安装编译环境
安装golang
因为cri-o为golang编写,且v1.35.0所使用的golang版本为1.25.0,v11 yum源中并无此版本的golang环境,所以本次采用二进制安装的方式。
根据你的架构,下载golang二进制包:https://go.dev/dl/go1.25.0.linux-amd64.tar.gz
解压:tar -C /usr/local -xzf go1.25.0.linux-amd64.tar.gz
配置环境变量
vim ~/.bashrc
# Go 安装路径(默认)
export GOROOT=/usr/local/go
# 可执行文件加入系统 PATH
export PATH=$PATH:$GOROOT/bin
# 工作区(存放源码、编译二进制、依赖)
export GOPATH=$HOME/go
# 模块缓存路径
export GOCACHE=$HOME/.cache/go-build
# 国内模块代理(必配,否则下载依赖极慢)
export GOPROXY=https://goproxy.cn,direct
# 启用 Go Modules(1.16+ 默认开启)
export GO111MODULE=on
生效配置:source ~/.bashrc
在工作区下创建对应目录
cd $HOME/go
mkdir src bin pkg
# src/:源码
# bin/:编译后的可执行文件
# pkg/:依赖包缓存
使用go version、go env来检查配置是否正确
安装编译cri-o所需依赖
yum install -y \
containers-common \
git \
make \
glib2-devel \
glibc-devel \
glibc-static \
crun
go get github.com/cpuguy83/go-md2man
yum install -y \
libassuan \
libassuan-devel \
libgpg-error \
libseccomp-devel \
libselinux \
pkgconf-pkg-config \
gpgme-devel \
安装rpmbuild等打包环境
yum install -y rpm-build rpmdevtools brp-chrpath
开始制作
准备工作完毕后,进入制作阶段。
