在工作中,有很多种制作rpm包的方法,研究了rpmbuild制作方法,感觉这个方法不好掌控,操作起来没有fpm方便,所以使用了fpm方法来定制rpm包,效果非常好。
在这里以制作openresty的rpm包为例进行步骤详解:
卸载系统自带的ruby包(yum remove -y ruby)
上传ruby2.5.5版本的安装包
解压并编译安装tar -zxvf ruby-2.5.5.tar.gz
cd ruby-2.5.5
./configure --prefix=/usr/local/ruby2.5
make && make install
export PATH=$PATH:/usr/local/ruby2.5/bin
ruby -v
gem install json -v 1.8.3 #如果报错信息如下图
请安装较新版本的json比如1.8.5,如果安装新版本报如下错误,处理方法:
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
1.第一种错误处理:
yum install zlib-devel -y #如果已经安装则进行下一步
cd ruby-2.5.8/ext/zlib #ruby-2.5.8是源码包解压之后的目录
ruby extconf.rb
vim Makefile #打开Makefile修改里面的$(top_srcdir)为../..保存退出即可
make && make install
2.第二种错误处理:
yum install openssl openssl-devel -y #如果已经安装则进行下一步
cd ruby-2.5.8/ext/openssl #ruby-2.5.8是源码包解压之后的目录
ruby extconf.rb
vim Makefile #打开Makefile修改里面的$(top_srcdir)为../..保存退出即可,注意,这里可以批量替换哦
make && make install
下面是制作nginx的rpm包案例,我用的是openresty,前提是已经安装好了openresty哦
编写nginx安装脚本:
vim nginx_install_devel.sh
#!/bin/bash
useradd -M -s /sbin/nologin www -u 666
ln -s /usr/local/openresty/bin/* /usr/local/sbin/
ln -sf /usr/local/src/openresty-1.11.2.2 /usr/local/openresty
脚本编写完成
安装fpm 命令:
gem install fpm
fpm制作rpm包命令:
fpm -s dir -t rpm -n openresty -v 1.11.2 -d 'pcre-devel,openssl-devel' --post-install /etc/bailitop/nginx_install_devel.sh -f /usr/local/openresty/
-n:指定安装的软件包名称
-v:安装软件的版本号
-d:安装软件支持的模块
--post-install:指定安装软件的脚本
-f:指定该软件安装目录
如果报错信息如下
Need executable 'rpmbuild' to convert dir to rpm {:level=>:error}
则需要先安装rpmbuild,安装命令为yum -y install rpm-build
然后再执行fpm命令
至此,rpm包制作完成,将该rpm包传送到其他服务器上,yum安装即可。