# 系統平台: centos 6.8
# 軟體版本: mariadb_5.5.54, ruby_1.9.3, fpm_1.4.0
# 需要使用的工具 shell, fpm
思路如下:
1、安裝fpm包,
2、安裝mariadb軟體包,
3、添加安裝,解除安裝腳本,配置啟動腳本 環境變量等
1、安裝fpm包、安裝過程,以及一些錯誤的解決方案
1.1 需要先安裝ruby
<code>yum -y </code><code>install</code> <code>ruby rubygems ruby-devel rubygem-rspec-corerubygems rubygem-rake</code>
<code> </code><code># 檢視源</code>
<code> </code>
<code>[root@show ~]</code><code># gem source list</code>
<code> </code><code>*** CURRENT SOURCES ***</code>
<code># 添加國内源</code>
<code>[root@show ~]</code><code># gem sources -ahttp://mirrors.aliyun.com/rubygems/</code>
<code> </code><code>http:</code><code>//mirrors</code><code>.aliyun.com</code><code>/rubygems/added</code> <code>to sources</code>
<code> </code>
<code># 移除國外源</code>
<code>[root@show ~]</code><code># gem sources --removehttp://rubygems.org/</code>
<code> </code><code>http:</code><code>//rubygems</code><code>.org</code><code>/removed</code> <code>from sources</code>
<code># 安裝fpm時必定會報這個錯</code>
<code>gem </code><code>install</code> <code>fpm -</code><code>v</code> <code>1.4.0</code>
<code>ERROR: Error installing fpm:</code>
<code> </code><code>jsonrequires Ruby version >= 1.9.</code>
# 解決方案:
# 軟體包需要都安裝完成https://centos.pkgs.org/ 我是從這裡下載下傳的大部分的包都有
<code>yum </code><code>install</code> <code>gcc-c++ patch readlinereadline-devel zlib zlib-devel</code>
<code>yum </code><code>install</code> <code>libyaml-devel libffi-developenssl-devel </code><code>make</code>
<code>yum </code><code>install</code> <code>bzip2</code> <code>autoconf automake libtoolbison iconv-devel</code>
<code># 下載下傳軟體包</code>
<code>curl -L get.rvm.io | </code><code>bash</code> <code>-s stable</code>
<code> </code>
<code># 導入密鑰對否則從github下載下傳rvm的時候會報錯</code>
<code>gpg2 --keyserver hkp:</code><code>//keys</code><code>.gnupg.net--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3</code>
<code>gpg: 鑰匙環‘</code><code>/root/</code><code>.gnupg</code><code>/secring</code><code>.gpg’已建立</code>
<code>gpg: 下載下傳密鑰‘D39DC0E3’,從 hkp 伺服器 keys.gnupg.net</code>
<code>gpg: </code><code>/root/</code><code>.gnupg</code><code>/trustdb</code><code>.gpg:建立了信任度資料庫</code>
<code>gpg: 密鑰 D39DC0E3:公鑰“Michal Papis (RVM signing) <[email protected]>”已導入</code>
<code>gpg: 沒有找到任何絕對信任的密鑰</code>
<code>gpg: 合計被處理的數量:1</code>
<code>gpg: 已導入:1 (RSA: 1)</code>
<code># 更新環境變量</code>
<code>source</code> <code>/etc/profile</code><code>.d</code><code>/rvm</code><code>.sh</code>
<code># 安裝ruby</code>
<code>rvm </code><code>install</code> <code>1.9.3</code>
<code># 附上詳細解決思路: http://tecadmin.net/install-ruby-1-9-3-or-multiple-ruby-verson-on-centos-6-3-using-rvm/</code>
<code># 将ruby 1.9.3設定成預設</code>
<code>rvm use 1.9.3 --default</code>
<code>Using </code><code>/usr/local/rvm/gems/ruby-1</code><code>.9.3-p551 </code>
<code># 然後再安裝</code>
<code>Fetching: json-2.1.0.gem (100%)</code>
<code>Building native extensions. This could take a </code><code>while</code><code>...</code>
<code>Successfully installed json-2.1.0</code>
<code>Fetching: cabin-0.9.0.gem (100%)</code>
<code>Successfully installed cabin-0.9.0</code>
<code>Fetching: backports-3.8.0.gem (100%)</code>
<code>8 gems installed</code>
2、安裝mariadb軟體包,
# 需要先手動安裝一次mariadb
<code># 添加使用者組以及使用者</code>
<code>groupadd -g 3010 mysql</code>
<code>useradd</code> <code>-g 3010 -u 3011 mysql</code>
<code># 添加資料目錄并給出屬主屬組</code>
<code>mkdir</code> <code>/data/mysql</code> <code>-pv</code>
<code>chown</code> <code>-R mysql.mysql </code><code>/usr/local/mysql</code>
<code>chown</code> <code>-R mysql.mysql </code><code>/data/mysql</code>
<code># 删除預設的my.cnf檔案,避免fpm打包時報錯</code>
<code>rm</code> <code>-rf </code><code>/etc/my</code><code>.cnf</code>
cat /usr/local/mysql/support-files/my.cnf
<code># my.cnf 中添加如下四行</code>
<code>datadir = </code><code>/data/mysql</code>
<code>basedir = </code><code>/usr/local/mysql</code>
<code>innodb_file_per_table = 1</code>
<code>skip_name_resolve = 1</code>
<code>cp</code> <code>/usr/local/mysql/support-files/my</code><code>.cnf </code><code>/etc/</code>
# 定義mysql的環境友善安裝的直接能直接使用
<code>cat</code> <code>mysql.sh</code>
<code>export</code> <code>PATH=</code><code>/usr/local/mysql/bin</code><code>:$PATH</code>
<code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.sh</code><code>/etc/profile</code><code>.d/</code>
<code>source</code> <code>/etc/profile</code><code>.d</code><code>/mysql</code><code>.sh</code>
# 這裡需要注意将basedir 跟datadir檔案修改成手動設定的目錄
<code>cp</code> <code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>
<code>basedir= 目錄 </code>
<code>datadir=</code>
# 配置開機啟動
<code>chkconfig mysqld on</code>
# 将目錄修改一下 也可以直接連結過來
<code>]</code><code># mv mariadb-5.5.54-linux-x86_64 mysql</code>
# 安裝mariadb
<code>]</code><code># ./scripts/mysql_install_db --user=mysql--group=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/</code>
3、fpm将mariadb打包成rpm包
<code>FPM常用參數:</code>
<code>-s:指定源類型</code>
<code>-t:指定目标類型,即想要制作為什麼包</code>
<code>-n:指定包的名字</code>
<code>-</code><code>v</code><code>:指定包的版本号</code>
<code>-C:指定打包的相對路徑</code>
<code>--no-rpm-sign 指定安裝目錄</code>
<code>假如-C / --no-rpm-sign </code><code>/usr/local/zabbix</code> <code>而打包機器的資料包路徑是</code><code>/usr/local/zabbix</code> <code>那安裝這個rpm包後,在本地的資料就是</code><code>/usr/local/zabbix</code><code>。</code>
<code>如果是-C </code><code>/usr/local/zabbix</code> <code>--no-rpm-sign 那麼必須吧資料包放到</code><code>/usr/local/zabbix/usr/local/zabbix</code> <code>下,否安裝全部安裝在/根目錄下</code>
<code>-d:指定依賴于哪些包</code>
<code>-f:第二次包時目錄下如果有同名安裝包存在,則覆寫它</code>
<code>-p:輸出的安裝包的目錄,不想放在目前目錄下就需要指定</code>
<code>--post-</code><code>install</code><code>:軟體包安裝完成之後所要運作的腳本;同--offer-</code><code>install</code>
<code>--pre-</code><code>install</code><code>:軟體包安裝完成之前所要運作的腳本;同--before-</code><code>install</code>
<code>--post-uninstall:軟體包解除安裝完成之後所要運作的腳本;同--offer-remove</code>
<code>--pre-uninstall:軟體包解除安裝完成之前所要運作的腳本;同—before-remove</code>
<code>--description:軟體包描述</code>
<code>詳情:fpm -h</code>
# 首先需要二個腳本,一個用于安裝,一個用于解除安裝軟體包
# 安裝腳本 腳本目錄 /usr/local/mysql/support-files/install
<code>#!/bin/bash</code>
<code>#</code>
<code>/bin/cp</code> <code>-i </code><code>/usr/local/mysql/support-files/my</code><code>.cnf </code><code>/etc/</code>
<code>/bin/cp</code> <code>-i </code><code>/usr/local/mysql/support-files/mysql</code><code>.sh</code><code>/etc/profile</code><code>.d/</code>
<code>/bin/cp</code> <code>-i </code><code>/usr/local/mysql/support-files/mysql</code><code>.server </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>
<code># iptables -I INPUT -p tcp --dport 3306 -m state --stateNEW,ESTABLISHED -j ACCEPT</code>
<code># service iptables save</code>
<code># service iptables restart</code>
# 解除安裝腳本
<code>userdel -r mysql &></code><code>/dev/null</code>
<code>groupdel mysql &></code><code>/dev/null</code>
<code>service mysqld stop &></code><code>/dev/null</code>
<code>chkconfig mysqld off</code>
<code>pkill -9 mysqld</code>
<code>rm</code> <code>-rf </code><code>/data/mysql</code>
<code>rm</code> <code>-rf </code><code>/etc/etc/profil</code><code>.d</code><code>/mysql</code><code>.sh</code>
<code>rm</code> <code>-rf </code><code>/etc/init</code><code>.d</code><code>/mysqld</code>
<code>rm</code> <code>-rf </code><code>/usr/local/mysql</code>
<code>檔案格式為目錄,名稱mariadb,類型rpm包,版本5.5.54 需要的元件, 将打包的檔案存放在哪,描述資訊,--url也是 --post-</code><code>install</code><code>為安裝腳本 --port-uninstall 為解除安裝腳本 --no-rpm-sign目錄存放的位址 這裡有兩個一個基礎檔案,一個是資料檔案目錄</code>
<code>fpm -f -s </code><code>dir</code> <code>-n mariadb -t rpm -</code><code>v</code> <code>5.5.54 -d</code><code>'gcc,gcc-c++'</code> <code>-C / -p </code><code>/tmp</code> <code>--description </code><code>"mariadb_5.5.54_noacrh.rpm,xiongmake"</code> <code>--url </code><code>"http://www.mariadb.org/"</code> <code>--license </code><code>"BSD"</code><code>-m </code><code>"mariadb"</code> <code>--post-</code><code>install</code><code>/usr/local/mysql/support-files/install</code> <code>--post-uninstall </code><code>/usr/local/mysql/support-files/uninstall</code> <code>--no-rpm-sign</code><code>/usr/local/mysql</code> <code>/data/mysql</code>
<code># 輸出成功的資訊如下</code>
<code>no value </code><code>for</code> <code>epoch is </code><code>set</code><code>, defaulting to nil {:level=>:warn}</code>
<code>no value </code><code>for</code> <code>epoch is </code><code>set</code><code>, defaulting to nil{:level=>:warn}</code>
<code>Created package{:path=></code><code>"/tmp/mariadb-5.5.54-1.x86_64.rpm"</code><code>}</code>
<code># 打包完成之後的顯示效果圖</code>
<a href="https://s5.51cto.com/wyfs02/M02/9F/60/wKioL1mb4a7QFksnAABfAif2vzo599.png" target="_blank"></a>
本文轉自812374156 51CTO部落格,原文連結:http://blog.51cto.com/xiong51/1958361,如需轉載請自行聯系原作者