关闭

如何在Linux中创建RPM包?

发表于:2012-3-14 09:49

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Dan 译    来源:51Testing软件测试网采编

  为了在Linux系统中管理软件,Linux的各种版本都使用软件包。软件包的好处就是,在安装过程中系统会追踪那些安装文件,这使得日后进行管理更加简单。在把定制软件添加到你的Linux服务器之前,把它捆绑成一个RPM包会是一个好主意。本文中,你将学习如何创建自己的RPM包。

  RPM是Red Hat Enterprise Linux和SUSE Linux Enterprise Server以及它们衍生版本默认的包格式。如果你想在多台Linux服务器上安装定制软件,创建一个RPM包很有用。把这个RPM包放在资料库中,所有能够连接到这个资料库的服务器以后更新软件时会更加方便。

  RPM包包含两个文件:一个shell脚本以及一个README文件,README文件描述了如何使用该shell脚本。如果你能创建有两个文件的软件包,那么你也可以创建更大的软件包。

  创建简单RPM包的过程

  请注意,特定任务的用户帐户之间有明确的区别。如果会有错误发生,那么请使用普通用户帐户,你如果使用根用户帐户进行操作则可能会让你意外地抹去磁盘中的许多文件。请按照以下过程建立自己的RPM包:

  1、创建一个目录结构,把RPM包所需要的文件包含进去。这个结构的名字通常以RPM包的名字命名,包括它的版本号。这个目录放在什么地方关系不大。在这个例子中,它处于当前用户帐户的home目录下。我们把这个目录命名为test-1.0。下面的命令告诉你如何创建并命名这个目录,已经如何把所需要的文件放在里面:

$ mkdir ~/test-1.0
$ cd ~/test-1.0
$ echo echo this is a test > test.sh
$ chmod +x test.sh
$ echo just launch the script > README

  2、现在,RPM包所需要的全部文件都在这里了。下一步就是创建一个包含RPM文件的.tar.gz文件。这个目录还让创建档案文件更加简单。该.tar.gz文件需要位于名为rpmbuild/SOURCES的目录下---这个文件夹通常也位于当前用户的home目录中。你还需要一个.specs文件,这个文件包含所有建立RPM包的规范说明。该.specs文件是RPM包的核心组件,里面包括全部文件的指示,RPM包中的文件按照这些指示进行安装。该.specs文件应该放置在一个SPECS目录下。

  第一个cd命令确保rpmbuild目录位于当前用户的home目录下。请以普通用户身份执行以下命令:

$ cd
$ mkdir -p ~/rpmbuild/SOURCES
$ mkdir -p ~/rpmbuild/SPECS
$ tar -cvzf ~/rpmbuild/SOURCES/test-1.0.tar.gz test-1.0

  3、现在文件都各就各位,请以普通用户身份创建一个说明文件。Rpmbuild命令将会找到所有需要的指示来创建该文件。在最近的Red Hat和衍生版本中,创建说明文件很容易:只需要用vim编辑器创建一个包含所有内容的文件,扩展名设为.spec即可。下面是test-1.0rpm包中该文件的样子(模板改变的地方已用粗体标出):

  Name名称: test测试

  Version 版本: 1.0

  Release发布: 1%{?dist}

  Summary摘要: A test package一个测试

  Group分类: Test Packages 测试包

  License许可证: GPL

  URL:http://test.example.com

  Source0: %{name}-%{version}.tar.gz

  BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)

  BuildRequires: /bin/rm, /bin/mkdir, /bin/cp

  Requires: /bin/bash, /bin/date

  %description

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号