安装 rpmbuild

1
# yum install -y rpm-build

查看 rpmbuild 相关的宏和参数

1
2
3
4
5
6
7
8
# rpmbuild --showrc | grep --color "_topdir"
-14: _builddir %{_topdir}/BUILD
-14: _buildrootdir %{_topdir}/BUILDROOT
-14: _rpmdir %{_topdir}/RPMS
-14: _sourcedir %{_topdir}/SOURCES
-14: _specdir %{_topdir}/SPECS
-14: _srcrpmdir %{_topdir}/SRPMS
-14: _topdir %{getenv:HOME}/rpmbuild
1
2
# rpmbuild --showrc | grep --color "buildroot"
-14: buildroot %{_buildrootdir}/%{name}-%{version}-%{release}.%{_arch}
1
2
# rpm --eval "%_topdir"
/home/guoqiang.ding/rpmbuild

编写 rpmbuild 需要的 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
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
Name:   fdsRsync
Version: 1.0.0
Release: 0
Summary: call fds on the method of rsync. Group: ####
License: Commercial
URL: ####
Source0: %{name}-%{version}.tar.gz
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
大专栏  rpmbuild 实践r/>#BuildRequires:
#Requires:
Packager: guoqiang.ding
Vendor: ### %define _prefix /usr/local/%{name} %description
this is a rpm for fdsRsync. #=> preprocess.
%prep
%setup -q %build
mkdir -p $RPM_BUILD_ROOT/%{_prefix}
cp -rf $RPM_BUILD_DIR/%{name}*/* $RPM_BUILD_ROOT/%{_prefix}/ #=> cp the files compiled to somewhere.
%install
echo "RPM_BUILD_DIR=>" $RPM_BUILD_DIR
echo "RPM_BUILD_ROOT=>" $RPM_BUILD_ROOT
ls -R $RPM_BUILD_ROOT #=> rm the virtual dirs.
%clean
rm -rf $RPM_BUILD_DIR
rm -rf $RPM_BUILD_ROOT #=> file in the rpm must list here.
%files
%defattr(-,root,root,-)
%dir /%{_prefix}/
%dir /%{_prefix}/conf/
%dir /%{_prefix}/log/
%dir /%{_prefix}/src/ /%{_prefix}/boot.sh
/%{_prefix}/kill.sh
/%{_prefix}/conf/*.conf
/%{_prefix}/log/*.log
/%{_prefix}/src/*.py
%doc /%{_prefix}/README %changelog
* Mon Jan 26 2015 guoqiang.ding <guoqiang.ding@xxx.com>
- 1st release for fdsRsync RPM.

执行 rpmbuild

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/bin/sh
version=1.0.0
rpm_sourcedir='/root/rpmbuild/SOURCES'
project_name='fdsRsync'
work_dir='/home/guoqiang.ding/'$project_name
temp_dir=$work_dir-$version
cp -rf $work_dir $temp_dir
cd $work_dir/../
zip_file=$project_name-$version'.tar.gz'
tar czvf $zip_file ./$project_name-$version
rm -rf $temp_dir
mv $zip_file $rpm_sourcedir
cd $work_dir
rpmbuild -bb ./$project_name.spec
rpm_dir='/root/rpmbuild/RPMS/x86_64'
cp $rpm_dir/$project_name-$version*.rpm ./
rpm -qpl ./$project_name-$version*.rpm

检查打包好的 rpm

如果只想知道包里的文件列表执行:

1
# rpm -qpl packetname

如果想要导出包里的内容,而不是安装,那么执行:

1
# rpm2cpio pkgname | cpio -ivd

最新文章

  1. Neutron 默认安全组规则 - 每天5分钟玩转 OpenStack(115)
  2. ios 图片的两种加载方式
  3. linux mount 硬盘挂载和卸载
  4. UpdatePanel完成后调用js
  5. Face The Right Way
  6. 高放的c++学习笔记之重载运算与类型转换
  7. 新手上路Tomcat 7.x和JDK的配置
  8. UI基础视图----UILabel总结
  9. 大数据实时处理-基于Spark的大数据实时处理及应用技术培训
  10. Shell简易学习练习
  11. 理解Vue中的Render渲染函数
  12. vuex是什么东西?
  13. 在word中如何美观地插入代码
  14. python学习日记(基础数据类型及其方法01)
  15. tomcat/Java指定加载jar包的路径
  16. [Q&amp;A] 解决 SBT 初始化或下载 jar 包速度慢的问题
  17. nGrinder Maven工程使用
  18. Android Jackson 概述
  19. 通过ajax记录打印信息
  20. An Easy Task(简箪题)

热门文章

  1. Docker容器化【Dockerfile编写&amp;&amp;搭建与使用Docker私有仓库】
  2. 如何找到我的Python site-packages目录的位置?
  3. python处理nii格式文件
  4. HttpClient怎么获取cookie
  5. tap点击一次,内部程序执行两次,多次
  6. WOW.js——在页面滚动时展现动感的元素动画效果
  7. [LC] 121. Best Time to Buy and Sell Stock
  8. F. Moving On
  9. VSAN磁盘扩容与收缩
  10. HHP|HPLC-MS/MS|PMT|PST|de novo|