定製rpm包
阿新 • • 發佈:2022-05-05
目錄
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成功
報錯
報錯原因: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%]
fpm工具底層,呼叫了rpmbuild這個工具,所以需要提前安裝rpmbuild
解決方法:yum install -y rpm-build