定制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! #成功