您的位置:首页 > 产品设计 > UI/UE

使用rpmbuild创建rpm包

2017-09-05 10:19 477 查看

文件目录介绍

根目录,下面介绍需要用到的文件夹

/root/rpmbuild



目录介绍

SOURCE目录

资源目录,存放需要打包的资源,如jar包,脚本,配置文件等

SPEC目录

打包脚本存放目录,如下图



RPMS目录

打成的rpm包存放目录

如下图



spec脚本介绍

%define summary your package description #软件包的内容概要
%define name YourPackageName  #定义rpm包的包名
%define version 8.0  #定义rpm包的版本号,软件的实际版本号
%define release 170505  #定义rpm包的版本号(svn提交的版本号)
%define arch noarch  # 指编译的目标处理器架构
%define group SFY
Summary: %{summary} #引用上面的定义,下同
Name: %{name}
Version: %{version}
Release: %{release}  # 发布序列号
License: Commercial #软件授权方式,通常就是GPL
Group: %{group}
BuildRoot: %{_builddir}
BuildArchitectures: %{arch}
AutoReqProv: no
Vendor: SFY AG
Requires: unzip  #需要依赖的rpm包,安装此rpm包需要依赖unzip的rpm包
Prefix: /opt  #这个主要是为了解决今后安装rpm包时,并不一定把软件安装到rpm中打包的目录的情况。这样,必须在这里定义该标识,并在编写%install脚本的时候引用,才能实现rpm安装时重新指定位置的功能
Prefix: /var/opt
#下面为主体
%prep  #预处理脚本

%build  #开始构建包

%install  #开始把软件安装到虚拟的根目录中

# 下面的 $RPM_BUILD_ROOT 参数为必传参数,不然创建会失败
install -m 0755 -D /root/rpmbuild/SOURCES/ant_build/dom4j-1.6.1.jar $RPM_BUILD_ROOT/opt/sfy/jar/dom4j-1.6.1.jar #需要打进rpm包的jar包
install -m 0640 -D /root/rpmbuild/SOURCES/config/yourconfig.properties $RPM_BUILD_ROOT/var/sfy/config/yourconfig.properties  #需要打进rpm包的配置文件

%clean #清理临时文件

%files #定义哪些文件或目录会放入rpm中
%defattr (-,root,root,-)# 指定包装文件的属性,分别是(mode,owner,group),-表示默认值,对文本文件是0644,可执行文件是0755,这里不能遗漏(指上面%install中所涉及的文件路径)
/opt/sfy/config/jar

%defattr (-,sfy-adm,sfy,-)#csi-adm, csi 为自定义的用户与用户组,及上面的
/var/sfy/config

%description #描述
SFY TAS Connector package

%pre #安装此rpm包前需要检验环境
if [[ ! -f ${RPM_INSTALL_PREFIX}/sfy/install.info ]]
then
echo "Could not find ${RPM_INSTALL_PREFIX}/sfy/install.info !"
echo "Base packages has been installed somewhere else or the file has been removed!"
exit 255
fi

%post
# Read installation info variables
eval `grep -v \* /var/sfy/install.info`

%preun

%postun


脚本执行命令:

rpmbuild -bb scriptname.spec


注意事项

spec脚本需要转dos字符,不然会报错

若引用的文件不存在也会报错

报错:

error: Installed (but unpackaged) file(s) found:



原因:在spec脚本的%defattr (-,root,root,-)中添加对应的路径

其他问题可参照连接

https://fedoraproject.org/wiki/How_to_create_an_RPM_package/zh-cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  rpm linux