欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

使用FPM自定義打包

1.安裝FPM

創(chuàng)新互聯(lián)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì),品牌網(wǎng)站制作1元廣告等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10多年的網(wǎng)站開(kāi)發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破數(shù)千家,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

yum -y install ruby-devel gcc make  ruby rubygems

gem install fpm

注意,如果安裝fpm的過(guò)程中報(bào)ruby版本錯(cuò)誤,那么需要重新安裝ruby版本和對(duì)應(yīng)的依賴(lài)軟件。相當(dāng)麻煩。CentOS6默認(rèn)的ruby版本是1.8.7,fpm需要1.9.3以上版本

#curl -sSL https://rvm.io/mpapis.asc | gpg --import -
#curl -L get.rvm.io | bash -s stable
# source /etc/profile.d/rvm.sh
# rvm reload
# rvm requirements run
# rvm install 2.3.0
# ruby --version
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

如果覺(jué)得解決ruby的各種依賴(lài)關(guān)系麻煩,可以使用Docker來(lái)部署fpm

準(zhǔn)備Dockerfile

#
# FPM Dockerfile
#

# Pull base p_w_picpath.
FROM docker.io/ruby

# Install FPM.
RUN gem install fpm

# Define working directory.
WORKDIR /data

# Define default command.
CMD ["bash"]
docker build -t fpm .

docker run -it --rm fpm fpm --help     查看幫助

2.FPM使用

fpm -s <source type> -t <target type> [list of sources]...

-s 表示制作包的來(lái)源,可以是dir目錄,也可以是rpm包,或者deb包等等,通常我們會(huì)用dir目錄自定義編譯

-t 表示制作包的類(lèi)型,可以是rpm包或者deb包等等

-d 指定依賴(lài)包名稱(chēng),如 -d "libevent"

--force 如果生成的包已經(jīng)存在,則強(qiáng)制覆蓋

-C 指定源文件目錄

--verbose 詳細(xì)模式

--category 指定軟件包的類(lèi)別,例如 Applications/Databases 

--license 指定license名稱(chēng),例如GPL

--rpm-summary  指定rpm包的summary

--description 指定描述信息

--url 指定軟件的url信息

--iteration 指定迭代版本號(hào),rpm包就做release

--after-install   包安裝完后需要執(zhí)行的腳本

--before-install  包安裝之前需要執(zhí)行的腳本

--after-remove    包刪除之后需要執(zhí)行的腳本

--before-remove    包刪除之前需要執(zhí)行的腳本

Sources:

  • gem (even autodownloaded for you)

  • python modules (autodownload for you)

  • pear (also downloads for you)

  • directories

  • tar(.gz) archives

  • rpm

  • deb

  • node packages (npm)

  • pacman (ArchLinux) packages

Targets:

  • deb

  • rpm

  • solaris

  • tar

  • directories

  • Mac OS X .pkg files (osxpkg)

  • pacman (ArchLinux) packages

以安裝memcached為例

yum -y install libstdc++ libevent libevent-devel
wget http://memcached.googlecode.com/files/mem
cached-1.4.7.tar.gz
tar zxvf memcached-1.4.7.tar.gz
cd memcached-1.4.7
./configure --prefix=/opt/app/memcached  --wit
h-libevent=/usr/lib64/
make
make install DESTDIR=~/john/tmp/installdir/

先按照正常的編譯安裝步驟將源碼包安裝在一個(gè)臨時(shí)目錄,等下再?gòu)倪@個(gè)臨時(shí)目錄制作rpm包

fpm -s dir -t rpm -n memcached -v 1.4.7 -C ~/john/tmp/installdir -d "libevent" -d "libevent-devel" -d "libstdc++"  --force

或者可以指定依賴(lài)包的最低版本

# fpm -s dir -t rpm -n memcached -v 1.4.7 -C ~/john/tmp/installdir -d "libevent >= 1.4.3" -d "libevent-devel >= 1.4.3" -d "libstdc++ >= 4.4.5"  --force

這樣就簡(jiǎn)單制作了一個(gè)memcached的rpm包

然后找一臺(tái)沒(méi)有安裝過(guò)memcached的機(jī)子測(cè)試

# rpm -ivh memcached-1.4.7-1.x86_64.rpm 
error: Failed dependencies:
	libevent is needed by memcached-1.4.7-1.x86_64
	libevent-devel is needed by memcached-1.4.7-1.x86_64

安裝好libevent和libevent-devel再測(cè)試下

# rpm -ivh memcached-1.4.7-1.x86_64.rpm 
Preparing...                ########################################### [100%]
   1:memcached              ########################################### [100%]
# /opt/app/memcached/bin/memcached -h
memcached 1.4.7
-p <num>      TCP port number to listen on (default: 11211)
-U <num>      UDP port number to listen on (default: 11211, 0 is off)
-s <file>     UNIX socket path to listen on (disables network support)
-a <mask>     access mask for UNIX socket, in octal (default: 0700)
-l <addr>     interface to listen on (default: INADDR_ANY, all addresses)
              <addr> may be specified as host:port. If you don't specify
              a port number, the value you specified with -p or -U is
              used. You may specify multiple addresses separated by comma
              or by using -l multiple times
-d            run as a daemon

...............................

rpm安裝后是可以正常工作的

以上只是簡(jiǎn)單地制作了一個(gè)RPM包,但是要投入使用的話(huà)還需要增加一些步驟,比如安裝rpm包的時(shí)候需要?jiǎng)?chuàng)建用戶(hù),添加日志輪轉(zhuǎn),添加啟動(dòng)腳本,刪除rpm包的時(shí)候需要?jiǎng)h除用戶(hù),刪除安裝目錄等

制作rpm或者deb包等是有技巧的,比如要制作memcached的rpm包,可以先用yum -y install memcached

安裝完memcached然后再通過(guò)rpm命令查看這個(gè)rpm包的各種信息,然后再根據(jù)自己的需求從新用源碼包制作rpm包

如果rpm還沒(méi)有安裝:

可以使用rpm -qpi 查看rpm包的信息

可以使用rpm -qpl 查看rpm包的文件

可以使用rpm -qp --scripts 查看rpm包的腳本信息

可以使用rpm -qpR 查看軟件包依賴(lài)關(guān)系

如果rpm包已經(jīng)安裝了:

# yum -y install memcached
# rpm -qa|grep memcached
# rpm -qi memcached-1.4.4-3.el6.x86_64
# rpm -ql memcached-1.4.4-3.el6.x86_64
# rpm -q --scripts memcached-1.4.4-3.el6.x86_64
 
  
preinstall scriptlet (using /bin/sh):
getent group memcached >/dev/null || groupadd -r memcached
getent passwd memcached >/dev/null || \
useradd -r -g memcached -d /var/run/memcached \
    -s /sbin/nologin -c "Memcached daemon" memcached
exit 0
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add memcached
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    /sbin/service memcached stop > /dev/null 2>&1
    /sbin/chkconfig --del memcached
fi
exit 0
postuninstall scriptlet (using /bin/sh):
if [ "$1" -ge 1 ]; then
    /sbin/service memcached condrestart > /dev/null 2>&1
fi
exit 0

再重新制作下memcached的rpm包

# cd ~/john/tmp/installdir
# rsync -R /etc/rc.d/init.d/memcached .
# rsync -R /etc/sysconfig/memcached .
# mkdir  -p var/run/memcached/

相關(guān)的啟動(dòng)文件自己進(jìn)行修改,例如memcached的安裝目錄等

再為安裝包添加相關(guān)腳本

# cd ~/john/tmp
# touch beforeinstall.sh
# touch afterinstall.sh
# touch beforeremove.sh
# touch afterremove.sh
#!/bin/bash
#beforeinstall.sh
getent group memcached >/dev/null || groupadd -r memcached
getent passwd memcached >/dev/null || \
useradd -r -g memcached -d /var/run/memcached \
    -s /sbin/nologin -c "Memcached daemon" memcached
exit 0

 

#!/bin/bash
#afterinstall.sh
/sbin/chkconfig --add memcached
sed -i '/^MANPATH \/opt\/app\/memcached\/share\/man/d' /etc/man.config
sed -i '$a MANPATH /opt/app/memcached/share/man' /etc/man.config

 

#!/bin/bash
#beforeremove.sh
if [ "$1" = 0 ] ; then
    /sbin/service memcached stop > /dev/null 2>&1
    /sbin/chkconfig --del memcached
fi
exit 0

 

#!/bin/bash
#afterremove.sh
if [ "$1" -ge 1 ]; then
    /sbin/service memcached condrestart > /dev/null 2>&1
fi
exit 0

重新使用fpm打包

# fpm -s dir -t rpm -n memcached  --epoch 0 -v 1.4.7   --iteration 0    -d "libevent >= 1.4.3" -d "libevent-devel >= 1.4.3" -d "libstdc++ >= 4.4.5"  --force   --category  "Applications/Databases"  --license "GPL" --description 'Memcached is an open-source cache software. It is high performance and widely used by throunds of companies'  --rpm-summary="Memcached cache" -a "x86_64"  --url "http://www.memcached.org/"    -C ~/john/tmp/installdir/    --before-install ~/john/tmp/beforeinstall.sh  --after-install ~/john/tmp/afterinstall.sh  --before-remove ~/john/tmp/beforeremove.sh   --after-remove ~/john/tmp/afterremove.sh 

生成一個(gè)rpm包memcached-1.4.7-0.x86_64.rpm

再到另外一臺(tái)服務(wù)器上測(cè)試能否正常安裝和使用

# yum -y install libevent libevent-devel
# rpm -ivh memcached-1.4.7-0.x86_64.rpm 
# rpm -qa|grep memcached
# rpm -qi memcached-1.4.7-0.x86_64
# rpm -ql memcached-1.4.7-0.x86_64
# man memcached

編譯安裝的man手冊(cè)導(dǎo)入時(shí)修改/etc/man.conf文件然后根據(jù)安裝后的路徑指定MANPATH即可

OK,整個(gè)如何使用fpm用源碼包制作rpm包的教程結(jié)束

參考文檔:

https://github.com/jordansissel/fpm

http://dockerfile.github.io/

http://dockerfile.github.io/#/fpm

https://rvm.io/

http://tecadmin.net/install-ruby-2-2-on-centos-rhel/#

http://www.ducea.com/2011/08/31/build-your-own-packages-easily-with-fpm/

文章題目:使用FPM自定義打包
本文路徑:http://chinadenli.net/article34/gpgppe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營(yíng)銷(xiāo)標(biāo)簽優(yōu)化App設(shè)計(jì)動(dòng)態(tài)網(wǎng)站域名注冊(cè)企業(yè)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁(yè)設(shè)計(jì)公司