使用fpm简单制作自定义rpm包

简介:

我的环境是centos7.2的

一、安装FPM工具

yum -y install ruby rubygems ruby-devel

gem sources list   查看gem包管理源仓库地址

gem sources -a http://mirrors.aliyun.com/rubygems/  添加aliyun 仓库地址

gem sources --remove https://rubygems.org/  移出国外gem包管理源仓库地址

wKioL1lTKODzaUbpAAAPqEozrs0426.png

安装fpm
gem install fpm

安装如遇以下问题,请看以下内容

ERROR:  Error installing fpm:

ruby-xz requires Ruby version >= 1.9.3

解决方法:

1.更新ruby

2: 安装旧版本的fpm(建议采用)

gem install fpm -v 1.4.0  指定版本安装

二、源码包编译安装

./configure  --prefix=/opt/zabbix --enable-agent

make && make install

三、启动脚本修改及定制

创建定制目录

mkdir /opt/zabbix/{logs,pid}

复制启动脚本

cp /opt/zabbix-3.2.6/misc/init.d/fedora/core/zabbix_agentd /opt/zabbix/bin/

修改启动脚本路径

vim /opt/zabbix/bin/zabbix_agentd

BASEDIR=/opt/zabbix

修改配置文件

vim /opt/zabbix/etc/zabbix_agentd.conf

grep -v ^# /opt/zabbix/etc/zabbix_agentd.conf| grep -v ^$

PidFile=/opt/zabbix/pid/zabbix_agentd.pid

  LogFile=/opt/zabbix/logs/zabbix-agent.log

Server=127.0.0.1

 StartAgents=5

ServerActive=127.0.0.1

Hostname=Zabbix server

 HostMetadata=Linux

 RefreshActiveChecks=60

 BufferSend=10

 BufferSize=1000

 MaxLinesPerSecond=200

 Timeout=15

 UnsafeUserParameters=1

 Include=/opt/zabbix/etc/zabbix_agentd.conf.d/*.conf

四、创建安装前脚本及卸载前脚本

1、创建安装前脚本

cat /opt/zabbix/install

#!/usr/bin/bash

useradd zabbix  -s /sbin/nologin

chown -R zabbix:zabbix /opt/zabbix

\cp  /opt/zabbix/bin/zabbix-agent.service /usr/lib/systemd/system/zabbix-agent.service

chmod +x /opt/zabbix/sbin/zabbix_agentd

systemctl enable zabbix-agent

sed -i "s/^Hostname=Zabbix agent/Hostname=`hostname`/g"  /opt/zabbix-agent/etc/zabbix_agentd.conf

wKiom1lTjLaQfnkRAAA_WLCDNbw774.png

2、卸载前脚本

#!/usr/bin/bash

pkill -9 zabbix_agentd

userdel -r zabbix

groupdel zabbix 

systemctl disable zabbix-agent

rm -rf /usr/lib/systemd/system/zabbix-agent.service

rm -rf /opt/zabbix

wKioL1lTjNjhLIiYAAAsQPG4das861.png

3、把官方zabbix中的rpm包zabbix-agent.service提取出来,然后改成自己的需求即可。

rpm2cpio zabbix-agent-3.2.6-1.x86_64.rpm | cpio -div    ###解压rpm包命令方法。


cat zabbix-agent.service

[Unit]

Description=Zabbix Agent

After=syslog.target

After=network.target


[Service]

Environment="CONFFILE=/opt/zabbix/etc/zabbix_agentd.conf"

EnvironmentFile=-/etc/sysconfig/zabbix-agent

Type=forking

Restart=on-failure

PIDFile=/opt/zabbix/pid/zabbix_agentd.pid

KillMode=control-group

ExecStart=/opt/zabbix/sbin/zabbix_agentd -c $CONFFILE

ExecStop=/bin/kill -SIGTERM $MAINPID

RestartSec=10s


[Install]

WantedBy=multi-user.target

wKiom1lTjfWhjHokAABny91XvDY548.png

五、打成RPM包

命令:

fpm -f -s dir -t rpm -n zabbix-agent --epoch 0 -v 3.2.6 -C /  -p /tmp/  --verbose --category 'Applications/Internet' --description 'Zabbix Agent' --url 'http://www.zabbix.com/' --license 'BSD' -m 'zabbix'  --post-install /opt/zabbix/install --post-uninstall /opt/zabbix/remove  --no-rpm-sign /opt/zabbix

wKioL1lTjvHB5geBAAGvL8q2_fY007.png文件在/tmp目录下

六、测试安装及卸载,验证。

yum localinstall zabbix-agent-3.2.6-1.x86_64.rpm -y

yum remove zabbix-agent -y

wKioL1lTkD2iiHq1AAGipM3m2_A743.png

FPM常用参数:

-s:指定源类型

-t:指定目标类型,即想要制作为什么包

-n:指定包的名字

-v:指定包的版本号

-C:指定打包的相对路径

--no-rpm-sign 指定安装目录

假如-C / --no-rpm-sign /usr/local/zabbix 而打包机器的数据包路径是/usr/local/zabbix 那安装这个rpm包后,在本地的数据就是/usr/local/zabbix。

如果是-C /usr/local/zabbix --no-rpm-sign 那么必须吧数据包放到/usr/local/zabbix/usr/local/zabbix 下,否安装全部安装在/根目录下

-d:指定依赖于哪些包

-f:第二次包时目录下如果有同名安装包存在,则覆盖它

-p:输出的安装包的目录,不想放在当前目录下就需要指定

--post-install:软件包安装完成之后所要运行的脚本;同--offer-install

--pre-install:软件包安装完成之前所要运行的脚本;同--before-install

--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove

--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove

--description:软件包描述

详情:fpm -h


本文转自 a120518129 51CTO博客,原文链接:http://blog.51cto.com/silencezone/1935110,如需转载请自行联系原作者

相关文章
|
9天前
|
数据采集 人工智能 安全
|
4天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
305 164
|
3天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
317 155
|
12天前
|
SQL 自然语言处理 调度
Agent Skills 的一次工程实践
**本文采用 Agent Skills 实现整体智能体**,开发框架采用 AgentScope,模型使用 **qwen3-max**。Agent Skills 是 Anthropic 新推出的一种有别于mcp server的一种开发方式,用于为 AI **引入可共享的专业技能**。经验封装到**可发现、可复用的能力单元**中,每个技能以文件夹形式存在,包含特定任务的指导性说明(SKILL.md 文件)、脚本代码和资源等 。大模型可以根据需要动态加载这些技能,从而扩展自身的功能。目前不少国内外的一些框架也开始支持此种的开发方式,详细介绍如下。
873 6
|
5天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:六十九、Bootstrap采样在大模型评估中的应用:从置信区间到模型稳定性
Bootstrap采样是一种通过有放回重抽样来评估模型性能的统计方法。它通过从原始数据集中随机抽取样本形成多个Bootstrap数据集,计算统计量(如均值、标准差)的分布,适用于小样本和非参数场景。该方法能估计标准误、构建置信区间,并量化模型不确定性,但对计算资源要求较高。Bootstrap特别适合评估大模型的泛化能力和稳定性,在集成学习、假设检验等领域也有广泛应用。与传统方法相比,Bootstrap不依赖分布假设,在非正态数据中表现更稳健。
256 113