利用src.rpm包修改源码后重新制作rpm包
1. 下载 .src.rpm包。
例:https://repos.fedorapeople.org/repos/openstack/EOL/openstack-grizzly/epel-6/openstack-quantum-2013.1.4-4.el6.src.rpm
2. 使用" rpm -ivh "解压源码包。
例:rpm -ivh openstack-quantum-2013.1.4-4.el6.src.rpm (--root=xxx 指定路径)
解压的结果放在 /root/rpmbuild/ 下面。
3.(optional) 检查解压文件。
例:cd /root/rpmbuild/SPECS/
ls openstack-quantum.spec
4.(optional) 修改源代码。
5. 使用 rpmbuild 打包。(注:如果没有rpmbuild命令,请从CentOS光盘镜像安装: yum install rpm-build 如果有相关依赖包未安装,一并安装:yum install python2-devel, yum install dos2unix )
例: rpmbuild -ba openstack-quantum.spec (--define "_topdir xxx/root/rpmbuild" 指定buildroot)
------------------------------------------------------------------------------------------------------
附:rpmbuild命令的详解 <转自http://blog.163.com/huv520@126/blog/static/27765239200992110163786/>
Usage: rpmbuild [OPTION...]
*使用命令:rpmbuild ·[OPTION]
Build options with [ <specfile> | <tarball> | <source package> ]:
*建立包的选项有:[ 从文件<specfile>建立 |从 <tarball>包建立 |从 <source package>包建立]
*从文件<specfile>建立
-bp build through %prep (unpack sources and apply patches) from <specfile>
* -bp 从<specfile>文件的%prep段开始建立(解开源码包并打补丁)
-bc build through %build (%prep, then compile) from <specfile>
*-bc 从<specfile>文件的%build
-bi build through %install (%prep, %build, then install) from <specfile>
-bl verify %files section from <specfile>
*检查<specfile>文件的%files段
-ba build source and binary packages from <specfile>
*建立源码和二进制包
-bb build binary package only from <specfile>
*只建立二进制包
-bs build source package only from <specfile>
*只建立源码包
*从 <tarball>包建立
-tp build through %prep (unpack sources and apply patches) from <tarball>
-tc build through %build (%prep, then compile) from <tarball>
-ti build through %install (%prep, %build, then install) from <tarball>
-ta build source and binary packages from <tarball>
*建立源码和二进制包
-tb build binary package only from <tarball>
*只建立二进制包
-ts build source package only from <tarball>
*只建立源码包
*从 <source package>包建立
--rebuild
build binary package from <source package>
*建立二进制包
--recompile
build through %install (%prep, %build, then install) from <source package>
*rpmbuild的其他使用项
--buildroot=DIRECTORY override build root
*确定以root目录建立包
--clean remove build tree when done
*完成打包后清除BUILD下的文件目录
--nobuild do not execute any stages of the build
*不进行BUILD的阶段
--nodeps do not verify build dependencies
*不检查建立包时的关联文件
--nodirtokens
generate package header(s) compatible with (legacy) rpm[23] packaging
--rmsource remove sources when done
*完成打包后清除sources
--rmspec remove specfile when done
*完成打包后清除specfile
--short-circuit skip straight to specified stage (only for c,i)
*跳过
--target=CPU-VENDOR-OS
override target platform
*确定包的最终使用平台
Common options for all rpm modes:
*所有rpm都可使用的选项
-D, --define='MACRO EXPR' define MACRO with value EXPR
*预定义
-E, --eval='EXPR' print macro expansion of EXPR
*显示大量EXPR扩展信息
--macros=<FILE:...> read <FILE:...> instead of default file(s)
*读<FILE:...>文件代替默认文件
--nodigest don't verify package digest(s)
*不检查包的说明信息
--nosignature don't verify package signature(s)
*不检查包的签名信息
--rcfile=<FILE:...> read <FILE:...> instead of default file(s)
*读<FILE:...>文件代替默认文件
-r, --root=ROOT use ROOT as top level directory (default: "/")
*使ROOT为最高级别的路径
--querytags display known query tags
*显示已知的有疑问的地方
--showrc display final rpmrc and macro configuration
*显示最终的配置信息
--quiet provide less detailed output
*提供少量的信息
-v, --verbose provide more detailed output
* 提供大量的详细的信息
--version print the version of rpm being used
*显示rpm包的版本
Options implemented via popt alias/exec:
*附加选项
--dbpath=DIRECTORY use database in DIRECTORY
--with=<option> enable configure <option> for build
*建立时允许配置的选项
--without=<option> disable configure <option> for build
*建立时不允许配置的选项
Help options:
*帮助选项
-?, --help Show this help message
* 显示帮助信息
--usage Display brief usage message
*显示使用方法的信息
打包
如
果想发布rpm格式的源码包或者是二进制包,就要使用rpmbuild工具(rpm最新打包工具)。如果我们已经根据本地源码包的成功编译安装而写了
spec文件(该文件要以.spec结束),那我们就可以建立一个打包环境,也就是目录树的建立,一般是在/usr/src/redhat/目录下建立5
个目录。它门分别是BUILD、SOURCE、SPEC、SRPM、RPM。其中BUILD目录用来存放打包过程中的源文件,SOURCE用来存放打包是
要用到的源文件和patch,SPEC用来存放spec文件,SRPM、RPM分别存放打包生成的rpm格式的源文件和二进制文件。当然我们可以根据需要
来选用不同的参数打包文件,笔者总结如下3条。
1) 只生成二进制格式的rpm包
rpmbuild -bb xxx.spec
用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号)
1 |
生成的文件会在刚才建立的RPM目录下存在。
2)只生成src格式的rpm包
rpmbuild -bs xxx.spec
生成的文件会在刚才建立的SRPM目录下存在。
3) 只需要生成完整的源文件
rpmbuild -bp xxx.spec
源文件存在目录BUILD下。
读者朋友可能对这个命令不太明白,这个命令的作用就是把tar包解开然后把所有的补丁文件合并而生成一个完整的具最新功能的源文件。
4) 完全打包
rpmbuild -ba xxx.spec
产生以上3个过程分别生成的包。存放在相应的目录下。
利用src.rpm包修改源码后重新制作rpm包的更多相关文章
- openvswitch2.11.0修改源码后重新编译(2)
一:前提 已经正常安装了SDN环境(mininet和openswitch2.11.0和Ryu) 使用前面教程安装环境SDN实验---使用git安装Mininet (一)测试ovs是否正常使用 1.ry ...
- Appium修改源码后重新编译
按照官方的说明下载源码,安装依赖库,具体可从这来: https://github.com/appium/appium/blob/master/docs/en/contributing-to-appiu ...
- openvswitch2.11.0修改源码后重新编译
一:推文 https://www.jianshu.com/p/923f49c290f5(可以删除运行当中的DataPath内核) https://github.com/ebiken/doc-netwo ...
- RPM包或源码包
安装RPM包或源码包 点击vmware右下角光驱连接. 安装rpm包 -i:表示安装 -v:表示可视化 -h:表示显示安装进度 (同时使用) --force:表示强制安装,即使覆盖属于其他包的文件也要 ...
- Hadoop 修改源码以及将修改后的源码应用到部署好的Hadoop中
我的Hadoop版本是hadoop-2.7.3, 我们可以去hadoop官网下载源码hadoop-2.7.3-src,以及编译好的工程文件hadoop-2.7.3, 后者可以直接部署. 前者hadoo ...
- yum更换国内源、yum下载rpm包、源码包安装 使用介绍
第5周第4次课(4月19日) 课程内容: 7.6 yum更换国内源7.7 yum下载rpm包7.8/7.9 源码包安装 7.6 yum更换国内源 当yum仓库的软件不好用时,例如很多yum源都是国外的 ...
- Sentinel控制台1.8.3修改源码,修改配置后推送到Nacos
目录 1. 接着上一篇 2. 思路 3. 下载Sentinel源码 4. 看Gateway里面读取的配置信息 5. 修改Sentinel控制台源码 6. 熔断规则测试 7. 限流规则测试 8. 打包使 ...
- httpd的rpm包及源码安装配置
httpd的rpm包及源码安装配置 1.rpm包安装 系统环境: [root@zhaochj ~]# cat /etc/issue CentOS release 6.4 (Final) Kernel ...
- 安装RPM包或者源码包
RPM工具 RPM他是以一种数据库记录的方式将我们所需要的套件安装到linux主机的一套管理程序关于RPM各个选项的含义如下-i:表示安装-v:表示可视化-h:表示安装进度在安装RPM包时,常用的附带 ...
随机推荐
- 在VS2010下打开VS2008项目的解决办法
如何在vs2010中打开vs2008项目文件? 第一步:以记事本方式打开该项目的sln解决方案,找到这两行信息,分别如下:Microsoft Visual Studio Solution File, ...
- 奥森图标和CSS特殊字体使用方法
作为第一篇博文,写这个 我快要被气炸,好吧,废话不说了 昨天在项目中发现有很多这些Awesome图标 也在网上找了下Font Awesome下载后这些文件,现在的版本是4.2,Font Awesome ...
- 20145229吴姗珊《JAVA程序设计》第一周学习总结
教材学习内容总结 第一章 JAVA 平台概论 1.JAVA不仅仅是一门程序设计语言,还是标准规范 2.1995年5月23日被公认为JAVA的诞生日 3.J2SE包含了JDK和JAVA程序语言 4.三大 ...
- _CRT_SECURE_NO_WARNINGS
在新版编程器的编译过程中我们常常会遇到一些过时或者不安全的函数 举一个简单的例子: 很多带"_s"后缀的函数是为了让原版函数更安全,传入一个和参数有关的大小值,避免引用到不存在的元 ...
- mini2440移植uboot 2014.04(二)
我修改的代码已经上传到github上,地址:https://github.com/qiaoyuguo/u-boot-2014.04-mini2440.git 参考文章: <u-boot-2011 ...
- Struts基本原理 + 实现简单登录(二)
MVC 概念 MVC全名是Model View Controller,是模型(model)—视图(view)—控制器(controller)的缩写,知道这么多就够了. 大家都知道SUN公司对于MVC模 ...
- <轻量算法>根据核密度估计检测波峰算法 ---基于有限状态自动机和递归实现
原创博客,转载请联系博主! 希望我思考问题的思路,也可以给大家一些启发或者反思! 问题背景: 现在我们的手上有一组没有明确规律,但是分布有明显聚簇现象的样本点,如下图所示: 图中数据集是显然是个3维的 ...
- UOJ130 【NOI2015】荷马史诗
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- java的远程访问接口的实例
被别人远程调用和自己远程调用别人接口的理解: 被别人调用接口:其实没有什么神秘的,就是我们写一个正常的方法提供一个访问路径. 调用别人的接口:本质时一个Request请求,实际要使用到javax.ne ...
- C#实现网站登录
public class HTMLHelper { /// <summary> /// 获取CooKie /// /// < ...