使用rpmbuild 重新打包 hue-hbase RPM包
目录
使用 rpmbuild 重新打包 hue-hbase RPM 包
一、 RPM 包的分类
RPM有五种基本的操作功能:安装、卸载、升级、查询和验证。
linux软件包分为两大类:
(1)二进制类包,包括rpm安装包(一般分为i386和x86等几种)
(2)源码类包,源码包和开发包应该归位此类(.src.rpm)。
有时候为了方便源码包的安装,和我们自己订制软件包的需求,我们会把一些源码包按照我们的需求来做成rpm包,当有了源码包就可以直接编译得到二进制安装包和其他任意包。spec file是制作rpm包最核心的部分,rpm包的制作就是根据spec file来实现的。
二、 RPMBUILD 默认目录
在centos 下,rpm包的默认制作路径在/root/下,这其中包含了6个目录(要求全部大写)
BUILD 源代码解压以后放的位置,只需提供BUILD目录,具体里面放什么,不用我们管,所以真正的制作车间是BUILD目录
RPMS 制作完成后的rpm包存放目录,为特定平台指定子目录
SOURCES 收集的源文件,源材料,补丁文件等存放位置
SPECS 存放spec文件,作为制作rpm包的领岗文件,以 rpm名.spec
SRPMS src格式的rpm包位置 ,既然是src格式的包,就没有平台的概念了
BuiltRoot 假根,使用install临时安装到这个目录,把这个目录当作根来用的,所以在这个目录下的目录文件,才是真正的目录文件。当打包完成后,在清理阶段,这个目录将被删除
三、重新打包 hue-hbase (例子)
1.环境安装这里不再阐述,下载原rpm包( hue-hbase-3.5.0+cdh5.0.4+387-1.cdh5.0.4.p0.11.el6.x86_64.rpm )
2. 解压,然后将修改的文件替换(这里修改了hue中hbase显示的js相关文件),创建 hue-hbase-3.5.0+cdh5.0.4+387 目录、将所有解压后(包含替换)放入该目录中,最后打包成hue-hbase tar包
3. 将tar包移入SOUCE目录下
4. 编写hue-hbase.spec文件
### 1.The introduction section
Name:hue-hbase # 软件包名称
Version:3.5.0+cdh5.0.4+387 # 版本号,(不能使用 - )
Release: 1.cdh5.0.4.p0.11%{?dist} # release 号,对应下面的 changelog ,如 hue-hbase-3.5.0+cdh5.0.4+387-1.cdh5.0.4.p0.11.el6.x86_64.rpm
Summary:Hue hbase build # 简要描述信息,
Group: Yonyou UDH
License:no
URL: http://www.yonyou.com
Source0:%{name}-%{version}.tar.gz # source 主要是引用一下自己定义好的脚本,配置文件之类的内容。
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Vendor: Apache
Packager:AE
BuildArch:x86_64
#BuildRequires: # 定 义 依赖的包,需要 yum 安装 ,这里无
%description
### 2.The Prep section 准备阶段 , 主要就是把源码包解压到 build 目录下,设置一下环境变量,并 cd 进去
%prep
%setup –q # 这个宏的作用静默模式解压并 cd
### 3.The Build Section 编译制作阶段,这一节主要用于编译源码
%build
#%define __debug_install_post %{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}" %{nil}
### 4.Install section 这一节主要用于完成实际安装软件必须执行的命令,可包含 4 种类型脚本
%install
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT/usr/lib/hue/apps
cp -a * $RPM_BUILD_ROOT/usr/lib/hue/apps/
### 5.clean section 清理段 ,clean 的主要作用就是删除 BUILD
%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf "$RPM_BUILD_ROOT"
rm -rf $RPM_BUILD_DIR/%{name}-%{version}
%post
%postun
rm -rf /usr/lib/hue/apps/hbase
### 6.file section 文件列表段,这个阶段是把前面已经编译好的内容要打包了
%files
/usr/lib/hue/apps/hbase/*
%defattr(-,root,root,-)
%doc
### 7.chagelog section 日志改变段, 这一段主要描述软件的开发记录
%changelog
5. 制作RPM包
rpmbuild -bb hue-hbase.spec 制作二进制包