使用spec与fpm 2种方式进行rpm打包

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

最近分享zabbix与ansible好多,大家看烦了,我也没啥存货了,现在就介绍一下如何进行rpm打包吧。

rpm打包有2个,一个是自己写spec,另外要给是使用ruby的fpm,我个人比较倾向于第二种fpm,这个不需要写spec文件,特简单,不过为了让大家看明白,我分别介绍一下这2款软件是如何进行rpm打包的。

目录

一、使用spec构建rpm

二、使用fpm构建rpm

 

一、使用spec构建rpm

在构架rpm包的时候,需要经过3个过程

1、解压源码包

2、编译环境configure

3、make

然后再使用check install做rpm包

同时如果在安装rpm包的时候,你想查看安装过程可以使用,rpm -qi --scriptsname.rpm查看

如果在构架脚本或者其他非源码包安装的时候,可以使用rpmbild

1、把脚本目录给tar

2、构架spec

3、rpmbuild

注意的完成最终的工作了。请使用根目录用户身份安装rpmbuild命令。在Red Hat中,请用yum install rpm-build完成这项工作。接下来,请确保所有的文件都呆在正确的地方。Tar存档文件必须位于创建软件包的当前用户帐户的~/rpmbuild /SOURCES 目录下,demo.spec文件必须位于~/rpmbuild/SPECS目录下。现在你可以用rpmbuild -ba test.spec命令来创建软件包了。这会在~/rpmbuild/RPMS目录下创建你的RPM文件。

可以参考

http://www.linuxidc.com/Linux/2012-05/60278.htm

http://blog.csdn.net/cybertan/article/details/5972935

我做的测试是创建一个test-1.0目录,里有个test.txt文件,内容是this is test

A.创建rpm目录

1
mkdir  -p ~ /rpmbuild/ {RPMS,SOURCES,SPECS}

B.创建压缩文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16:02:25  # cd ~/rpmbuild/SOURCES/
root@ip-10-10-10-10:~ /rpmbuild/SOURCES
16:05:09  # mkdir test-1.0
root@ip-10-10-10-10:~ /rpmbuild/SOURCES
16:05:32  # echo "this is test">test-1.0/test.txt
root@ip-10-10-10-10:~ /rpmbuild/SOURCES
16:05:43  # tar zcvf test-1.0.tar.gz test-1.0
test -1.0/
test -1.0 /test .txt
root@ip-10-10-10-10:~ /rpmbuild/SOURCES
16:05:48  # rm -rf test-1.0
root@ip-10-10-10-10:~ /rpmbuild/SOURCES
16:05:52  # ll
total 4
-rw-r--r-- 1 root root 160 Aug 15 16:05  test -1.0. tar .gz

C.做spec文件内容如下

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
16:06:25  # cat test.spec 
Summary:  Test package  for  dl528888 blog
Name:      test
Version:  1.0
Release:  1
License:  GPL
Group:     test
Source:   %{name}-1.0. tar .gz
BuildRoot:%{_tmppath}/%{name}-%{version}-%{release}-root
Url:      http: //dl528888 .blog.51cto.com
Packager: dl528888
Prefix:   %{_prefix}
Prefix:   %{_sysconfdir}
%define   userpath  /tmp/demo
   
%description
Justa  test  rpm suite.
   
%prep
%setup -c
% install
install  -d $RPM_BUILD_ROOT%{userpath}
cp  -a %{name}* $RPM_BUILD_ROOT%{userpath}
   
%clean
rm  -rf $RPM_BUILD_ROOT
rm  -rf $RPM_BUILD_DIR/%{name}-%{version}
   
%files
%defattr(-,root,root)
%{userpath}

D.打成rpm包

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
38
39
16:06:36  # rpmbuild -ba test.spec 
Executing(%prep):  /bin/sh  -e  /var/tmp/rpm-tmp .8B9UHi
umask  022
cd  /root/rpmbuild/BUILD
cd  /root/rpmbuild/BUILD
rm  -rf  test -1.0
/bin/mkdir  -p  test -1.0
cd  test -1.0
/usr/bin/gzip  - dc  /root/rpmbuild/SOURCES/test-1 .0. tar .gz
/bin/tar  -xvvf -
drwxr-xr-x root /root          0 2014-08-15 16:05  test -1.0/
-rw-r--r-- root /root         13 2014-08-15 16:05  test -1.0 /test .txt
+ STATUS=0
'['  0 - ne  ']'
/bin/chmod  -Rf a+rX,u+w,g-w,o-w .
exit  0
Executing(% install ):  /bin/sh  -e  /var/tmp/rpm-tmp .IwUiMh
umask  022
cd  /root/rpmbuild/BUILD
cd  test -1.0
install  -d  /root/rpmbuild/BUILDROOT/test-1 .0-1.x86_64 /tmp/demo
cp  -a  test -1.0  /root/rpmbuild/BUILDROOT/test-1 .0-1.x86_64 /tmp/demo
/usr/lib/rpm/brp-compress
/usr/lib/rpm/brp-strip
/usr/lib/rpm/brp-strip-static-archive
/usr/lib/rpm/brp-strip-comment-note
Processing files:  test -1.0-1.x86_64
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Checking  for  unpackaged  file (s):  /usr/lib/rpm/check-files  /root/rpmbuild/BUILDROOT/test-1 .0-1.x86_64
warning: Could not canonicalize  hostname : ip-10-10-10-10
Wrote:  /root/rpmbuild/SRPMS/test-1 .0-1.src.rpm
Wrote:  /root/rpmbuild/RPMS/x86_64/test-1 .0-1.x86_64.rpm
Executing(%clean):  /bin/sh  -e  /var/tmp/rpm-tmp .IoNP7f
umask  022
cd  /root/rpmbuild/BUILD
cd  test -1.0
rm  -rf  /root/rpmbuild/BUILDROOT/test-1 .0-1.x86_64
rm  -rf  /root/rpmbuild/BUILD/test-1 .0
exit  0

E.查看rpm包

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
16:07:24  # cd ~/rpmbuild/RPMS/
root@ip-10-10-10-10:~ /rpmbuild/RPMS
16:07:54  # ll
total 4
drwxr-xr-x 2 root root 4096 Aug 15 16:07 x86_64
root@ip-10-10-10-10:~ /rpmbuild/RPMS
16:07:54  # cd x86_64/
root@ip-10-10-10-10:~ /rpmbuild/RPMS/x86_64
16:07:58  # ll
total 4
-rw-r--r-- 1 root root 2020 Aug 15 16:07  test -1.0-1.x86_64.rpm
root@ip-10-10-10-10:~ /rpmbuild/RPMS/x86_64
16:07:59  # rpm -qpi test-1.0-1.x86_64.rpm 
Name        :  test                          Relocations:  /usr  /etc 
Version     : 1.0                               Vendor: (none)
Release     : 1                             Build Date: Fri 15 Aug 2014 04:07:24 PM CST
Install Date: (not installed)               Build Host: ip-10-10-10-10
Group       :  test                           Source RPM:  test -1.0-1.src.rpm
Size        : 13                               License: GPL
Signature   : (none)
Packager    : dl528888
URL         : http: //dl528888 .blog.51cto.com
Summary     : Test package  for  dl528888 blog
Description :
Justa  test  rpm suite.

F.安装此rpm包

1
2
3
4
5
6
7
8
9
10
11
12
13
14
16:08:03  # rpm -ivh test-1.0-1.x86_64.rpm 
Preparing...                 ########################################### [100%]
    1: test                    ########################################### [100%]
root@ip-10-10-10-10:~ /rpmbuild/RPMS/x86_64
16:08:49  # ll /tmp/demo/
total 4
drwxr-xr-x 2 root root 4096 Aug 15 16:08  test -1.0
root@ip-10-10-10-10:~ /rpmbuild/RPMS/x86_64
16:08:58  # ll /tmp/demo/test-1.0/
total 4
-rw-r--r-- 1 root root 13 Aug 15 16:05  test .txt
root@ip-10-10-10-10:~ /rpmbuild/RPMS/x86_64
16:09:00  # cat /tmp/demo/test-1.0/test.txt 
this is  test

可以看到安装完成,并在tmp的demo里解压了test-1.0.tar.gz压缩包。

二、使用ruby的fpm构建rpm包

1、centos安装

1
2
yum  install  rpm-build
gem  install  fpm

2、ubuntu安装

1
2
apt-get  install  ruby ruby-dev rubygems
gem  install  fpm

在centos里安装如下

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
15:34:53  # yum install rpm-build    
Failed to  set  locale, defaulting to C
Loaded plugins: fastestmirror, keys, protectbase
Loading mirror speeds from cached hostfile
  * base: mirrors.btte.net
  * extras: mirrors.btte.net
  * updates: mirrors.btte.net
0 packages excluded due to repository protections
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package rpm-build.x86_64 0:4.8.0-37.el6 will be installed
--> Processing Dependency: elfutils >= 0.128  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Processing Dependency: xz  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Processing Dependency: unzip  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Processing Dependency: lzma  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Processing Dependency:  file  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Processing Dependency:  /usr/bin/gdb-add-index  for  package: rpm-build-4.8.0-37.el6.x86_64
--> Running transaction check
---> Package elfutils.x86_64 0:0.152-1.el6 will be installed
--> Processing Dependency: elfutils-libs(x86-64) = 0.152-1.el6  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.149)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.148)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.138)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.127)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.126)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1(ELFUTILS_0.122)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libasm.so.1(ELFUTILS_1.0)(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libdw.so.1()(64bit)  for  package: elfutils-0.152-1.el6.x86_64
--> Processing Dependency: libasm.so.1()(64bit)  for  package: elfutils-0.152-1.el6.x86_64
---> Package  file .x86_64 0:5.04-15.el6 will be installed
---> Package gdb.x86_64 0:7.2-60.el6_4.1 will be installed
---> Package unzip.x86_64 0:6.0-1.el6 will be installed
---> Package xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6 will be installed
---> Package xz-lzma-compat.x86_64 0:4.999.9-0.3.beta.20091007git.el6 will be installed
--> Running transaction check
---> Package elfutils-libs.x86_64 0:0.152-1.el6 will be installed
--> Finished Dependency Resolution
 
Dependencies Resolved
 
===============================================================================================================================================================================================
  Package                                       Arch                                  Version                                                         Repository                           Size
===============================================================================================================================================================================================
Installing:
  rpm-build                                     x86_64                                4.8.0-37.el6                                                    base                                127 k
Installing  for  dependencies:
  elfutils                                      x86_64                                0.152-1.el6                                                     base                                201 k
  elfutils-libs                                 x86_64                                0.152-1.el6                                                     base                                181 k
  file                                           x86_64                                5.04-15.el6                                                     base                                 46 k
  gdb                                           x86_64                                7.2-60.el6_4.1                                                  base                                2.3 M
  unzip                                         x86_64                                6.0-1.el6                                                       base                                149 k
  xz                                            x86_64                                4.999.9-0.3.beta.20091007git.el6                                base                                137 k
  xz-lzma-compat                                x86_64                                4.999.9-0.3.beta.20091007git.el6                                base                                 16 k
 
Transaction Summary
===============================================================================================================================================================================================
Install       8 Package(s)
 
Total download size: 3.1 M
Installed size: 7.4 M
Is this ok [y /N ]: y
Downloading Packages:
(1 /8 ): elfutils-0.152-1.el6.x86_64.rpm                                                                                                                                  | 201 kB     00:00     
(2 /8 ): elfutils-libs-0.152-1.el6.x86_64.rpm                                                                                                                             | 181 kB     00:00     
(3 /8 ):  file -5.04-15.el6.x86_64.rpm                                                                                                                                      |  46 kB     00:00     
(4 /8 ): gdb-7.2-60.el6_4.1.x86_64.rpm                                                                                                                                    | 2.3 MB     00:06     
(5 /8 ): rpm-build-4.8.0-37.el6.x86_64.rpm                                                                                                                                | 127 kB     00:00     
(6 /8 ): unzip-6.0-1.el6.x86_64.rpm                                                                                                                                       | 149 kB     00:00     
(7 /8 ): xz-4.999.9-0.3.beta.20091007git.el6.x86_64.rpm                                                                                                                   | 137 kB     00:00     
(8 /8 ): xz-lzma-compat-4.999.9-0.3.beta.20091007git.el6.x86_64.rpm                                                                                                       |  16 kB     00:00     
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                                          234 kB /s  | 3.1 MB     00:13     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
   Installing : xz-4.999.9-0.3.beta.20091007git.el6.x86_64                                                                                                                                  1 /8 
   Installing : xz-lzma-compat-4.999.9-0.3.beta.20091007git.el6.x86_64                                                                                                                      2 /8 
   Installing :  file -5.04-15.el6.x86_64                                                                                                                                                     3 /8 
   Installing : gdb-7.2-60.el6_4.1.x86_64                                                                                                                                                   4 /8 
   Installing : elfutils-libs-0.152-1.el6.x86_64                                                                                                                                            5 /8 
   Installing : elfutils-0.152-1.el6.x86_64                                                                                                                                                 6 /8 
   Installing : unzip-6.0-1.el6.x86_64                                                                                                                                                      7 /8 
   Installing : rpm-build-4.8.0-37.el6.x86_64                                                                                                                                               8 /8 
   Verifying  : unzip-6.0-1.el6.x86_64                                                                                                                                                      1 /8 
   Verifying  : xz-lzma-compat-4.999.9-0.3.beta.20091007git.el6.x86_64                                                                                                                      2 /8 
   Verifying  : elfutils-libs-0.152-1.el6.x86_64                                                                                                                                            3 /8 
   Verifying  : gdb-7.2-60.el6_4.1.x86_64                                                                                                                                                   4 /8 
   Verifying  : elfutils-0.152-1.el6.x86_64                                                                                                                                                 5 /8 
   Verifying  : rpm-build-4.8.0-37.el6.x86_64                                                                                                                                               6 /8 
   Verifying  :  file -5.04-15.el6.x86_64                                                                                                                                                     7 /8 
   Verifying  : xz-4.999.9-0.3.beta.20091007git.el6.x86_64                                                                                                                                  8 /8 
 
Installed:
   rpm-build.x86_64 0:4.8.0-37.el6                                                                                                                                                              
 
Dependency Installed:
   elfutils.x86_64 0:0.152-1.el6                 elfutils-libs.x86_64 0:0.152-1.el6                         file .x86_64 0:5.04-15.el6  gdb.x86_64 0:7.2-60.el6_4.1  unzip.x86_64 0:6.0-1.el6 
   xz.x86_64 0:4.999.9-0.3.beta.20091007git.el6  xz-lzma-compat.x86_64 0:4.999.9-0.3.beta.20091007git.el6 
 
Complete!
 
15:35:21  # gem install fpm
/usr/local/ruby-1 .9.3 /lib/ruby/1 .9.1 /yaml .rb:56: in  `< top  (required)>':
It seems your ruby installation is missing psych ( for  YAML output).
To eliminate this warning, please  install  libyaml and reinstall your ruby.
Fetching: json-1.8.1.gem (100%)
Building native extensions.  This could take a  while ...
Fetching: cabin-0.6.1.gem (100%)
Fetching: backports-3.6.0.gem (100%)
Fetching: arr-pm-0.0.9.gem (100%)
Fetching: clamp-0.6.3.gem (100%)
Fetching: ffi-1.9.3.gem (100%)
Building native extensions.  This could take a  while ...
Fetching: childprocess-0.5.3.gem (100%)
Fetching: fpm-1.1.0.gem (100%)
Successfully installed json-1.8.1
Successfully installed cabin-0.6.1
Successfully installed backports-3.6.0
Successfully installed arr-pm-0.0.9
Successfully installed clamp-0.6.3
Successfully installed ffi-1.9.3
Successfully installed childprocess-0.5.3
Successfully installed fpm-1.1.0
8 gems installed
Installing ri documentation  for  json-1.8.1...
Installing ri documentation  for  cabin-0.6.1...
Installing ri documentation  for  backports-3.6.0...
unable to convert U+00E9 from UTF-8 to US-ASCII  for  lib /backports/force/string_length .rb, skipping
unable to convert U+00E9 from UTF-8 to US-ASCII  for  lib /backports/1 .9.2 /stdlib/matrix .rb, skipping
Installing ri documentation  for  arr-pm-0.0.9...
Installing ri documentation  for  clamp-0.6.3...
Installing ri documentation  for  ffi-1.9.3...
unable to convert  "\xE2"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  lib /ffi/library .rb, skipping
Enclosing class /module  'moduleFFI'  for  class StructByValue not known
Enclosing class /module  'moduleFFI'  for  class StructLayout not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Field not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Number not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class String not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Pointer not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Function not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Array not known
Enclosing class /module  'moduleFFI'  for  module LastError not known
Enclosing class /module  'moduleFFI'  for  class MemoryPointer not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class CharArray not known
Enclosing class /module  "rbffi_StructLayoutCharArrayClass"  for  alias  to_str to_s not known
unable to convert  "\xC3"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  ext /ffi_c/libffi/ChangeLog , skipping
unable to convert  "\xC3"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  ext /ffi_c/libffi/README , skipping
Installing ri documentation  for  childprocess-0.5.3...
Installing ri documentation  for  fpm-1.1.0...
Installing RDoc documentation  for  json-1.8.1...
Installing RDoc documentation  for  cabin-0.6.1...
Installing RDoc documentation  for  backports-3.6.0...
unable to convert U+00E9 from UTF-8 to US-ASCII  for  lib /backports/force/string_length .rb, skipping
unable to convert U+00E9 from UTF-8 to US-ASCII  for  lib /backports/1 .9.2 /stdlib/matrix .rb, skipping
Installing RDoc documentation  for  arr-pm-0.0.9...
Installing RDoc documentation  for  clamp-0.6.3...
Installing RDoc documentation  for  ffi-1.9.3...
unable to convert  "\xE2"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  lib /ffi/library .rb, skipping
Enclosing class /module  'moduleFFI'  for  class StructByValue not known
Enclosing class /module  'moduleFFI'  for  class StructLayout not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Field not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Number not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class String not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Pointer not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Function not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class Array not known
Enclosing class /module  'moduleFFI'  for  module LastError not known
Enclosing class /module  'moduleFFI'  for  class MemoryPointer not known
Enclosing class /module  'rbffi_StructLayoutClass'  for  class CharArray not known
Enclosing class /module  "rbffi_StructLayoutCharArrayClass"  for  alias  to_str to_s not known
unable to convert  "\xC3"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  ext /ffi_c/libffi/ChangeLog , skipping
unable to convert  "\xC3"  to UTF-8  in  conversion from ASCII-8BIT to UTF-8 to US-ASCII  for  ext /ffi_c/libffi/README , skipping
Installing RDoc documentation  for  childprocess-0.5.3...
Installing RDoc documentation  for  fpm-1.1.0...
15:45:31  # find / -name "fpm"
/usr/local/ruby-1 .9.3 /lib/ruby/gems/1 .9.1 /doc/fpm-1 .1.0 /rdoc/lib/fpm
/usr/local/ruby-1 .9.3 /lib/ruby/gems/1 .9.1 /gems/fpm-1 .1.0 /lib/fpm
/usr/local/ruby-1 .9.3 /lib/ruby/gems/1 .9.1 /gems/fpm-1 .1.0 /bin/fpm
/usr/local/ruby-1 .9.3 /bin/fpm
/usr/local/php-5 .3.10 /share/php/fpm
root@e3d3e87fbfd7:~
15:45:46  # ln  /usr/local/ruby-1.9.3/bin/fpm /usr/bin/fpm

下面是安装脚本内容

1
2
3
4
16:10:45 # cat install_for_rpm.sh 
#!/bin/bash
mkdir /tmp/fpm
echo "this is test for rpm"  > /tmp/fpm/test .txt

下面是在进行rpm安装的时候,安装后运行的脚本

1
2
3
4
root@e3d3e87fbfd7:~
16:10:48 # cat run_rpm.sh 
#!/bin/bash
/bin/bash/tmp/install_for_rpm .sh

也就是说,rpm包安装后,会运行我这个run_rpm.sh脚本,然后这个脚本会运行install_for_fpm.sh脚本

下面是打包过程

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
root@e3d3e87fbfd7:~
16:13:21  # fpm -s dir --prefix /tmp/ -t rpm -n test_rpm --verbose --version '2014'  --iteration '1.0'   --vendor '244979152@qq.com' --category 'Development/test'   --description 'Rpm  Install' --url 'qq.com' --license 'BSD' -m 'denglei' --after-install run_rpm.sh install_for_rpm.sh              
/usr/local/ruby-1 .9.3 /lib/ruby/1 .9.1 /yaml .rb:56: in  `< top  (required)>':
It seems your ruby installation is missing psych ( for  YAML output).
To eliminate this warning, please  install  libyaml and reinstall your ruby.
Setting from flags: category=Development /test  {:level=>:info}
Setting from flags: description=Rpm  Install {:level=>:info}
Setting from flags: epoch= {:level=>:info}
Setting from flags: iteration=1.0 {:level=>:info}
Setting from flags: license=BSD {:level=>:info}
Setting from flags: maintainer=denglei {:level=>:info}
Setting from flags: name=test_rpm {:level=>:info}
Setting from flags: url=qq.com {:level=>:info}
Setting from flags: vendor=244979152@qq.com {:level=>:info}
Setting from flags: version=2014 {:level=>:info}
Converting  dir  to rpm {:level=>:info}
no value  for  epoch is  set , defaulting to nil {:level=>:warn}
Reading template {:path=> "/usr/local/ruby-1.9.3/lib/ruby/gems/1.9.1/gems/fpm-1.1.0/templates/rpm.erb" , :level=>:info}
no value  for  epoch is  set , defaulting to nil {:level=>:warn}
Running rpmbuild {:args=>[ "rpmbuild" "-bb" "--define" "buildroot /tmp/package-rpm-build20140704-5378-1sbkpgd/BUILD" "--define" "_topdir /tmp/package-rpm-build20140704-5378-1sbkpgd" "--define" "_sourcedir /tmp/package-rpm-build20140704-5378-1sbkpgd" "--define" "_rpmdir /tmp/package-rpm-build20140704-5378-1sbkpgd/RPMS" "/tmp/package-rpm-build20140704-5378-1sbkpgd/SPECS/test_rpm.spec" ], :level=>:info}
Executing(%prep):  /bin/sh  -e  /var/tmp/rpm-tmp .w21bbk {:level=>:info}
Executing(%build):  /bin/sh  -e  /var/tmp/rpm-tmp .FNduT3 {:level=>:info}
Executing(% install ):  /bin/sh  -e  /var/tmp/rpm-tmp .Cdf5BN {:level=>:info}
Processing files: test_rpm-2014-1.0.x86_64 {:level=>:info}
Wrote:  /tmp/package-rpm-build20140704-5378-1sbkpgd/RPMS/x86_64/test_rpm-2014-1 .0.x86_64.rpm {:level=>:info}
Executing(%clean):  /bin/sh  -e  /var/tmp/rpm-tmp .mv993g {:level=>:info}
Created package {:path=> "test_rpm-2014-1.0.x86_64.rpm" }
16:05:47 # ll /root/
total8
-rw-r--r--1 root root   74 Jul  4 16:02 install_for_rpm.sh
-rw-r--r--1 root root 1709 Jul  4 16:05 test_rpm-2014-1.0.x86_64.rpm

可以看到,有个rpm文件生产,名字是test_rpm-2014-1.0.x86_64.rpm

下面安装rpm的过程

1
2
3
4
5
6
7
8
16:14:21 # ll /tmp/
total96
lrwxrwxrwx1 root root    30 Jul  3 13:29 mysql.sock -> /data/mysql/datadir/mysql .sock
drwxr-xr-x2 root root  4096 Jul  4 16:12 root
-rw-------1 root root   256 Jun  5 10:17 tmp.GbE4cEGjO7
-rw-------1 root root 32379 Jul  3 17:27 yum_save_tx-2014-07-03-17-27UiVNzL.yumtx
-rw-------1 root root 27578 Jul  3 17:29 yum_save_tx-2014-07-03-17-29nffpfF.yumtx
-rw-------1 root root 27578 Jul  3 17:41 yum_save_tx-2014-07-03-17-41S1tFIE.yumtx

可以看到tmp目录里没有fpm目录,现在开始安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
root@e3d3e87fbfd7:~
16:14:24  # rpm -ivh test_rpm-2014-1.0.x86_64.rpm 
Preparing...                 ########################################### [100%]
    1:test_rpm                ########################################### [100%]
root@e3d3e87fbfd7:~
16:14:27  # ll /tmp/
total 104
drwxr-xr-x 2 root root  4096 Jul  4 16:14 fpm
-rw-r--r-- 1 root root    74 Jul  4 16:14 install_for_rpm.sh
lrwxrwxrwx 1 root root    30 Jul  3 13:29 mysql.sock ->  /data/mysql/datadir/mysql .sock
drwxr-xr-x 2 root root  4096 Jul  4 16:12 root
-rw------- 1 root root   256 Jun  5 10:17 tmp.GbE4cEGjO7
-rw------- 1 root root 32379 Jul  3 17:27 yum_save_tx-2014-07-03-17-27UiVNzL.yumtx
-rw------- 1 root root 27578 Jul  3 17:29 yum_save_tx-2014-07-03-17-29nffpfF.yumtx
-rw------- 1 root root 27578 Jul  3 17:41 yum_save_tx-2014-07-03-17-41S1tFIE.yumtx
root@e3d3e87fbfd7:~
16:14:29  # ll /tmp/fpm/
total 4
-rw-r--r-- 1 root root 21 Jul  4 16:14  test .txt
root@e3d3e87fbfd7:~
16:15:00  # cat /tmp/fpm/test.txt 
this is  test  for  rpm

可以看到安装后,tmp目录有了fpm目录,并且这个目录里有了test.txt文件。

rpm打包完成后,你可以使用ansible或者salt等软件来进行配置管理,或者你可以自己弄个本地yum源,rpm包放到yum源里让其他人下载也行,本文没有介绍太深入知识,只是个普及,所以有那块不懂的可以自行网上寻找。






 本文转自 reinxu 51CTO博客,原文链接:http://blog.51cto.com/dl528888/1540312,如需转载请自行联系原作者

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
9天前
|
应用服务中间件 Linux 网络安全
CentOS 7.4源码编译nginx1.12 并且隐藏nginx的版本
CentOS 7.4源码编译nginx1.12 并且隐藏nginx的版本
14 0
|
应用服务中间件 nginx
解决安装Nginx时库依赖
解决安装Nginx时库依赖
|
安全 Java 应用服务中间件
Nginx系列:安全下载模块
ngx_http_secure_link_module模块用于检查请求链接的真伪,保护资源免受未经授权的访问,限制链接的生命周期。
428 0
Nginx系列:安全下载模块
|
应用服务中间件 nginx
想查看下编译安装的nginx默认都带有哪些模块
查看nginx软件包里的auto文件夹里的option文件,带YES的表示默认安装时候自带的模块. 这些模块使用-V是查看不到的.
547 0
|
应用服务中间件 nginx Linux
|
应用服务中间件 nginx
|
应用服务中间件 nginx
|
应用服务中间件 nginx
|
应用服务中间件 nginx Perl
|
应用服务中间件 Linux nginx