什么是定制rpm包
将原本使用源码安装的服务,打包成rpm包
为什么要定制rpm包
使用源码安装,步骤繁琐复杂浪费时间,把源码包打成rpm包安装时可以节省时间,提高工作效率。做好rpm包,可以将rpm包放入yum仓库中,方便安装。
安装依赖关系:
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.查看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
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! #成功