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

[请教]在linux下如何制作一个rpm包

    来源: 互联网  发布时间:2016-01-04

    本文导语:  我想在这个rpm包里实现把几个tar.gz包解压到几个指定的目录,然后解压的过程。在网上搜了些关于rpmbuild的东西,知道制作rpm包之前必须的要写一个spec的脚本。但是对这个spec脚本怎么写不是很清楚,主要是不知道怎...

我想在这个rpm包里实现把几个tar.gz包解压到几个指定的目录,然后解压的过程。在网上搜了些关于rpmbuild的东西,知道制作rpm包之前必须的要写一个spec的脚本。但是对这个spec脚本怎么写不是很清楚,主要是不知道怎么让这些要tar.gz包就最后放进这个*.rpm包里面去。困惑啊,哪位达人帮帮小弟

|
其实很简单,找个例子修改一下就可以了,以后就一直用那个例子!
首先你要知道怎么打TAR包,很简单,就一条命令,如: tar zcf xxx.tar.gz *


1、到/usr/src/redhat/ 目录下(可以看到五个目录,当然也可以自己创建);
2、编写spec文件(也就是打RPM包的脚本),比如命名为: xxx-1.0.0.spec, 然后放到SPECS目录下;
3、把你准备要打进RPM包的程序以及相关文件制作成一个TAR包,
比如:xxx-1.0.0.tar.gz  (xxx为软件名称,1.0.0为版本号,20051124为日期)
4、然后把xxx-1.0.0.tar.gz拷贝到SOURCES目录下;
5、然后再进入SPECS目录下;执行命令: rpmbuild -bb xxx-1.0.0.spec;
6、然后再到RPMS目录下的子目录里去找生成好的RPM包,这个RPM就可以用于安装和卸载了。

spec文件的例子很多,网上应该可以找到,我本来有一个现成的,但是非常的长,不便修改,所以你还是要找一下,也可以按照上面他们提供的语法和格式自己编写一个spec文件

|
http://www-128.ibm.com/developerworks/cn/linux/management/package/rpm/part1/

http://www.magiclinux.org/drupal/?q=node/827

|
制作RPM软件包并不是一件复杂的工作,其中的关键在于编写SPEC软件包描述文件。下面以我制作小赵编辑器LZE的软件包(lze-6.0-1.i386.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 雨亦奇
43 - 增加多窗口操作
44
45 * Mon Mar 24 1997 雨亦奇
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)。

    
 
 

您可能感兴趣的文章:

  • 高分请教关于制作RedHat8.0引导盘的问题
  • 请教高手我制作的redhat启动光盘为什么不能启动?
  • 请教一下:Linux下如何编程制作系统托盘
  • 高分请教,如何在FreeBSD上制作以web方式的控制台?就像那些ADSL Moden之类的硬件通过在在IE上输入http://192.168.1.1然后通过登录就可以
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 向linux达人请教linux下5.1声道测试工具
  • 请教一下,如果想在linux下开发java,选哪个版本的linux好一点
  • 小弟想请教,如果现在不像装linux了怎样把linux的分区改回ntfs格式的?
  • 请教:linux启动盘和一张盘的linux有何区别?
  • 请教linux高手,在Linux
  • 在linux下面怎么安程序啊?我刚裝了一个 linux,下了一个迅雷安装程序,可是不知道怎么安装啊?真心请教。
  • 初次接触linux,关于linux 用户权限问题请教!
  • 请教linux 下的adsl拨号问题.
  • 【请教】LINUX 下SNMP的MIB开发
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 各位大狭!小弟初学Linux,请各位列举学Linux的网站,留下QQ,Email以向各位请教!!!多谢了!!!
  • 菜鸟请教Linux
  • 高手看过来:请教如何在移动硬盘上安装Linux?
  • 请教:如何在Linux下获得EDID信息
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 请教大家一下,linux运维方面的书应该读什么?
  • 请教:如何直接使用RedHat Linux 9的ISO文件安装Linux?
  • 我的linux装不上啊???请教高手
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教,如何用虚拟订机安装liux
  • 请教一个opengl的问题
  • 请教unix常用命令命令问题
  • 请教两个shell
  • 请教高手:如何用gnome/gtk编写托盘程序
  • 请教semop()函数的用法、含义
  • 请教个,关于C编译器参数CFLAGS的问题(真诚请教,分不够了全部送出)


  • 站内导航:


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

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

    浙ICP备11055608号-3