定制rpm包

定制rpm包

什么是定制rpm包

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

为什么要定制rpm包

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

安装依赖关系:

  • rpm-build
  • ruby
  • fpm

fpm是使用ruby编写的,依赖安装ruby,fpm依赖rpm-build,否则定制包的时候会出现错误

[root@localhost ~]# yum -y install ruby rubygems ruby-devel

[root@localhost ~]#yum install -y rpm-build

Gem是一个管理Ruby库和程序的标准包,它通过Ruby Gem(如 http://rubygems.org/ )源来查找、安装、升级和卸载软件包,非常的便捷。作用和yum差不多,是包管理工具。yum来管理.rpm的包,gem来管理.gem包

1.安装fpm

# 1.查看gem默认的源
[root@localhost ~]
# gem sources*** CURRENT SOURCES ***
https://rubygems.org/
(因为rubygems是外网源,下载速度较慢,因为我们可以换成国内源)

# 2.下载阿里云的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

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

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

# 5.安装fpm
[root@localhost ~]# gem install fpm -v 1.3.3

# 6.将安装好的fpm包进行解压至当前目录(也可以自行创建文件夹)
[root@localhost fpm]# tar xf fpm-1.3.3.x86_64.tar.gz

# 7.安装.gem类型的包至当前目录,安装失败可以重复安装至成功
[root@localhost fpm]# gem install *.gem

2.使用实例–实战定制nginx的RPM包

1.源码安装nginx

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

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

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

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

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

FMP常用参数

-s          指定源类型
-t          指定目标类型,即想要制作为什么包
-n          指定包的名字
-v          指定包的版本号
-C          指定打包的相对路径  Change directory to here before searching forfiles
-d          指定依赖于哪些包
-f          第二次打包时目录下如果有同名安装包存在,则覆盖它
-p          输出的安装包的目录,不想放在当前目录下就需要指定
-m          打包的作者
--post-install      软件包安装完成之后所要运行的脚本;同--after-install
--pre-install       软件包安装完成之前所要运行的脚本;同--before-install
--post-uninstall    软件包卸载完成之后所要运行的脚本;同--after-remove
--pre-uninstall     软件包卸载完成之前所要运行的脚本;同--before-remove

2.编写软链接和环境变量脚本

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

## 先写脚本
[root@localhost ~]# 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

3.fpm打包

#打包:
fpm -s dir -t rpm -n nginx -v 1.6.3 -d 'pcre-devel,openssl-devel' --post-install post_install_nginx.sh -f /opt/nginx-1.20.2

fpm -s dir    #类型
-t rpm        #制作成什么包
-n nginx      #指定包名
-v 1.6.3      #指定包的版本
-d 'pcre-devel,openssl-devel'      #指定包安装依赖
--post-installvim post_install_nginx.sh #安装后执行的脚本 
-f /opt/nginx-1.20.2   #指定路径

使用其他机子测试

将本机的rpm包发送到10.0.0.102机子root目录下的nginx目录里
[root@localhost nginx]# rpm -ivh nginx-1.20.2-1.x86_64.rpm 在新机子上用rpm直接安装该包
error: Failed dependencies:
openssl-devel is needed by nginx-1.20.2-1.x86_64
pcre-devel is needed by nginx-1.20.2-1.x86_64
## 报错:提示需要openssl-devel和pcre-devel依赖包

[root@localhost nginx]# yum localinstall -y nginx-1.20.2-1.x86_64.rpm #使用
yum本地安装该包,会自动从源里下载包所需的依赖
Complete! #成功
posted @ 2022-04-28 21:51  Gie  阅读(57)  评论(0编辑  收藏  举报