安装 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. CodeForces 993B Open Communication(STL 模拟)

    https://codeforces.com/problemset/problem/993/b 这题不难,暴力就能过,主要是题意太难懂了 题意: 现在有两个人,每个人手中有一对数,第一个人手中的数是n ...

  2. sphinx转pdf显示中文

    在conf.py中 修改, 加入 ctex包 latex_elements = { # The paper size ('letterpaper' or 'a4paper'). #'papersize ...

  3. mysql only_full_group_by

    下载安装的是最新版的mysql5.7.x版本,默认是开启了 only_full_group_by 模式的,但开启这个模式后,原先的 group by 语句就报错,然后又把它移除了. 一旦开启 only ...

  4. 吴裕雄--天生自然TensorFlow高层封装:解决ValueError: Invalid backend. Missing required entry : placeholder

    找到对应的keras配置文件keras.json 将里面的内容修改为以下就可以了

  5. C/C++中开平方函数sqrt()的用法

    开平方使用sqrt()函数 使用方法: 包含于math.h头文件 sqrt(float * number),返回number的开平方数,返回值为浮点型 sqrt使用时大多需要要强制类型转化,因为sqr ...

  6. 【网络流】Modular Production Line

    [网络流]Modular Production Line 焦作上的一道,网络流24题中的原题.... https://nanti.jisuanke.com/t/31715 给出了1e5个点,但是因为最 ...

  7. 2)#ifndef和#pragma once

    #################################################################################################### ...

  8. token和refresh token

    https://www.cnblogs.com/minirice/p/9232355.html 在spring boot中结合OAuth2使用JWT时,刷新token时refresh token一直变 ...

  9. 网页元素检测工具:Spy_for_InternetExplorer下载地址

    本工具用于实时查看IE浏览器中打开的网页中元素的信息.支持iframe.frame框架. 下载地址: Spy_for_InternetExplorer.rar

  10. 头次接触wamp服务器、xampp,初次单独使用tomcat部署

    刚刚经过了近两天的接触wamp.xampp.tomcat的时光,真的爽 导师有个网站打不开了,就让我去弄,还有一个网站的后台密码忘了,让我帮忙找回来.我第一感觉就是第一个活不简单,第二个还不简单吗?打 ...