rpmbuild制作rpm包

2 篇文章 0 订阅

1

使用rpmdev-setuptree命令,可以在当前用户下生成以下结构文件夹
rpmbuild/
      BUILD
      RPMS
      SOURCES
      SPECS
      SRPMS
当然,也可以手动新建 cd ~/rpmbuild; mkdir -pv {BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}

2

将准备的包hello-2.8.2.2.tar.gz 放到rpmbuild/SOURCES   必须是 tar.gz 结尾
这里的压缩包的名字 版本号 必须标准化,以下面编辑的 *.spec 文件内存对应
压缩包中的内容是 你要放到 Linux 根文件下的路径结构,hello-2.8.2.2.tar.gz解压开来 是一个文件夹 hello-2.8.2.2/{usr,lib,etc}

 

3

关键配置文件

#cat SPECS/hello.spec 

Name:	hello	
Version:2.8.2.2	
Release:cm5162.p0.7.el7
Summary:xxxxx	

Group:	System	
License:GPL	
URL:	http://www.cloudera.com	
Source0:	%{name}-%{version}.tar.gz

BuildRoot:      %_topdir/BUILDROOT
#BuildRequires:	
Requires: nc,ftp,gcc

%description
测试rpmbuildxxxxxx

%prep
%setup -q


%build   #之间不准有空行
%install #之间不准有空行
#make install DESTDIR=%{buildroot}
#rm -rf %{buildroot}/*
cp -rp %_topdir/BUILD/%{name}-%{version}/*  %{buildroot}  ##很重要

#下面的几步pre、post、preun、postun 没必要可以不写 
%pre
echo "rpm安装前制行的脚本"
%post
echo "安装后执行的脚本"
%preun
echo "卸载前执行的脚本"
%postun
echo "卸载后执行的脚本"
rm -rf /usr/tmp/abccccc
%clean
#rm -rf %{buildroot} 

%files
/usr/tmp/abccccc #经测试 必须写到abccccc路径,若是只写到/usr或/usr/tmp/ ,按装的时候会包 路径冲突错误
%doc



%changelog

 

示例

Name:cloudera-manager-agent	
Version:5.16.2
Release:cm5162.p0.7.el7
Summary:The Cloudera Manager Agent	

Group:System
License:Proprietary	
URL:http://www.cloudera.com	
Source0:%{name}-%{version}.tar.gz

#BuildRequires:	
#Requires:/sbin/chkconfig,python >= 2.4.3-43,bind-utils,psmisc,libxslt,zlib,sqlite,cyrus-sasl-plain,openssl,cyrus-sasl-gssapi,fuse,portmap,cloudera-manager-daemons = 5.16.2,perl,/usr/sbin/ss,/sbin/ip,fuse-libs,/lib/lsb/init-functions,httpd,mod_ssl,openssl-devel,python-psycopg2,MySQL-python
%description
The Cloudera Manager Agent.

The Agent is deployed to machines running services managed by Cloudera Manager.

%prep
%setup -q


%build
%install
cp -rp %_topdir/BUILD/%{name}-%{version}/*  %{buildroot}

%pre
%post
#unzip /usr/lib64/cmf/agent.zip
/bin/gzip -r -d /usr/lib64/cmf/agent/build/env/lib64   
##为什么会有解压操作
##因为这里的包里有.so结尾的文件,在rpmbuild -bb 制作时,会报一些.so文件ERROR,所以只能先将这些文件提前使用gzip -r .../lib 文件压缩,然后在安装完后再执行解压操作
#gzip 不能压缩文件夹,可以使用gzip -r 文件夹  这样只是把文件夹内的文件全部压成了 .gzip 的文件了
/bin/gzip -r -d /usr/lib64/cmf/agent/build/env/lib
chkconfig --add cloudera-scm-agent
[ -e /usr/share/hue/desktop/desktop.db ] && ([ ! -e /var/lib/hue-db-backup ] && (install -d -o hue -g hue /var/lib/hue-db-backup || mkdir -p /var/lib/hue-db-backup) || true) && (umask 077; cp /usr/share/hue/desktop/desktop.db /var/lib/hue-db-backup/desktop.db.$(date +'%Y%m%d.%H%M%S')) || true
/usr/sbin/useradd cloudera-scm -d /var/lib/cloudera-scm-server -s /sbin/nologin
[ ! -d /var/lib/cloudera-scm-agent ] && mkdir /var/lib/cloudera-scm-agent; chown -R cloudera-scm:cloudera-scm /var/lib/cloudera-scm-agent
[ ! -d /var/log/cloudera-scm-agent ] && mkdir /var/log/cloudera-scm-agent; chown -R cloudera-scm:cloudera-scm /var/log/cloudera-scm-agent

%preun
service cloudera-scm-agent stop > /dev/null
if [ $1 = 0 ]; then
    chkconfig --del cloudera-scm-agent
fi
%postun
echo "卸载后执行的脚本"
#rm -rf /usr/lib64/cmf   ##这些删除可加可不加
#rm -rf /usr/sbin/cmf-agent
#rm -rf /etc/cloudera-scm-agent
#rm -rf /etc/init.d/cloudera-scm-agent
#rm -rf /etc/default/cloudera-scm-agent
echo "删除完成"
%clean


%files
#%defattr (-,root,root,0755)
#%attr(644, root, root) %{_lib}/cmf
#%attr(755, root, root) %{_sbindir}/cmf-agent
/etc/cloudera-scm-agent/    
##精确到自己的目录,若是直接写 /etc 安装的时候会报 文件冲突
/etc/default/cloudera-scm-agent
/etc/init.d/cloudera-scm-agent
/usr/lib64/cmf
/usr/sbin/cmf-agent
/var/log/cloudera-scm-agent/
%doc



%changelog

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值