下以操作最好在虚拟机上操作:如 Docker 最方便了

1. 安装 rpmbuild

yum -y install rpmbuild  rpmdevtools -y

2. 生成打包路径

使用 rpmdev-setuptree ,会自动在用户家目录生成一个 rpmbuild 的文件夹,作为工作路径

cd rpmbuild/SPECS 路径,创建 filename.spec 文件(打包 shell 脚本示例),详细含义查阅相关文档

Name: name
Version: 0.1.
Release: %{?dist}
Summary: 描述
License: 软件版权许可证
Group: Enterprise/xxx Vendor:XXXX
Requires: 依赖的软件包 %description
描述

%install
mkdir -p \
  %{buildroot}%{_sysconfdir}
%prep %files # 想打包的文件,也是你安装时要安装的目录
%defattr(-,root,root,-) # 默认权限
/etc/abc.sh # 想打包的文件 %doc %pre %post %preun # 程序卸载时执行的操作,上面想打包的文件不用写,卸载时会删除.可以在此处删除一些其它文件或其它操作
rm -rf /etc/a.conf
rm -rf /etc/b.conf %changelog

%files 下也可以打包目录

3. 执行打包命令 rpmbuild -bb filename.spec

这类报错: error: File not found: /root/rpmbuild/BUILDROOT/name-0.1.0-1.el6.x86_64/etc/abc.sh

在上面 %install 中可能是你的目录没有创建,具体变量对应的目录查看下面 官方文档 链接都能找到

rpm包会放在 rpmbuild/RPMS/x86_64 这个路径下.完成

也可以使用 rpmbuild --buildroot=/dir -bb filename.spec 命令,其中 dir 目录最好为空,在其下创建 filename.spec 中想打包的目录,并将文件移动过去.

仅供参考

详细文档:

https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn#.E5.85.B3.E4.BA.8E.E6.9C.AC.E6.8C.87.E5.8D.97

需要编译的源码包打包:

http://jaminzhang.github.io/linux/use-rpmbuild-to-build-custom-RPM-package  (文中参考链接值得一看)

http://4270819.blog.51cto.com/4260819/862880

http://murongqingqqq.blog.51cto.com/2902694/1396751

将 shell 脚本打包到 rpm 包中的更多相关文章

  1. linux rpm之已安装包校验、rpm包中文件提取

    已安装包校验 rpm -V 已安装的包名-V 校验指定rpm包中的文件 rpm -V pth没有任何提示,说明自安装后没有做过任何修改 rpm包中文件提取 比如对一个系统配置文件误操作,可以根据这个文 ...

  2. rpm2cpio---如何不安装但是获取rpm包中的文件

    如何不安装但是获取rpm包中的文件 使用工具rpm2cpio和cpio rpm2cpio xxx.rpm | cpio -idmv 参数i表示提取文件.v表示指示执行进程,d和make-directo ...

  3. shell脚本实现读取一个文件中的某一列,并进行循环处理

    shell脚本实现读取一个文件中的某一列,并进行循环处理 1) for循环 #!bin/bash if [ ! -f "userlist.txt" ]; then echo &qu ...

  4. 『学了就忘』Linux软件包管理 — 44、在RPM包中提取文件

    目录 1.RPM包中文件的提取 2.在RPM包中提取文件的操作 (1)cpio命令介绍 (2)提取RPM包中文件 1.RPM包中文件的提取 为什么要做这个事呢? 在操作Linux系统的时候误删除一个文 ...

  5. fpm打包神奇rpm包升级python2.7.16

    fpm打包神器参考文档:https://www.cnblogs.com/flintlovesam/p/6594635.html FPM的安装:安装ruby环境和gem命令: yum -y instal ...

  6. iOS shell脚本打包

    原文链接:http://www.jianshu.com/p/5abbe0d61cef 参考链接:http://blog.csdn.net/potato512/article/details/52176 ...

  7. python脚本打包成rpm软件包

    前言 软件最终都会有交付的形式,有的是用tar包,有个是以目录,有的是封成一个文件包,从大多数使用场景来说,直接打包成软件包的方式是最简单,也是最不容易出错的,路径可以在包里面写死了 实践 关于打包的 ...

  8. shell脚本:Kill掉MySQL中所有sleep的client线程

    分享一个shell脚本,实现kill掉mysql中所有的sleep状态的client线程,有需要的朋友,可以参考研究下. 文件名称:killsleep.sh. #It is used to kill ...

  9. shell 脚本解压war包+备份+tomcat自动关闭+启动

    公司的开发环境每次替换war包时候,老是需要重新上传并且手动解压,然后再去重启tomcat.觉得这样子太麻烦了,于是写了一个shell脚本,自动解压+备份+tomcat自动关闭+启动.代码如下: #关 ...

随机推荐

  1. 利用matlab进行协方差运算

    本文全部参考自: http://www.cnblogs.com/welen/articles/5535042.html#undefined 知识点一: MATLAB中四个取整函数具体使用方法如下:Ma ...

  2. android 项目更改包名的方法

    本文章全文转载: http://www.2cto.com/kf/201304/206747.html 1.在项目上右键,选择android tools->rename application p ...

  3. java类初始化,使用构造方法

    public class test { /** * java类的初步学习: *   学会使用和类名相同的两种构造方法,对公共类方法的调用: */ public static void main(Str ...

  4. HashSet、LinkedHashSet、TreeSet使用区别

    HashSet:哈希表是通过使用称为散列法的机制来存储信息的,元素并没有以某种特定顺序来存放: LinkedHashSet:以元素插入的顺序来维护集合的链接表,允许以插入的顺序在集合中迭代: Tree ...

  5. Unity渲染优化中文翻译(三)——GPU的优化策略

    如果游戏的渲染瓶颈来自于GPU 首要任务就是找出造成GPU瓶颈的因素所在,通常GPU的性能受到像素分辨率的影响,特别是在移动客户端的游戏,但是内存带宽和顶点计算的影响也需要注意.这些因素的影响都需要实 ...

  6. IOS编程学习笔记

    @interface -实例对象 +类名 #import "MyClass" @implementation MyClass -(id)initWithString:(NSStri ...

  7. C#推送RTMP到SRS通过VLC进行取流播放!!

    前面一篇文章简单的介绍了下如何利用SRS自带的播放地址进行观看RTMP直播流,也就是说是使用SRS的内置demo进行Test,但是进行视频直播肯定不可能使用那样的去开发,不开源的东西肯定不好用.由于在 ...

  8. WEB中调用Nutch执行JOB抓取

    参考:在Eclipse中运行Nutch 把nutch的源代码导入到eclipse工程自定义抓取任务. 下载源码: http://svn.apache.org/repos/asf/nutch/ 从svn ...

  9. Eclipse通过jdbc连接数据库制作简单登陆界面

    一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...

  10. 每天一个linux命令(54)--watch命令

    watch是一个非常实用的命,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省的你一遍遍的手动运行,在Linux下,watch是周期性的执行下个程 ...