天天看點

mariadb定制rpm包

# 系統平台: 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 &gt;= 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) &lt;[email protected]&gt;”已導入</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 &amp;&gt;</code><code>/dev/null</code>

<code>groupdel mysql &amp;&gt;</code><code>/dev/null</code>

<code>service mysqld stop &amp;&gt;</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=&gt;:warn}</code>

<code>no value </code><code>for</code> <code>epoch is </code><code>set</code><code>, defaulting to nil{:level=&gt;:warn}</code>

<code>Created package{:path=&gt;</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,如需轉載請自行聯系原作者