当前位置: 首页 > news >正文

OpenEuler 20.03构建zabbix rpm包

一、说明

为什么要自己构建?

由于centos从7版本之后改为stream,工作环境由centos转向OpenEuler。zabbix官网上有各大主流操作系统预编译的rpm包,但是Openeuler相对小众,自然没有制作好的包。即使是centos系统,7版本也过于陈旧了,从zabbix 6.0开始,centos 7已经不提供server的rpm包了,只剩下proxy和agent,到了7.0版本,连proxy都没有了。学会自己创建rpm包,以备操作系统环境发生改变是非常有必要的。

为什么不直接源代码编译

  1. 由于采用的是sever-proxy-agent的多层架构,server只有一台,但是proxy有几十台,agent更是上千,每一台都用源代码编译工作量大大增加。
  2. 源代码编译的软件,在一些例如配置文件、启停命令上与rpm版本有差异,如果混布增加了运维复杂度。

有没有预编译好的rpm包

在OpenEuler的官方社区的软件中心,有社区成员自行构建的rpm包,可以尝试找找有无符合自己要求的版本。
image

二、准备工作

2.1 添加repo源

安装的OpenEuler缺少默认的repo源,需要自己添加
在/etc/yum.repos.d/openEuler_x86_64.repo中添加如下内容:

[OS]
name=openEuler-$releasever - OS
baseurl=https://repo.openeuler.openatom.cn/openEuler-20.03-LTS-SP4/OS/$basearch/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.openatom.cn/openEuler-20.03-LTS-SP4/OS/$basearch/RPM-GPG-KEY-openEuler

另外再添加everything的源,可以提供更多的包。

dnf config-manager --add-repo https://repo.openeuler.org/openEuler-20.03-LTS/everything/x86_64

使用dnf clean all && dnf makecache命令更新。

2.2 准备构建rpm包环境

之前的文章里已经介绍了构建rpm包的基本方法,这里不再赘述。root用户下运行命令如下:

dnf install -y rpm-build
dnf install -y rpmdevtools
rpmdev-setuptree

下载srpm包(http://repo.zabbix.com/zabbix/7.0/rhel/8/SRPMS/zabbix-7.0.23-release1.el8.src.rpm) ,这里以rhel8版本的srpm文件为例:

rpm -ivh zabbix-7.0.23-release1.el8.src.rpm

此时,在/root/rpmbuild目录下的SOURCES目录下会产生源代码压缩包、补丁和配置文件,SPECS目录会产生spec文件。但是此spec文件是Centos8版本的,与OpenEuler不完全契合,需要修改一下。

三、安装依赖包

3.1 BuildRequires要求的依赖包

依赖包 要求的版本 dnf安装的版本
make
mariadb-connector-c-devel
postgresql-devel >= 12.0 10.5
sqlite-devel
net-snmp-devel
openldap-devel
unixODBC-devel
curl-devel >= 7.13.1 7.66.0
OpenIPMI-devel >= 2 2.0.29
libssh-devel >= 0.9.0 0.9.4
java-devel(java-1.8.0-openjdk-devel) >= 1.6.0 1.8.0.392.b08
libxml2-devel
libevent-devel
pcre2-devel
openssl-devel >= 1.0.1 1.1.1f
systemd
policycoreutils-devel
selinux-policy-devel
c-ares-devel >= 1.19.0 1.16.1
安装全部依赖:
dnf install -y make mariadb-connector-c-devel postgresql-devel sqlite-devel net-snmp-devel openldap-devel unixODBC-devel curl-devel OpenIPMI-devel libssh-devel java-1.8.0-openjdk-devel libxml2-devel libevent-devel pcre2-devel openssl-devel systemd policycoreutils-devel selinux-policy-devel c-ares-devel

3.2 其他依赖包

zabbix agent2是使用GO语言编写的,并且使用的语法对版本还有要求,OpenEuler 20.03默认repo源的版本为1.15,需要安装一个较新版本的。
首先下载golang的压缩包并解压

tar -C /usr/local -xzf go1.24.8.linux-amd64.tar.gz

配置PATH变量并生效

tee /etc/profile.d/go.sh <<EOL
export GO_HOME=/usr/local/go
export PATH=\$PATH:\$GO_HOME/bin
EOL
source /etc/profile

四、修改spec文件

4.1 删除%{rhel}和%{?amzn}宏

%{rhel}和%{?amzn}两个宏分别标识了redhat和amazon系linux的大版本号,在OpenEuler中为空,在spec文件中被定义为0,如果直接使用会影响构建,所以需要进行删除。
与OpenEuler相对接近的是Centos8,修改时当做centos8处理。
例如:

%if ( 0%{?rhel} >= 7 && 0%{?amzn} == 0 ) || 0%{?amzn} >= 2023
%{!?build_agent2: %global build_agent2 1}
%endif

直接修改为

%{!?build_agent2: %global build_agent2 1}

4.2 修改BuildRequires版本要求

由于官网repo源的postgresql-devel版本不达标,暂时将postgresql-devel的>= 12.0要求删除

4.3 去除agent2和web_service

agent3和web_service都使用了GO语言,而由于网络问题导致两者的创建会出错,直接删除以下内容:

%ifarch x86_64 aarch64
%if ( 0%{?rhel} >= 7 && 0%{?amzn} == 0 ) || 0%{?amzn} >= 2023
%{!?build_agent2: %global build_agent2 1}
%endif
%if 0%{?rhel} >= 8 || 0%{?amzn} >= 2023
%{!?build_web_service: %global build_web_service 1}
%endif
%endif

本次构建不包括两者,想要解决可能必须使用魔法了

五、构建

使用rpmbuild -bb zabbix.spec命令进行构建。
顺利完成。

http://www.jsqmd.com/news/382947/

相关文章:

  • 2025.2.7总结
  • 2026年 风冷模块机/水冷模块机厂家推荐排行榜,二手风冷模块机,成都二手水冷模块,实力品牌与高性价比方案深度解析 - 品牌企业推荐师(官方)
  • 2026年南通网络推广代运营推荐榜:百度/爱采购/360/GEO/百家号全平台专业服务深度解析 - 品牌企业推荐师(官方)
  • 2026年晶体振荡器厂家推荐排行榜:贴片/有源/无源/石英/差分/恒温/压控/温补/车规/工业级全系列精准时频解决方案深度解析 - 品牌企业推荐师(官方)
  • 报错:动态链接库(DLL)初始化例程失败 - f
  • 2026年 连续挤压机厂家推荐排行榜,铝扁线/铜材/高速连续挤压机,铝管/铜排挤压生产线专业品牌深度解析 - 品牌企业推荐师(官方)
  • AI原生应用开发指南:知识抽取模块的设计与优化
  • 什么是VPC(虚拟私有云,Virtual Private Cloud)网络?
  • 向量模型的训练 - f
  • 2026年 企业管理咨询公司推荐榜单:江苏上海精益生产/6S现场/薪酬绩效/股权激励管理顾问服务深度解析 - 品牌企业推荐师(官方)
  • 《P3800 Power 收集》
  • AI原生应用开发:文本生成的7个最佳实践
  • 2026年 展柜厂家推荐排行榜:内衣/酒柜/鞋柜/珠宝/化妆品/博物馆/服装/书店/食品/奢侈品展柜,匠心设计与高端定制实力解析 - 品牌企业推荐师(官方)
  • 数据产品创新:自然语言处理在大数据中的应用
  • Kotlin 面向对象 - 匿名内部类、匿名内部类简化
  • 没人陪的情人节的一些杂谈
  • 开发3
  • Supervisor 配置laravel队列常驻
  • 2026年 机箱机柜/钣金机箱机柜厂家实力推荐榜:匠心工艺与工业美学,钣金加工/定制机柜/工业机箱源头企业深度解析 - 品牌企业推荐师(官方)
  • 2026年二手设备厂家推荐榜:二手微波干燥机/钛材蒸发器/化工制药食品饮料设备回收,专业评估与高性价比之选 - 品牌企业推荐师(官方)
  • certbot自动更新证书脚本
  • 2026年 砂磨机厂家实力推荐榜:立式节能/纳米研磨/大型卧式/直驱砂磨机与投料系统,专业研磨设备选购指南 - 品牌企业推荐师(官方)
  • AT_tenka1_2014_final_d 高橋君
  • 集中式网关和分布式网关有啥区别?
  • 个人照片(简历)
  • 2026年塔吊厂家实力推荐榜:小型/重型/大型/高层/移动式/二手塔吊设备专业测评,精选建筑工地施工高效安全之选 - 品牌企业推荐师(官方)
  • Excel情感标注工具:用Python+Flask打造高效数据标注平台 - 教程
  • 2026年 广东安保服务推荐排行榜:专业巡逻执勤、门卫安保与定制化解决方案的卓越之选 - 品牌企业推荐师(官方)
  • PiuPiu酱 2.1.2 | 无敏感限制聊天,虚拟女友,永久限制,免费使用
  • GrokAI1.1.22-release.14 | 实测可无敏感生图,可生成视频