一、rpm是什么
  rpm是一种安装包的格式。就像在Windows系统上我们常见的安装包格式是exe和msi一样,在linux上常见的安装包格式是deb和rpm。一般在红帽系列的系统上,不支持deb,所以我们需要将程序打包成rpm安装。
 
二、rpm的打包工具
  rpm的打包,我们需要用到:rpmbuild 和 rpmdevtools
  有的系统预装的 rpmbuild,这样我们就不需要安装这个了,可以用使用命令检查系统是否有安装 rpmbuild
# 检查是否有 rpmbuild
rpmbuild --version

# 安装 rpmbuild
yum install rpm-build
 
# 安装 rpmdevtools
yum install rpmdevtools

 

三、创建打包文件夹
  创建打包文件夹有两种方法:
    方法一:使用命令 rpmdev-setuptree 来创建,但是创建的文件夹是在用户主目录(home),我们可以将rpmbuild整个文件夹拷贝到项目文件夹,这样可以方便我们项目管理。
    方法二:手动的去创建文件夹,具体文件夹结构可以参考下面的目录树
# 方法一:使用命令创建
rpmdev-setuptree

# 目录树
rpmbuild
    - BUILD           // 编译时用到的暂存目录
    - RPMS            // 打包后生成的 rpm 包会放在这里
    - SOURCES         // 源码压缩包
    - SPECS           // 放 xx.spec 文件
    - SRPMS           // 打包后生成的 srpm 包会放在这里

 

四、创建 spec 文件
*:spec文件这个文件非常重要,控制整个rpm包安装卸载等全部过程
# 使用命令可以创建中 x.spec 文件模板
rpmdev-newspec eloam.spec

 

五、spec 文件详解
Name:           名称
Version:        版本号
Release:        release版本
Summary:        对包的描述

License:        开源协议
URL:            项目主页
Source0:        源码包

# 没有用到,所以注释掉了
#BuildRequires:  
#Requires:       

%description
# 详细描述,多行,每行小于等于80个字符,否则算新的一段

%prep
# 静默模式解压,并进入解压后的目录,常用:%setup -q

%build
# 编译过程

%install
# 安装过程

%files
# 要打包的文件

 

六、打包

rpmbuild -bb  SPECS/elaom.spec --define="_topdir `pwd`"

 

七、RPM 的安装 & 卸载

# rpm 安装     sudo rpm -ivh 包名 --nodeps
# rpm 卸载     sudo rpm -e --nodeps 包名

 

 

八、 ** 特别重要 ·  核心 **

2. 所有文件尽量不要使用记事本打开,可以使用 vi 来操作
3.我们的打包方法是将需要打包的文件,先打包成 tar.gz ,然后在使用 rpm 的打包工具对压缩包解压,解压后再次打成 rpm 包
4.压缩包的名称一定要和 spec 文件中名称(Source0)一致
5.rpm的打包过程中会遇到各种各样的问题,要看报错,慢慢分析,一步一个坑,习惯了就好,可以有效抑制头发生长
 
打压缩包 & 压缩包结构
# 打压缩包命令
tar -czvf eloamwss-1.0.tar.gz   eloamwss-1.0

# 压缩包结构
eloamwss-1.0.tar.gz
    - eloamwss-1.0
        - eloamwss.conf
        - eloamwss
            - doc
            - lib
            - eloamwss

 

eloam.spec 模板示例
Name:           eloamwss
Version:        1.0
Release:        1
Summary:        web rpm package

License:        GPL
URL:            http://sdk.eloam.net
Source0:        %{name}-%{version}.tar.gz
BuildRoot:      %{mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXX}

%description
THIS IS A WEB ELOAM PACKAGE

%prep
#%setup -n %{name}
%setup -q

%build

%install
mkdir -p %{buildroot}/usr/local/lib
mkdir -p %{buildroot}/etc/ld.so.conf.d/
mkdir -p %{buildroot}/etc/udev
mkdir -p %{buildroot}/opt/eloamwss
mkdir -p %{buildroot}/opt/eloamwss/lib
mkdir -p %{buildroot}/opt/eloamwss/doc
mkdir -p %{buildroot}/opt/eloamwss/Image
mkdir -p %{buildroot}/opt/eloamwss/icon

install eloamwss.conf %{buildroot}/etc/ld.so.conf.d/
install eloamwss/eloam.rules %{buildroot}/etc/udev
install -m 0755 eloamwss/*.sh %{buildroot}/opt/eloamwss
install -m 0755 eloamwss/eloamwss %{buildroot}/opt/eloamwss
install eloamwss/lib/* %{buildroot}/opt/eloamwss/lib
install eloamwss/doc/* %{buildroot}/opt/eloamwss/doc
install eloamwss/icon/* %{buildroot}/opt/eloamwss/icon



%define _unpackaged_files_terminate_build 0

%clean
rm -rf $RPM_BUILD_ROOT


%files
%defattr(-,root,root,-)
/opt/eloamwss/*
/etc/ld.so.conf.d/eloamwss.conf
/etc/udev/eloam.rules


%post
chmod 755 /opt/eloamwss/*.sh
chmod 755 /opt/eloamwss/eloamwss
ldconfig

%preun
/opt/eloamwss/shutdown.sh

%define __debug_install_post \
%{_rpmconfigdir}/find-debuginfo.sh %{?_find_debuginfo_opts} "%{_builddir}/%{?buildsubdir}"\
%{nil}

 

 

 

 

 

 

 

 

 

 

 

原文地址:http://www.cnblogs.com/shiyixirui/p/16915752.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性