# 系统平台: 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
1
2
3
4
5
|
yum -y
install
ruby rubygems ruby-devel rubygem-rspec-corerubygems rubygem-rake
# 查看源
[root@show ~]
# gem source list
*** CURRENT SOURCES ***
|
1
2
3
4
5
6
7
|
# 添加国内源
[root@show ~]
# gem sources -ahttp://mirrors.aliyun.com/rubygems/
http:
//mirrors
.aliyun.com
/rubygems/added
to sources
# 移除国外源
[root@show ~]
# gem sources --removehttp://rubygems.org/
http:
//rubygems
.org
/removed
from sources
|
1
2
3
4
|
# 安装fpm时必定会报这个错
gem
install
fpm -
v
1.4.0
ERROR: Error installing fpm:
jsonrequires Ruby version >= 1.9.
|
# 解决方案:
# 软件包需要都安装完成https://centos.pkgs.org/ 我是从这里下载的大部分的包都有
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
yum
install
gcc-c++ patch readlinereadline-devel zlib zlib-devel
yum
install
libyaml-devel libffi-developenssl-devel
make
yum
install
bzip2
autoconf automake libtoolbison iconv-devel
# 下载软件包
curl -L get.rvm.io |
bash
-s stable
# 导入密钥对否则从github下载rvm的时候会报错
gpg2 --keyserver hkp:
//keys
.gnupg.net--recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
gpg: 钥匙环‘
/root/
.gnupg
/secring
.gpg’已建立
gpg: 下载密钥‘D39DC0E3’,从 hkp 服务器 keys.gnupg.net
gpg:
/root/
.gnupg
/trustdb
.gpg:建立了信任度数据库
gpg: 密钥 D39DC0E3:公钥“Michal Papis (RVM signing) <mpapis@gmail.com>”已导入
gpg: 没有找到任何绝对信任的密钥
gpg: 合计被处理的数量:1
gpg: 已导入:1 (RSA: 1)
# 更新环境变量
source
/etc/profile
.d
/rvm
.sh
# 安装ruby
rvm
install
1.9.3
# 附上详细解决思路: http://tecadmin.net/install-ruby-1-9-3-or-multiple-ruby-verson-on-centos-6-3-using-rvm/
# 将ruby 1.9.3设置成默认
rvm use 1.9.3 --default
Using
/usr/local/rvm/gems/ruby-1
.9.3-p551
# 然后再安装
gem
install
fpm -
v
1.4.0
Fetching: json-2.1.0.gem (100%)
Building native extensions. This could take a
while
...
Successfully installed json-2.1.0
Fetching: cabin-0.9.0.gem (100%)
Successfully installed cabin-0.9.0
Fetching: backports-3.8.0.gem (100%)
8 gems installed
|
2、安装mariadb软件包,
# 需要先手动安装一次mariadb
1
2
3
4
5
6
7
8
9
10
11
|
# 添加用户组以及用户
groupadd -g 3010 mysql
useradd
-g 3010 -u 3011 mysql
# 添加数据目录并给出属主属组
mkdir
/data/mysql
-pv
chown
-R mysql.mysql
/usr/local/mysql
chown
-R mysql.mysql
/data/mysql
# 删除默认的my.cnf文件,避免fpm打包时报错
rm
-rf
/etc/my
.cnf
|
cat /usr/local/mysql/support-files/my.cnf
1
2
3
4
5
6
7
|
# my.cnf 中添加如下四行
datadir =
/data/mysql
basedir =
/usr/local/mysql
innodb_file_per_table = 1
skip_name_resolve = 1
cp
/usr/local/mysql/support-files/my
.cnf
/etc/
|
# 定义mysql的环境方便安装的直接能直接使用
1
2
3
4
5
|
cat
mysql.sh
export
PATH=
/usr/local/mysql/bin
:$PATH
cp
/usr/local/mysql/support-files/mysql
.sh
/etc/profile
.d/
source
/etc/profile
.d
/mysql
.sh
|
# 这里需要注意将basedir 跟datadir文件修改成手动设置的目录
1
2
3
|
cp
/usr/local/mysql/support-files/mysql
.server
/etc/init
.d
/mysqld
basedir= 目录
datadir=
|
# 配置开机启动
1
|
chkconfig mysqld on
|
# 将目录修改一下 也可以直接链接过来
1
|
]
# mv mariadb-5.5.54-linux-x86_64 mysql
|
# 安装mariadb
1
|
]
# ./scripts/mysql_install_db --user=mysql--group=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql/
|
3、fpm将mariadb打包成rpm包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
FPM常用参数:
-s:指定源类型
-t:指定目标类型,即想要制作为什么包
-n:指定包的名字
-
v
:指定包的版本号
-C:指定打包的相对路径
--no-rpm-sign 指定安装目录
假如-C / --no-rpm-sign
/usr/local/zabbix
而打包机器的数据包路径是
/usr/local/zabbix
那安装这个rpm包后,在本地的数据就是
/usr/local/zabbix
。
如果是-C
/usr/local/zabbix
--no-rpm-sign 那么必须吧数据包放到
/usr/local/zabbix/usr/local/zabbix
下,否安装全部安装在/根目录下
-d:指定依赖于哪些包
-f:第二次包时目录下如果有同名安装包存在,则覆盖它
-p:输出的安装包的目录,不想放在当前目录下就需要指定
--post-
install
:软件包安装完成之后所要运行的脚本;同--offer-
install
--pre-
install
:软件包安装完成之前所要运行的脚本;同--before-
install
--post-uninstall:软件包卸载完成之后所要运行的脚本;同--offer-remove
--pre-uninstall:软件包卸载完成之前所要运行的脚本;同—before-remove
--description:软件包描述
详情:fpm -h
|
# 首先需要二个脚本,一个用于安装,一个用于卸载软件包
# 安装脚本 脚本目录 /usr/local/mysql/support-files/install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#!/bin/bash
#
groupadd -g 3010 mysql
useradd
-g 3010 -u 3011 mysql
mkdir
/data/mysql
-pv
chown
-R mysql.mysql
/usr/local/mysql
chown
-R mysql.mysql
/data/mysql
/bin/cp
-i
/usr/local/mysql/support-files/my
.cnf
/etc/
/bin/cp
-i
/usr/local/mysql/support-files/mysql
.sh
/etc/profile
.d/
/bin/cp
-i
/usr/local/mysql/support-files/mysql
.server
/etc/init
.d
/mysqld
# iptables -I INPUT -p tcp --dport 3306 -m state --stateNEW,ESTABLISHED -j ACCEPT
# service iptables save
# service iptables restart
chkconfig mysqld on
|
# 卸载脚本
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/bin/bash
#
userdel -r mysql &>
/dev/null
groupdel mysql &>
/dev/null
service mysqld stop &>
/dev/null
chkconfig mysqld off
pkill -9 mysqld
rm
-rf
/data/mysql
rm
-rf
/etc/my
.cnf
rm
-rf
/etc/etc/profil
.d
/mysql
.sh
rm
-rf
/etc/init
.d
/mysqld
rm
-rf
/usr/local/mysql
|
1
2
3
|
文件格式为目录,名称mariadb,类型rpm包,版本5.5.54 需要的组件, 将打包的文件存放在哪,描述信息,--url也是 --post-
install
为安装脚本 --port-uninstall 为卸载脚本 --no-rpm-sign目录存放的地址 这里有两个一个基础文件,一个是数据文件目录
fpm -f -s
dir
-n mariadb -t rpm -
v
5.5.54 -d
'gcc,gcc-c++'
-C / -p
/tmp
--description
"mariadb_5.5.54_noacrh.rpm,xiongmake"
--url
"http://www.mariadb.org/"
--license
"BSD"
-m
"mariadb"
--post-
install
/usr/local/mysql/support-files/install
--post-uninstall
/usr/local/mysql/support-files/uninstall
--no-rpm-sign
/usr/local/mysql
/data/mysql
|
1
2
3
4
5
6
|
# 输出成功的信息如下
no value
for
epoch is
set
, defaulting to nil {:level=>:warn}
no value
for
epoch is
set
, defaulting to nil{:level=>:warn}
Created package{:path=>
"/tmp/mariadb-5.5.54-1.x86_64.rpm"
}
# 打包完成之后的显示效果图
|
本文转自812374156 51CTO博客,原文链接:http://blog.51cto.com/xiong51/1958361,如需转载请自行联系原作者