最近分享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 0 ']'
+ /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,如需转载请自行联系原作者