定制rpm包


day30定制rpm包


定制rpm包概述


什么是定制rpm包

  • 将原本,使用源码安装的服务,打包成rpm包

为什么要定制rpm包

使用源码安装,步骤繁琐复杂,浪费时间,把源码包打成rpm包安装时可以节省时间,提高工作效率,做好rpm包,
可以将rpm包放入yum仓库中,方便安装

如何定制rpm包

  • fpm
  • rpmbuild

安装fpm

fpm 是ruby语法写的一种,定制rpm包的工具,所以在安装fpm之前,需要先安装ruby环境。

# 1.下载阿里云的base源和epel源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 2.安装ruby环境
[root@localhost ~]# yum -y install ruby rubygems ruby-devel

# 3.查看gem默认的源
[root@localhost ~]# gem sources
*** CURRENT SOURCES ***
https://rubygems.org/

gem作用:gem和yum差不多,是包管理工具,yum来管理.rpm的包,gem来管理.gem包

# 4.删除gem默认官方源
[root@localhost ~]# gem sources --remove https://rubygems.org/
https://rubygems.org/ removed from sources
[root@localhost ~]# gem sources
*** CURRENT SOURCES ***

# 5.添加阿里云的gem源
[root@localhost ~]# gem sources -a https://mirrors.aliyun.com/rubygems/
https://mirrors.aliyun.com/rubygems/ added to sources

[root@localhost ~]# gem sources
*** CURRENT SOURCES ***
https://mirrors.aliyun.com/rubygems/

# 6.安装fpm
[root@localhost ~]# gem install fpm -v 1.3.3 ## 贼慢
[root@localhost fpm]# tar xf fpm-1.3.3.x86_64.tar.gz
[root@localhost fpm]# gem install *.gem

安装fpm成功

1651139615393

报错

1651139767775

报错原因:ruby版本是2.0,安装fpm工具需求是ruby版本要2.4.0以上
[root@localhost ~]# rpm -qa|grep ruby
ruby-2.0.0.648-39.el7_9.x86_64

源码安装nginx

# 安装依赖
[root@localhost ~]# yum install -y gcc gcc-c++ glibc pcre-devel openssl-devel

# 下载nginx源码包
[root@localhost ~]# wget http://nginx.org/download/nginx-1.20.2.tar.gz

# 解压
[root@localhost ~]# tar xf nginx-1.20.2.tar.gz

# 生成
[root@localhost nginx-1.20.2]# ./configure --prefix=/opt/nginx-1.20.2 --with-http_ssl_module --
with-http_stub_status_module

# 4.编译 和 安装
[root@localhost nginx-1.20.2]# make && make install

使用fpm定制rpm包

# fpm

-s:指定将什么打成rpm包(dir将目录打成rpm包)
-t:打成什么包(rpm 打成rpm包)
-n:指定包名,-n如何指定,yum就如何装(ngx) yum install -y ngx
-v:指定版本号
-d:指定依赖包,在这指定后,yum安装的时候,会根据-d的内容自动安装对应的依赖
--post-install:安装rpm包之后,要执行的脚本
--pre-install:安装rpm包之前,要执行的脚本
--post-uninstall:卸载rpm包之后,要执行的脚本
--pre-uninstall:卸载rpm包之前,要执行的脚本
-f:指定要打包的路径

# 安装完nginx之后
做软链接
添加nginx的环境变量

# 先写脚本
[root@web01 ~]# vim post_install_nginx.sh
ln -s /opt/nginx-1.20.2 /opt/nginx
echo 'PATH="/usr/local/nginx/sbin:$PATH"' > /etc/profile.d/nginx.sh

# fpm打包

[root@localhost ~]# fpm -s dir -t rpm -n nginx -v 1.20.0 -d 'openssl-devel,pcre-devel' --post-install /root/post_install_nginx.sh -f /opt//nginx-1.20.2/

# 或

fpm -s dir \
-t rpm \
-n nginx \
-v 1.20.2 \
-d 'openssl-devel,pcre-devel' \
--post-install /root/post_install_nginx.sh \
-f /opt/nginx-1.20.2
no value for epoch is set, defaulting to nil {:level=>:warn}
no value for epoch is set, defaulting to nil {:level=>:warn}
Created package {:path=>"nginx-1.20.2-1.x86_64.rpm"}

# 使用其他机器测试
rpm -ivh nginx-1.20.2-1.x86_64.rpm
yum localinstall -y nginx-1.20.2-1.x86_64.rpm

# 需要提前,下载好nginx需要的所有依赖包
rpm -Uvh *rpm
Preparing... ################################# [100%]
Updating / installing...
1:pcre-devel-8.32-17.el7 ################################# [ 20%]
2:libselinux-devel-2.5-15.el7 ################################# [ 40%]
3:krb5-devel-1.15.1-51.el7_9 ################################# [ 60%]
4:openssl-devel-1:1.0.2k-25.el7_9 ################################# [ 80%]
5:nginx-1.20.2-1 ################################# [100%]

1651141260429

fpm工具底层,调用了rpmbuild这个工具,所以需要提前安装rpmbuild
解决方法:yum install -y rpm-build
posted @   hjx、贤  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示