安装 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

rpmbuild 实践的更多相关文章

  1. Redis集群研究和实践(基于redis 3.0.5)

    前言 redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.现在的2.x的稳定版本是2.8.19,也是我们项目中普遍用到的版本. redis在年初发布了3.0. ...

  2. [实践] ubuntu下编译安装ambari

    ambari是一个Hadoop套件的管理工具,可以方便部署.管理及监控.最初开发时使用的就是RH系的Linux,只支持RHEL.CentOS5/6.OEL.SLES,暂不支持Ubuntu:可我的需求就 ...

  3. dis集群研究和实践(基于redis 3.0.5) 《转载》

    https://www.cnblogs.com/wxd0108/p/5798498.html 前言 redis 是我们目前大规模使用的缓存中间件,由于它强大高效而又便捷的功能,得到了广泛的使用.现在的 ...

  4. rpmbuild打包php

    安装php依赖库 mkdir -pv ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} php有一个依赖库,在yum源于epel源中都没有需要自己打包libico ...

  5. rhel7 rpmbuild 制作二进制程序安装包(.rpm) 简单示例

    下载rpm-build: # yum install rpm-build 如果上述方式无法安装(没配置网络源,虚拟机下是安装媒介源) 可以用下列方式下载后再安装(实践结果可能版本问题引起的缺少太多的* ...

  6. webp图片实践之路

    最近,我们在项目中实践了webp图片,并且抽离出了工具模块,整合到了项目的基础模板中.传闻IOS10也将要支持webp,那么使用webp带来的性能提升将更加明显.估计在不久的将来,webp会成为标配. ...

  7. Hangfire项目实践分享

    Hangfire项目实践分享 目录 Hangfire项目实践分享 目录 什么是Hangfire Hangfire基础 基于队列的任务处理(Fire-and-forget jobs) 延迟任务执行(De ...

  8. TDD在Unity3D游戏项目开发中的实践

    0x00 前言 关于TDD测试驱动开发的文章已经有很多了,但是在游戏开发尤其是使用Unity3D开发游戏时,却听不到特别多关于TDD的声音.那么本文就来简单聊一聊TDD如何在U3D项目中使用以及如何使 ...

  9. Logstash实践: 分布式系统的日志监控

    文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...

随机推荐

  1. Python——气象数据分析

    将对意大利北部沿海地区的气象数据进行分析与可视化.我们在实验过程中先会运用 Python 中 matplotlib 库的对数据进行图表化处理,然后调用 scikit-learn 库当中的的 SVM 库 ...

  2. c++ string 的注意事项

    string 的reserve 和 resize 区别 reserve 与capacity相关,如果reserve一个比当前capacity大的 reserve 只会找到一块合适大小的内存,并将原始内 ...

  3. opencv模板匹配查找图像(python)

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- import cv2 import numpy as np from cv2 import COLOR_B ...

  4. Sex linkage

    I.8 Sex linkage 单倍体:性别决定基因(S\s)和与性别决定基因连锁的等位基因(A\a)存在于同一套遗传物质上,其配子结合和减数分裂图示如下: 如果性别是由染色体区域决定的,自然选择会避 ...

  5. VUEJS文件扩展名esm.js和common.js是什么意思

    vue.js : vue.js则是直接用在<script>标签中的,完整版本,直接就可以通过script引用. vue.common.js :预编译调试时,CommonJS规范的格式,可以 ...

  6. Fiddler 之Filters

    转自: https://blog.csdn.net/willcaty/article/details/70144287 Filters功能可以过滤捕获到的Sessions 入口在Fiddler工具的右 ...

  7. 关于ping命令的批处理问题

    需求描述:假设你的IP保存在名字为IP.txt的文本文档里,且每行一条ip.你想ping这些IP并得到结果 解决方案:用下面的批处理代码即可实现,将下面的代码保存为后缀为.bat的文件,比如test. ...

  8. 构建Oracle的Docker镜像

    说明:本次构建环境,Centos7.7,Oracle12.2.0.1,Docker19 注意:已安装好docker的,请检查docker版本,1.13以下版本要升级: # df -h 命令检查根目录的 ...

  9. Different Integers

    牛客一 J题 树状数组 题目描述 Given a sequence of integers a1, a2, ..., an and q pairs of integers (l1, r1), (l2, ...

  10. 【转】Vim命令合集

    Vim命令合集 命令历史 以:和/开头的命令都有历史纪录,可以首先键入:或/然后按上下箭头来选择某个历史命令. 启动vim 在命令行窗口中输入以下命令即可 vim 直接启动vim vim filena ...