http://fedoraproject.org/wiki/How_to_create_an_RPM_package

# rpm --showrc|grep _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 # echo %_topdir $HOME/rpmbuild > ~/.rpmmacros # cat ~/.rpmmacros
%_topdir /root/rpmbuild # mkdir -p ~/rpmbuild/{BUILD,RPMS/x86_64,S{OURCE,PEC,RPM}S} # tree /root/rpmbuild/
/root/rpmbuild/
├── BUILD
│   └── monitor-agent-1.0
├── BUILDROOT
├── RPMS
│   └── x86_64
├── SOURCES
│   ├── monitor-agent-1.0
│   └── monitor-agent-1.0.tar.gz
├── SPECS
│   └── monitor-agent.spec
└── SRPMS
# monitor-agent.spec
Name: monitor-agent
Version: 1.0
Release: 1%{?dist}
Summary: monitor-agent Group: Applications/System
License: GPL
Source0: %{name}-%{version}.tar.gz
BuildRoot: %{_builddir}/%{name}-%{version} Requires: nagios-plugins,nrpe,net-snmp-perl,perl-XML-LibXML,perl-JSON,perl-libwww-perl,perl-XML-XPath,perl-Net-Telnet,perl-Net-DNS,perl-DBI,perl-DBD-MySQL,perl-DBD-Pg,perl-Email-Send, %description %prep
%setup -q %build %install
rm -rf %{buildroot}
mkdir -p %{buildroot}/usr/lib64/nagios/plugins
mkdir -p %{buildroot}/etc/nagios
mkdir -p %{buildroot}/etc/nrpe.d cp -rfp centreon-plugins %{buildroot}/usr/lib64/nagios/plugins
install -m 0755 check_live_status.py %{buildroot}/usr/lib64/nagios/plugins
install -m 0755 check_live_transfer.py %{buildroot}/usr/lib64/nagios/plugins
install -m 0755 check_nfsmounts.pl %{buildroot}/usr/lib64/nagios/plugins install -m 0644 cfg/base.cfg %{buildroot}/etc/nrpe.d
install -m 0644 cfg/app.cfg %{buildroot}/etc/nrpe.d
install -m 0644 cfg/nrpe.cfg %{buildroot}/etc/nagios %clean
rm -rf %{buildroot} %files
%defattr(-,root,root)
/usr/lib64/nagios/plugins/centreon-plugins
/usr/lib64/nagios/plugins/check_live_status.py
/usr/lib64/nagios/plugins/check_live_transfer.py
/usr/lib64/nagios/plugins/check_nfsmounts.pl
/etc/nagios/nrpe.cfg
/etc/nrpe.d/base.cfg
/etc/nrpe.d/app.cfg %pre
[ -e '/etc/yum.repos.d/rpmforge.repo' ] && mv -f /etc/yum.repos.d/rpmforge.repo /etc/yum.repos.d/rpmforge.repo.rpmsave
yum clean all %post %preun %postun
rm -rf /usr/lib64/nagios/plugins/centreon-plugins
rm -rf /usr/lib64/nagios/plugins/{check_live_status.py,check_live_transfer.py,check_nfsmounts.pl}
rm -rf /etc/nrpe.d/{base.cfg,app.cfg}
/etc/init.d/nrpe restart %changelog
rpmbulid -bb monitor-agent.spec

rpm打包工具的更多相关文章

  1. rpm打包工具---FPM

    FPM的安装:fpm是由ruby gem仓库里面安装的所以要先装ruby.yum安装的ruby版本是1.8.7版本,使用gem命令会报错: >= 1.9.3,所以要安装一个比1.9.3版本高的 ...

  2. 以libfuse为例介绍rpm打包工具rpmbuild的使用和SPEC文件的编写

    一.rpmbuild命令的安装 yum install rpm-build 二.用法 rpmbuild -bb XXXX.spec或者rpmbuild -ba XXX.tar.gz 三.目录概述 rp ...

  3. 使用FPM打包工具打rpm包

    使用FPM打包工具打rpm包 一:安装ruby环境和gem命令 fpm 是 ruby写的,因此系统环境需要ruby且版本必须大于1.8.5 # yum -y install ruby rubygems ...

  4. FPM打包工具 可以把源码包制定为rpm包 是自动化部署的环节

    注意部FPM时的环境一定要跟生产环境的系统版本最好是保持一至,我第一次测试没通过,(我在CENTOS7和部属FPM打好的包在Centos6.x和安装,结果失败) 1:安装 FPM打包工具的依赖包: [ ...

  5. 【centos7常用技巧】RPM打包

    一.RPM打包的目的 1.当目标机中不存在编译环境时,可以先在本地环境中编译打包,然后直接在目标机中用rpm -ivh *.rpm安装即可. 2.当需要在目标机中安装多个软件或者增加多个文件时,可以将 ...

  6. linux 版本控制及rpm打包

    版本控制 subversion:是一个自由/开源的版本控制系统,在subversion管理下,文件和目录可以超越时空subversion允许你数据恢复到早期版本,或者是检查数据修改历史许多人将版本控制 ...

  7. RPM打包原理、示例、详解及备查

    原文地址:https://blog.csdn.net/qq_16542775/article/details/80961213 RPM(Redhat Package Manager)是用于Redhat ...

  8. 使用rpm 打包开发的postgres extension

      环境准备 安装依赖包 rpmdevtools rpm-build yum install -y rpm-build rpmdevtools 初始化rpm pacakge 项目 主要是rpm 打包的 ...

  9. RPM打包原理、示例、详解及备查( 转)

    RPM(Redhat Package Manager)是用于Redhat.CentOS.Fedora等Linux 分发版(distribution)的常见的软件包管理器.因为它允许分发已编译的软件,所 ...

随机推荐

  1. vmware正在使用中问题

    解决方法:找到vmware目录下的.lck文件,将其删掉即可.

  2. Codeforce-A-Two distinct points(暴力)

    output standard output You are given two segments [l1;r1][l1;r1] and [l2;r2][l2;r2] on the xx-axis. ...

  3. Java StringTokenzier

    Java中substring方法可以分解字符串,返回的是原字符串的一个子字符串.如果要讲一个字符串分解为一个一个的单词或者标记,StringTokenizer可以帮你. public static v ...

  4. my25_Mysql操作技巧汇总

    1. drop database 在数据量很大的情况下,最好先对表进行truncate,然后再drop database:不然会卡住很长的时间. 2. 数据的逻辑导入导出 如果数据量大,又需要进行逻辑 ...

  5. Vue.js递归组件实现动态树形菜单

    使用Vue递归组件实现动态菜单 现在很多项目的菜单都是动态生成的,之前自己做项目也是遇到这种需求,翻看了官网案例,和网上大神的案例.只有两个感觉,官网的案例太简洁,没有什么注释,看起来不太好理解,大神 ...

  6. 更新jdk

    1.从官网下载jdk-8u191-linux-x64.tar.gz,然后放在ubuntu里的Downloads文件夹里.然后解压到/usr/lib/jvm文件夹中. sudo tar -zxvf Do ...

  7. RTT学习

    一互斥量:是信号量的一种,用于共享资源的排他性使用,以锁的形式存在,初始化时为可用,不能在中断中使用,可能导致优先级翻转. 二 事件:创建.删除.初始化.解绑.等待.发送.可以一对多多对的,发送一个事 ...

  8. Easy Touch 摇感控制人物移动

    Easy Touch 摇感控制人物移动 public class joystick : MonoBehaviour { public float Speed;             //定义速度 p ...

  9. JavaScript比较运算符——"== != === !=="区别

    JavaScript的比较和逻辑运算符用于测试 true 或 false. 比较运算符在逻辑语句中使用,以测定变量或值是否相等. 例如给定 x=5,下面的表格解释了比较运算符: 1. == 和===的 ...

  10. css有关鼠标移动上去图片变透明度变化

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...