日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CentOS6.7上使用FPM打包制作自己的rpm包

發布時間:2023/11/29 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CentOS6.7上使用FPM打包制作自己的rpm包 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

自定義rpm包,還是有逼格和實際生產環境的意義的。

(下面的文檔有的代碼由于博客排版的問題導致擠在了一起,需要自己判別)


安裝FPM

fpmruby寫的,因此系統環境需要ruby,且ruby版本號大于1.8.5。

?

#?安裝ruby模塊

yum -y install ruby rubygems ruby-devel

?

#?添加淘寶的Rubygems倉庫,移除原生的Ruby倉庫

gem sources --addhttps://gems.ruby-china.org/ --remove https://rubygems.org/

?

#?安裝fpmgemrubygem倉庫安裝軟件類似yumyum倉庫安裝軟件。首先安裝低版本的json,高版本的json需要ruby2.0以上,然后安裝低版本的fpm,夠用。

gem install json -v 1.8.3

gem install fpm -v 1.3.3

#?上面的2步安裝僅適合CentOS6系統,CentOS7系統直接使用gem install fpm一步搞定。

FPM參數

常用的幾個參數如下,詳細使用見fpm –help

-s??????????指定源類型

-t?????????指定目標類型,即想要制作為什么包

-n??????????指定包的名字

-v??????????指定包的版本號

-C?????????指定打包的相對路徑?Change directory to here before searching forfiles

-d??????????指定依賴于哪些包

-f?????????第二次打包時目錄下如果有同名安裝包存在,則覆蓋它

-p?????????輸出的安裝包的目錄,不想放在當前目錄下就需要指定

--vendor ??供應商

--description ?注釋信息

--post-install??????軟件包安裝完成之后所要運行的腳本

--pre-install???????軟件包安裝完成之前所要運行的腳本

--post-uninstall????軟件包卸載完成之后所要運行的腳本

--pre-uninstall?????軟件包卸載完成之前所要運行的腳本


定制nginx的RPM包實例

1. 在打包機器上先安裝一次nginx

yum -y install pcre-developenssl-devel

useradd nginx -M -s /sbin/nologin

tar xf nginx-1.8.0.tar.gz

cd nginx-1.8.0

./configure --user=nginx --group=nginx --prefix=/application/nginx-1.8.0 --with-http_ssl_module--with-http_stub_status_module

?

make && make install

ln -s /application/nginx-1.8.0/application/nginx

2. 編寫腳本

mkdir /server/scripts/ -p

cd /server/scripts/

軟件包卸載前、卸載后的腳本,可以根據情況是否編寫,不編寫問題也不大。但是rpm安裝后的腳本是必須的。

vim nginx_post_install.sh?? #編寫一個rpm安裝后需要執行的腳本

#!/bin/bash

useradd nginx -M -s /sbin/nologin

ln -s /application/nginx-1.8.0 /application/nginx

chmod +x /etc/init.d/nginx

chkconfig --add nginx

echo 'PATH=/application/nginx/sbin:$PATH' > /etc/profile.d/nginx.sh

準備個啟動腳本,如下:

vi /etc/init.d/nginx

#! /bin/sh

# chkconfig: 2345 55 25

# Description: Startup script fornginx webserver on Debian. Place in /etc/init.d and

?

PATH=/application/nginx/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

NAME=nginx

NGINX_BIN=/application/nginx/sbin/$NAME

CONFIGFILE=/application/nginx/conf/$NAME.conf

PIDFILE=/application/nginx/logs/$NAME.pid

?

case "$1" in

???start)

??????? echo -n "Starting $NAME... "

?

??????? if netstat -tnpl | grep -q nginx;then

??????????? echo "$NAME (pid `pidof $NAME`)already running."

??????????? exit 1

??????? fi

?

??????? $NGINX_BIN -c $CONFIGFILE

?

??????? if [ "$?" != 0 ] ; then

??????????? echo " failed"

??????????? exit 1

??????? else

??????????? echo " done"

??????? fi

??????? ;;

?

???stop)

??????? echo -n "Stoping $NAME... "

?

??????? if ! netstat -tnpl | grep -q nginx;then

??????????? echo "$NAME is notrunning."

??????????? exit 1

??????? fi

?

??????? $NGINX_BIN -s stop

?

??????? if [ "$?" != 0 ] ; then

??????????? echo " failed. Use force-quit"

??????????? exit 1

??????? else

??????????? echo " done"

??????? fi

??????? ;;

?

???status)

??????? if netstat -tnpl | grep -q nginx; then

??????????? PID=`pidof nginx`

??????????? echo "$NAME (pid $PID) isrunning..."

??????? else

??????????? echo "$NAME is stopped"

??????????? exit 0

??????? fi

??????? ;;

?

???force-quit)

??????? echo -n "Terminating $NAME..."

?

??????? if ! netstat -tnpl | grep -q nginx;then

??????????? echo "$NAME is notrunning."

??????????? exit 1

??????? fi

?

??????? kill `pidof $NAME`

?

??????? if [ "$?" != 0 ] ; then

??????????? echo " failed"

??????????? exit 1

??????? else

??????????? echo " done"

??????? fi

??????? ;;

?

???restart)

??????? $0 stop

??????? sleep 1

??????? $0 start

??????? ;;

?

???reload)

??????? echo -n "Reload service $NAME..."

?

??????? if netstat -tnpl | grep -q nginx; then

??????????? $NGINX_BIN -s reload

??????????? echo " done"

??????? else

??????????? echo "$NAME is not running,can't reload."

??????????? exit 1

??????? fi

??????? ;;

?

???configtest)

??????? echo -n "Test $NAME configurefiles... "

?

??????? $NGINX_BIN -t

??????? ;;

?

???*)

??????? echo "Usage: $0{start|stop|force-quit|restart|reload|status|configtest}"

??????? exit 1

??????? ;;

?

esac

3. 打包

fpm -s dir -t rpm -n nginx -v 1.8.0 --vendor "OPS@Company" --description "Nginx for?Company,Build in 2016/11/28" -d 'pcre-devel,openssl-devel' --post-install /server/scripts/nginx_post_install.sh -f /application/nginx-1.8.0 /etc/init.d/nginx


#?注意:我們可以操作前修改下主機名,這樣打包出來的Build Host就會跟著改變。

4. 安裝rpm包

rpm命令安裝會報錯,如下例:

rpm -ivh nginx-1.8.0-1.x86_64.rpm?但會在缺少pcre-devel時候報錯,需要先yum安裝依賴才能安裝rpm包。

?

yum命令安裝rpm

yum -y localinstall nginx-1.8.0-1.x86_64.rpm

這個命令會自動先安裝rpm包的依賴,然后再安裝rpm包。


其他

我們可以將其他的一些常用軟件如redis、mongodb、redis等都這樣定制好安裝路徑和配置文件,這樣安裝就方便多了。










本文轉自 lirulei90 51CTO博客,原文鏈接:http://blog.51cto.com/lee90/1877420,如需轉載請自行聯系原作者

總結

以上是生活随笔為你收集整理的CentOS6.7上使用FPM打包制作自己的rpm包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。