輕鬆使用Fpm封裝製做Rpm包 --Linux


關於FPM的介紹python

https://docs.google.com/present/view?id=0Aa9liCTsAyzRZGNtd3dkOTRfMTdmczY2azlkcg&hl=en mysql

FPM功能簡單說就是將一種類型的包轉換成另外一種類型。linux

支持的源類型包:「dir」:將目錄打包成所須要的類型,能夠用於源碼編譯安裝的軟件包sql

「rpm」:對rpm進行轉換ruby

「gem」:對rubygem包進行轉換bash

「python」:將python模塊打包成相應的類型架構

支持的目標類型包:ide

「rpm」:轉換爲rpm包post

「deb」:轉換爲deb包測試

「solaris」:轉換爲solaris包

「puppet」:轉換爲puppet模塊

這裏主要介紹如何將源碼安裝的包轉換爲RPM/DEB包,其餘功能感興趣的能夠試試。

 

安裝環境:

系統Centos6.5 64位,默認的ruby爲1.8.7版本;

封裝mysql5.6.29二進制安裝包;


FPM安裝

FPM的安裝很是簡單,安裝FPM前須要先安裝ruby,rubygem

# FPM是Ruby模塊

yum -y install ruby rubygems ruby-devel


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

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


#查看系統默認的ruby源:

[root@localhost ruby-2.1.10]# gem sources -l
*** CURRENT SOURCES ***
http://rubygems.org/ 
 https://gems.ruby-china.org/


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

gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
[root@localhost ruby-2.1.10]# gem sources --remove http://rubygems.org/
http://rubygems.org/ removed from sources
[root@localhost ruby-2.1.10]# gem sources -l
*** CURRENT SOURCES ***
https://gems.ruby-china.org/


#安裝Fpm軟件包

報錯以下:

[root@localhost data]# gem install fpm      #時間較久,而後還報了錯
Building native extensions.  This could take a while...
Building native extensions.  This could take a while...
ERROR:  Error installing fpm:
ruby-xz requires Ruby version >= 1.9.3.


#處理辦法:卸載系統自帶的ruby軟件包版本:

yum remove ruby -y


ruby官網下載高於1.9.3的ruby軟件包進行安裝:

#安裝編譯軟件gcc make

yum install gcc make -y


#編譯安裝三部曲:

tar zxf ruby-2.1.10.tar.gz
./configure --prefix=/usr/local/ruby2.1
make -j 4 && make install


#添加環境變量:

# cat /etc/profile.d/ruby2.1.sh 
export PATH=$PATH:/usr/local/ruby2.1/bin


#查看ruby版本:

[root@localhost ~]# source /etc/profile
[root@localhost ~]# ruby -v
ruby 2.1.10p492 (2016-04-01 revision 54464) [x86_64-linux]


報錯以下:

[root@localhost ruby-2.1.10]# gem install fpm
-bash: /usr/bin/gem: No such file or directory


處理辦法:安裝依賴;

yum install rubygems


繼續安裝fpm報錯以下:

# gem install fpm
ERROR:  While executing gem ... (Gem::Exception)
    Unable to require openssl, install OpenSSL and rebuild ruby (preferred) or use non-HTTPS sources


處理辦法:安裝依賴;

# yum install openssl
#yum install rpm-build

固然看到這個報錯的時候,第一反應openssl和rpmbuild庫沒裝,yum install openssl rpm-build,發現報錯依舊,緊接看網上的文檔編譯zlib,我固然沒這麼幹。


再次安裝依舊報錯,處理辦法:修改源:放棄https 使用http;

[root@localhost ~]# gem sources -a http://gems.ruby-china.org
http://gems.ruby-china.org added to sources
[root@localhost ~]# gem source --remove https://gems.ruby-china.org
https://gems.ruby-china.org removed from sources
[root@localhost ~]# gem source -l
*** CURRENT SOURCES ***
http://rubygems.org/
http://gems.ruby-china.org


#再次安裝發現就沒問題;這個安裝很耗時,時間好久。

[root@localhost bin]# gem install fpm
Fetching: archive-tar-minitar-0.5.2.gem (100%)
Successfully installed archive-tar-minitar-0.5.2
Fetching: cabin-0.9.0.gem (100%)
Successfully installed cabin-0.9.0
Fetching: arr-pm-0.0.10.gem (100%)
Successfully installed arr-pm-0.0.10
Fetching: backports-3.6.8.gem (100%)
Successfully installed backports-3.6.8
Fetching: ffi-1.9.18.gem (100%)
Building native extensions.  This could take a while...
Successfully installed ffi-1.9.18
Fetching: childprocess-0.6.3.beta.1.gem (100%)
Successfully installed childprocess-0.6.3.beta.1
Fetching: clamp-1.0.1.gem (100%)
Successfully installed clamp-1.0.1
Fetching: dotenv-2.2.0.gem (100%)
Successfully installed dotenv-2.2.0
Fetching: insist-1.0.0.gem (100%)
Successfully installed insist-1.0.0
Fetching: mustache-0.99.8.gem (100%)
Successfully installed mustache-0.99.8
Fetching: stud-0.0.22.gem (100%)
Successfully installed stud-0.0.22
Fetching: pleaserun-0.0.28.gem (100%)
Successfully installed pleaserun-0.0.28
Fetching: io-like-0.3.0.gem (100%)
Successfully installed io-like-0.3.0
Fetching: ruby-xz-0.2.3.gem (100%)
Successfully installed ruby-xz-0.2.3
Fetching: fpm-1.8.1.gem (100%)
Successfully installed fpm-1.8.1
Parsing documentation for archive-tar-minitar-0.5.2
Installing ri documentation for archive-tar-minitar-0.5.2
Parsing documentation for arr-pm-0.0.10
Installing ri documentation for arr-pm-0.0.10
Parsing documentation for backports-3.6.8
Installing ri documentation for backports-3.6.8
Parsing documentation for cabin-0.9.0
Installing ri documentation for cabin-0.9.0
Parsing documentation for childprocess-0.6.3.beta.1
Installing ri documentation for childprocess-0.6.3.beta.1
Parsing documentation for clamp-1.0.1
Installing ri documentation for clamp-1.0.1
Parsing documentation for dotenv-2.2.0
Installing ri documentation for dotenv-2.2.0
Parsing documentation for ffi-1.9.18
Installing ri documentation for ffi-1.9.18
Parsing documentation for fpm-1.8.1
Installing ri documentation for fpm-1.8.1
Parsing documentation for insist-1.0.0
Installing ri documentation for insist-1.0.0
Parsing documentation for io-like-0.3.0
Installing ri documentation for io-like-0.3.0
Parsing documentation for mustache-0.99.8
Installing ri documentation for mustache-0.99.8
Parsing documentation for pleaserun-0.0.28
Installing ri documentation for pleaserun-0.0.28
Parsing documentation for ruby-xz-0.2.3
Installing ri documentation for ruby-xz-0.2.3
Parsing documentation for stud-0.0.22
Installing ri documentation for stud-0.0.22
Done installing documentation for archive-tar-minitar, arr-pm, backports, cabin, childprocess, clamp, dotenv, ffi, fpm, insist, io-like, mustache, pleaserun, ruby-xz, stud after 8 seconds
15 gems installed
You have new mail in /var/spool/mail/root


二進制安裝乾淨的Mysql環境,二進制安裝速度很快:

#建立mysql數據存儲目錄

mkdir /data/mysqldata


#添加mysql用戶和mysql組

groupadd -r mysql
useradd -g mysql -r -s /sbin/nologin -M -d /data/mysqldata mysql
chown -R mysql:mysql /data/mysqldata


#初始化Mysql安裝Mysql:

wKioL1jU4ImQIOooAAGR5CiCLrA021.png

#建立mysql啓動腳本

cp /data/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod 777 /etc/init.d/mysqld


#修改/etc/init.d/mysqld內容,內容以下:

#basedir=/data/mysql
#datadir=/data/mysqldata


#加入系統庫核系統變量

ln -sv /data/mysql/include  /usr/include/mysql
echo '/data/mysql/lib' > /etc/ld.so.conf.d/mysql.conf
ldconfig
echo 'export PATH=/data/mysql/bin/:$PATH' > /etc/profile.d/mysql.sh
source /etc/profile
service mysqld start

如圖,安裝完成stopmysql服務,開始封裝Mysql rpm包:

wKiom1jU4QqT_gd0AAEDuNj-wdE973.png

#開始封裝Mysql Rpm包:

[root@localhost tmp]# fpm -s dir -t rpm -v 5.6.29 -n mysql --before-install /tmp/before.sh --after-install /tmp/after.sh --after-remove /tmp/remove.sh -d 'libaio' /data/mysql/ /data/mysqldata/ /etc/init.d/mysqld
Created package {:path=>"mysql-5.6.29-1.x86_64.rpm"}


如圖:

wKiom1jU4lvyOtZqAABIb17cHsU224.png

封裝的時間較久

注意:運行腳本的參數必定要在封裝目錄以前,不然會報錯的。


Fpm的參數選項:

-n 自定義軟件包的名稱

-C fpm去哪一個目錄搜尋文件

-v 生成的rpm包的版本

-d 生成的rpm包依賴什麼軟件,一般爲-d 'name' 或者-d 'name > version'

-a 系統架構名稱,若是是noarch則爲'-a all'或者'-a native'

--description 軟件包的描述

--conflicts 與其餘什麼軟件包衝突n


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

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

--post-install 軟件包安裝完成以後所要運行的腳本;同--after-install

--pre-install 軟件包安裝完成以前所要運行的腳本;同--before-install

--post-uninstall 軟件包卸載完成以後所要運行的腳本;同--after-remove

--pre-uninstall 軟件包卸載完成以前所要運行的腳本;同--before-remove


#安裝以前的要執行的腳本:

wKioL1jU4czwXV91AABk8RIw5sc121.png

#安裝以後要執行的腳本:

wKioL1jU4fPxFFvLAACJpAk79Yc336.png

#卸載Rpm包後要執行的腳本:

wKioL1jU4iHwa9eEAABB6Fa9Kzw013.png


#cpoy到一臺全新的機器測試:

wKioL1jU4pzyv-yFAADtqV80EfM062.png

到此封裝製做完成,感興趣的朋友能夠本身動手嘗試下。

相關文章
相關標籤/搜索