当前位置:  技术问答>linux和unix

请问:在LINUX下RPM包如何制作?

    来源: 互联网  发布时间:2015-06-29

    本文导语:  请问:在LINUX下RPM包如何制作? | 1.mkdir -p /usr/src/dist/{BUILD,RPMS/i386}  上述命令用于创建两个目录/usr/src/dist/BUILD与/usr/src/dist/RPMS/i386,前一个目录是RPM建立软件包时用的目录,后一个是RPM输出软...

请问:在LINUX下RPM包如何制作?

|
1.mkdir -p /usr/src/dist/{BUILD,RPMS/i386} 

上述命令用于创建两个目录/usr/src/dist/BUILD与/usr/src/dist/RPMS/i386,前一个目录是RPM建立软件包时用的目录,后一个是RPM输出软件包的目录,我的LZE软件包lze-6.0-1.i386.rpm就是在此目录下存放的。这两个目录不创建,运行rpm命令建包时将报错退出。 

注意:输出目录名i386,意味着这是台X86的机器。如果你的机器与此体系不同,则目录名也要相应更换。 

2.编写软件包描述文件lze-6.0-1.spec 

要想制作一个软件包,就必须写一个软件包描述文件(SPEC)。这个文件中包含了软件包的诸多信息,如软件包的名字,版本,类别,说明摘要,创建时要执行什么指令,安装时要执行什么操作,以及软件包所要包含的文件列表等等。 

LZE软件包描述文件lze-6.0-1.spec比较简单,仅用于创建二进制程序包。其描述文件内容如下:(每行开头的数字为所在行在文件中的行号) 

1 Summary:小赵全屏幕中英文多窗口多功能编辑器(Linux/UNIX系统适用) 
2 Name:lze 
3 Version:6.0 
4 Release:1 
5 Vendor:纵横软件制作中心(Email:zhsoft@etang.com) 
6 Copyright:Share 
7 Group:Applications/Editors 
8 Source:http://zhsoft.myetang.com/lze-6.0.tar.gz 
9 %description 
10 小赵编辑器,是为使用SCO UNIX,Linux多用户系统的广大用户专门设计的全屏幕多窗 
11 口中英文多功能编辑器。 
12 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十 
13 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特 
14 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎 
15 添翼。10.即时翻译,按到即译。 
16 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。 
17 它将在工作中助您一臂之力,轻松上阵,游刃有余! 
18 
19 %prep 
20 # prep start. 
21 
22 %build 
23 # build start. 
24 cp /root/{读我,版权声明} . 
25 
26 %install 
27 # install start. 
28 
29 %files 
30 %defattr (-,root,root) 
31 %doc 读我 
32 %doc 版权声明 
33 %config /etc/funkey.def 
34 %config /etc/inputme.def 
35 
36 /usr/bin/lze 
37 /usr/bin/lzeime.py 
38 /usr/bin/lzeime.wb 
39 
40 %changelog 
41 
42 * Fri May 1 1998 Leon
43 - 增加多窗口操作 
44 
45 * Mon Mar 24 1997 Leon
46 - 增加块操作命令 
47 

描述文件说明如下: 

(1)文件头 

它包含以下几个域: 

* Summary: 
软件包一句话说明,一行有效。 
* Name: 
软件包的名字,RPM用该名字与版本号,释出号及体系号来命名软件包。如,本例输出的软件包名为lze-6.0-1.i386.rpm。 
* Version: 
软件版本号。仅当软件较以前有较大改变时才增加版本号。 
* Release: 
软件释出号。若软件较以前改变较小,则仅增加释出号,不改变版本号。 
* Vendor: 
软件开发者的名字。 
* Copyright: 
软件包所采用的版权规则。具体有: GPL(自由软件),BSD,MIT,Public Domain(公共域),Distributable(贡献),commercial(商业),Share(共享)等。 
* Group: 
软件包所属类别,具体类别有: 
Amusements/Games (娱乐/游戏) 
Amusements/Graphics(娱乐/图形) 
Applications/Archiving (应用/档案) 
Applications/Communications(应用/通讯) 
Applications/Databases (应用/数据库) 
Applications/Editors (应用/编辑器) 
Applications/Emulators (应用/仿真器) 
Applications/Engineering (应用/工程) 
Applications/File (应用/文件) 
Applications/Internet (应用/因特网) 
Applications/Multimedia(应用/多媒体) 
Applications/Productivity (应用/产品) 
Applications/Publishing(应用/印刷) 
Applications/System(应用/系统) 
Applications/Text (应用/文本) 
Development/Debuggers (开发/调试器) 
Development/Languages (开发/语言) 
Development/Libraries (开发/函数库) 
Development/System (开发/系统) 
Development/Tools (开发/工具) 
Documentation (文档) 
System Environment/Base(系统环境/基础) 
System Environment/Daemons (系统环境/守护) 
System Environment/Kernel (系统环境/内核) 
System Environment/Libraries (系统环境/函数库) 
System Environment/Shells (系统环境/接口) 
User Interface/Desktops(用户界面/桌面) 
User Interface/X (用户界面/X窗口) 
User Interface/X Hardware Support (用户界面/X硬件支持) 
* Source: 
源程序软件包的名字。 
* %description: 
软件包具体说明,可写在多个行上。示例中第10-18行均为说明。 

(2)%prep段 

这个段是预处理段,通常用来执行一些解开源程序包的命令,为下一步的编译安装作准备。%prep和下面%build,%install段一样,除了可以执行RPM所定义的宏命令(以%开头)以外,还可以执行SHELL命令,命令可以有很多行。示例中,本段只有第20行一行注释语句(以#开头),不执行任何操作。 

(3)build段 

本段是建立段,所执行的命令为生成软件包服务。 

本段第23行是注释行,第24行执行的是拷贝命令,将/root目录下的两个文件(读我,版权声明)拷贝到软件包建立目录(/usr/src/dist/BUILD)。 

(4)%install段 

本段是安装段,其中的命令在安装软件包时将执行。示例中,本段只有第27行一行注释语句(以#开头),不执行任何操作。 

(5)%files段 

本段是文件段,用于定义软件包所包含的文件,分为三类--说明文档(doc),配置文件(config)及执行程序,还可定义文件存取权限,拥有者及组别。本段中: 

第30行-%defattr宏:定义文件存取权限为默认值(用-表示默认值,也可选择八进制数值,如0777等),定义拥有者为root,定义组别为root。 

第31,32行-%doc宏:用该宏定义软件包所含的说明文档,若没有指定目录,则目录为/usr/src/dist/BUILD。每个宏只能定义一个说明文档。说明文档一般安装在“/usr/doc/软件包名-版本号-释出号”目录下。 

第33,34行-%config宏:定义软件包应用的配置文件,象sendmail.cf,passwd等。当卸载含有配置文件的软件包时,任何未作改动的配置文件将被删除,改动过的配置文件将自动改名,后缀加上.rpmsave,以便再度安装这个软件包时可以迅速恢复使用。 

第36-38行-为软件包所包含的文件名列表,可以写许多行。如果文件名指示的是一个目录,则该目录下的所有文件将被包含在软件包中,注意不要弄错了。 

(6)%changelog段 

本段是修改日志段。你可以将软件的每次修改记录到这里,保存到发布的软件包中,以便查询之用。 

每一个修改日志都有这样一种格式:第一行是:* 星期 月 日 年 修改人 电子信箱。 

其中:星期、月份均用英文形式,用中文会出错。 

接下来的行写的应是修改了什么地方,可写多行。一般以减号起始,便于查阅。

|
http://www-900.ibm.com/developerWorks/cn/linux/management/package/rpm/part1/index.shtml
http://www-900.ibm.com/developerWorks/cn/linux/management/package/rpm/part2/index.shtml

|
up

|
3.rpm -bb lze-6.0-1.spec 

用此命令生成软件包,执行后屏幕将显示如下信息:(每行开头为行号) 

1 Executing: %prep 
2 + umask 022 
3 + cd /usr/src/dist/BUILD 
4 + exit 0 
5 Executing: %build 
6 + umask 022 
7 + cd /usr/src/dist/BUILD 
8 + cp /root/读我 /root/版权声明. 
9 + exit 0 
10 Executing: %install 
11 + umask 022 
12 + cd /usr/src/dist/BUILD 
13 + exit 0 
14 Processing files: lze 
15 Executing: %doc 
16 + umask 022 
17 + cd /usr/src/dist/BUILD 
18 + DOCDIR=/usr/doc/lze-6.0 
19 + export DOCDIR 
20 + rm -rf /usr/doc/lze-6.0 
21 + /bin/mkdir -p /usr/doc/lze-6.0 
22 + cp -pr 读我 /usr/doc/lze-6.0 
23 + cp -pr 版权声明 /usr/doc/lze-6.0 
24 + exit 0 
25 Finding Provides: (using /usr/lib/rpm/find-provides)... 
26 Finding Requires: (using /usr/lib/rpm/find-requires)... 
27 Requires: ld-Linux.so.2 libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) 
28 Wrote: /usr/src/dist/RPMS/i386/lze-6.0-1.i386.rpm 

第28行显示: 制作完成软件包,名字为lze-6.0-1.i386.rpm,在/usr/src/dist/RPMS/i386目录下。 

4.软件包制作完成后,可用以下命令查询一下,看看效果。如果不满意的话,可以再次修改软件包描述文件,重新运行上一步命令,产生新的RPM软件包。 

转到/usr/src/dist/RPMS/i386目录,执行以下命令: 

(1)rpm -qpi lze-6.0-1.i386.rpm 

此命令用于查询指定软件包的头部信息,结果如下:(以行号开头) 

1 Name: lze Relocations: (not relocateable) 
2 Version : 6.0 Vendor: 纵横软件制作中心(Email:zhsoft@etang.com) 
3 Release : 1 Build Date: 2001年07月12日 星期四 13时33分21秒 
4 Install date: (not installed) Build Host: 纵横软件制作中心 
5 Group : Applications/Editors Source RPM: lze-6.0-1.src.rpm 
6 Size: 532081 License: Share 
7 Summary : 小赵全屏幕中英文多窗口多功能编辑器(Linux/UNIX系统适用) 
8 Description : 
9 小赵编辑器,是为使用SCO UNIX,Linux多用户系统的广大用户专门设计的全屏幕多窗 
10 口中英文多功能编辑器。 
11 它主要有以下十大特点:1.全屏幕菜单操作。2.显示方式多样。3.块操作丰富。4.十 
12 字制表功能强大。5.多窗口操作灵活自如。6.文件操作功能齐全。7.解释输出功能独具特 
13 色。8.自带中文输入法(增强五笔和增强拼音),实用方便。9.十六进制编辑功能,如虎 
14 添翼。10.即时翻译,按到即译。 
15 总之,小赵编辑器会成为您在UNIX,Linux系统上编制程序和书写一般性文稿的好帮手。 
16 它将在工作中助您一臂之力,轻松上阵,游刃有余! 

(2)rpm -qpl lze-6.0-1.i386.rpm 

此命令用于查询指定软件包的全部文件列表,将命令中的-qpl换作-qpd,将显示文档文件列表,换作-qpc将显示配置文件列表。 

命令执行结果如下:(行号开头) 

1 /etc/funkey.def 
2 /etc/inputme.def 
3 /usr/bin/lze 
4 /usr/bin/lzeime.py 
5 /usr/bin/lzeime.wb 
6 /usr/doc/lze-6.0 
7 /usr/doc/lze-6.0/版权声明 
8 /usr/doc/lze-6.0/读我 

查询结果一切正常,软件包制作到此结束。 

小结 

在Linux下制作RPM软件包关键在描述文件,写起来着实简单,根据上述步骤生成软件包后,就可以对外发布了。在其它机器上用安装命令(rpm -i 包名)可安装这个软件包,若想卸载,可用命令(rpm -e 包名)来卸载这个包,非常方便。

    
 
 

您可能感兴趣的文章:

  • 请问vmware下有什么软件可以制作虚拟软盘吗?
  • 请问在linux下如何制作PDF文档
  • 请问怎么制作安装程序
  • 请问Gnome程序如何制作?
  • 请问:怎样制作FreeBSD的安装盘?
  • 请问:哪种工具可以制作安装程序,安装程序是基于java的或是能在aix运行?
  • 请问如何制作Solaris Unix的安装软盘(用于启动安装)?
  • 请问如何制作freeBSD的安装启动光盘
  • 请问我写的程序如何制作makefile
  • 请问已经生成了Image文件,如何制作可以引导系统的Linux光盘
  • 请问哪里有InstallShield Java版的免费下载?或者是其他能够跨平台的安装制作工具
  • 请问那里有兼职的程序员可以做?(语言限于java)有网页制作的也可以呀!
  • 请问如何在Solaris下制作安装程序
  • 请问在linux下制作动态库应该注意些什么(欢迎大家讨论)
  • 请问如何制作linux下的无盘启动文件?
  • 弱弱地问,请问从哪里可以下载到新版本常用的linux,可以直接制作成光盘进行安装吗?
  • 请问如何将Crystal Reports制作的报表嵌入到网页中。
  • 请问1.44M的boot.img如何制作引导盘(redhat)的,如要用其他的程序,可以发到我的信箱中去吗?
  • 请问如何制作一个小型的linux呢.
  • 求教: 请问怎样使用ncurses的Field制作一个密码输入框,输入密码显示的*号 谢谢各位
  • 请问:请问哪里有关于linux基本操作命令讲解的资料下载,最好是幻灯片格式的.
  • 搞了几年软件开发,Linux没有摸过,请问安装Linux什么版本比较好
  • 请问LINUX内核下,哪些文件夹下的文件是跟LINUX的硬件平台无关的?
  • 请问初学习Linux及Linux下编程的好书?
  • 我下载了一个LINUX,是.ISO文件格式的,请问怎么在用硬盘安装LINUX啊?
  • 请问:除了Red Hat Linux还有什么其他什么Linux?
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 以前没有接触过linux,现要在linux上写一个软件,请问我要看那些资料!
  • 我想用Linux的串口和S3c2410x连接,请问在Linux里面怎么找到那个超级终端?
  • 初学Linux要看什么书?, 请问Linux下C语言编程怎么设置环境?
  • 本人想学习linux,请问哪里有比较小的linux版本
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:我知道路由器的telnet密码,但忘记了enable 密码,请问如何是好?
  • 请问那里有SYBASE的jbdb 2.0下载;jspsmartupload可以直接将文件上传到数据库,请问如何使用
  • 请问最新的reahat9.0是基于什么核心的?2.4?2.6?请问那里能下载?
  • 请问,我试图用#admintool&图形工具命令来安装sun workshop5.0,为什么进入的却是用户管理界面?请问具体该如何在solaris下安装应用软件
  • 请问在Redhat 9里,我从登录就是图形介面,请问如何在图形介面内进入命令行方式呢,谢谢
  • 请问玩过SOLARIS的高手门,在不正常关机后,就不能启动到windows公用桌面了,只能在命令提示模式下了,请问怎么解决这个问题啊?急~!~!
  • 请问:我在redhat下装了bochs-2.2.1-1.rpm,.装了后,想设置一下,但找不到bochsrc.fda.bxrc,请问这个文件在哪个曰录下啊。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • 请问:在GCC里的C程序里的变量的声明是不是只能在前面,而且相同类型的变量的声明只能放在一起?如果不是,请问怎么样可以解决这个问题.
  • 请问各位大虾,小弟今天开始学jsp了,这学期我们有java课,所以已经下载了jdk(好象是1.2),请问我的98环境怎么配置jsp环境呀?我的jdk可以运行.java程序,别的我就不知道了....谢谢!
  • 主机是WIN2000,我用的是LUNIX,请问是否可以共享上网? 如果可以请问如何设置? 500分答谢,龟儿食言!
  • 请问linux下GUI开发的问题!
  • 请问出现fstab文件丢失该怎么修复呀?
  • 请问这个方法如何调用?
  • 请问一个奇怪的问题!
  • 请问在网页中打开的新窗口,如何让其居中。
  • 请问我该学什么了
  • 请问安装zhcon,cxterm问题
  • 非常急! 请问daemontools 在red hat 9下的安装问题? 在线等待
  • 请问如何在一台单机上装VMware的网络访问问题?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3