> /etc/profile 然后用rpm -ba my_rpm.spc进行创建,此时“....">

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

高手请进,制作rpm包问题

    来源: 互联网  发布时间:2014-12-13

    本文导语:  我在redhat7.2中制作rpm包,spc文件已经写好了,其中%install部分有一个语句: * 在/etc/profile文件中加一句话 echo "MY_HOME=/usr/local" >> /etc/profile 然后用rpm -ba my_rpm.spc进行创建,此时“MY_HOME=/usr/local“加到/etc/profile中了。...

我在redhat7.2中制作rpm包,spc文件已经写好了,其中%install部分有一个语句:
* 在/etc/profile文件中加一句话
echo "MY_HOME=/usr/local" >> /etc/profile
然后用rpm -ba my_rpm.spc进行创建,此时“MY_HOME=/usr/local“加到/etc/profile中了。但我用创建好的my_rpm包进行安装:rpm -ivh my_rpm.rpm 进度条显示100%,安装成功,而/etc/profile文件中却没有“MY_HOME=/usr/local“这句话(在其它机器安装也是如此)。请高手指点

|
%install下又分为四个阶段,你把echo your_sentence >> /etc/procfile放到%pre后面即可。

|
转自:
   RPM是Redhat Package Manage的缩写。透过RPM的管理,使用者可以把Source Code包装成一种Source和Binary的档案形式。利用它,我们可以用Binary的档案进行安装,用 Source 的档案形式重新整理包装。许多Linux爱好者对安装RPM包比较熟悉,但对如何在Linux下制作RPM包不甚了解,因此,我将通过实例,讲解如何在Linux下制作RPM包。 

1. 最初要求 
为了创建RPM,你需要RPM要编译的源代码、一个rpmrc文件(设置一些RPM的缺省值并控制它的行为),以及一个spec文件(控制包的建立过程)。这里假定已有其它的开发环境(gcc、make、install、vi等),而且你的源代码已经编译成功。 

2. 制作流程 
1)确定/etc/rpmrc(也可能是/usr/lib/rpm/rpmrc)已经正确设定。rpmrc文件控制几乎所有RPM的行为。如果你想重载一个或多个全局设置,可以在~/.rpmrc文件中包含你的定制。可以使用rpm--showrc来显示RPM的当前设置。大多数情况下,rpmrc 文件的设置不需要改变。 

2)取回所建造的源代码并放入正确的目录中。 

3)编写spec文件。 

4)使用rpm -ba 来构造整个程式套件。 

3.应用举例 
现在以Lynx实用程序来介绍构造RPM包的整个过程。Lynx是在文本方式下的Web浏览器,可以从ftp://www.slcc.edu/pub/lynx/取得。 

1)得到lynx源代码。 

2)lynx-2.8.spec文件的详细编写方法略。 

3)使用RPM来构造包。 

按照rpmrc文件的缺省设置,应该把lynx-2.8.spec文件放入SPECS/目录下,然后执行: 

rpm -ba lynx-2.8.spec 

其中-b 表示prep、compile、install,并build出一份binary RPM包。-a 表示执行所有的build动作,即还要build 出一份source code RPM包。 

如果一切顺利的话,可以在RPMS/目录下找到lynx-2.8-4.i386.rpm文件。可以执行: 

rpm -qpl lynx-2.8-4.i386.rpm 

来观察RPM 包中是否包含了要求的所有文件。 

为了测试它的正确性,可以拷贝此文件到另一台机器上,并执行: 

rpm -ivh lynx-2.8-4.i386.rpm 

进行安装测试。 

一旦测试成功,就可以上载你的大作,享受成功的喜悦。 

小结 

制作RPM包需要开发人员做很多工作。比如不仅要懂得c/c++编程,而且还要能熟练掌握像make、autoconf、diff、patch、tar、install等工具的使用并能编写spec文件。但从长远来看,应用RPM,在软件包的维护和方便性方面使得开发者受益。 

|
制作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)。 

(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段 

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

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

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

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

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.十六进制编辑功能,如虎

    
 
 

您可能感兴趣的文章:

  • 请教高手我制作的redhat启动光盘为什么不能启动?
  • 我在suse下面写了c程序软件,如何才能制作成安装版的软件了,请高手指点
  • 嵌入式Qt制作的窗口,不能显示汉字,请高手指教
  • 有高手成功制作文件系统吗?请进帮忙
  • JMF制作mp3播放器如何?那位高手有这方面的参考代码?多谢!
  • 请教高手lvs的奇怪问题,我挺着急,希望高手别潜水,就就我,先谢谢了
  • 各个高手看看这个问题!本人第一次学习java所以要各位高手的帮助。。
  • 高手请进,中文乱码问题,这是我同一个问题的第五个帖子了,大伙帮忙,心情好郁闷.期待高手.
  • 初学者的问题,关于LINUX的安装的问题,谢谢高手执教!!!
  • EJB问题,请教高手(非高手莫进)
  • 一个关于日期的问题!(菜鸟问题,请高手不吝赐教)
  • 一个对高手来说很弱智的问题!关于安装的问题!谢谢!
  • 各位高手:光盘安装Linux9出现问题,请指教!
  • 一个严重的问题,高手请进。。。。
  • 求助ftp编程高手一个问题----有关免费包libftp-5.0
  • 有关Diskedit的问题,高手请进!
  • 问个关于服务器的问题?高手进
  • 关于字体显示的问题,请高手指点!!
  • fedora6安装花屏问题!!!!!!!急求高手执教!!!!!!!
  • freebsd做前台 使用win2000做储存器问题问题(非高手免进)
  • 100分请教高手 LCD 颜色变色的问题
  • 统计进入论坛的人数问题一侧,与其他问题不同的。高手解答!
  • 求教高手一个简单的XML问题
  • webmail问题,请高手帮忙!!!谁会使用IMP 3.0????!!!
  • 问题太难,请教高手,关于raid1功能的错误检测的实现
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高手,高手,高高手请进!
  • 有熟悉EXIM的高手高手么??
  • to 高手:学java应该怎样一步步学习,从菜鸟到高手.
  • 高分请高手,高手定能解决
  • 请问高手在linux中用什么命令可以做linux的启动盘???在等待高手??
  • 有高手研究Agent++麽?里面有个thread.h,蛮难读的,请高手指点
  • 难道高手区里的人就是高手?
  • 在dos下用bc31挑战高手******开发mssql程序,连接时报link err:undefined symbol GETNOTE in module DBEXTERN?(挑战高手)
  • 真正的linux高手,请看过来,看你符合高手标准不?
  • 难道这没有高手吗?难道这没有乐于助人的高手?(高分酬谢62+50+50)
  • 关于我对linux高手用yum,非高手用源码的理由
  • 高手救命,很急——ORACLE817安装在UNIXWARE711上,手工启动数据库后在netasst中连接错误,高手帮我看看?
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 我是新手,高手,高手,快来救我
  • 请各位JAVA高手,网业高手看过来,我把能给的分都送出!!!只能给37分,哎!!
  • eWEEK沙龙征集高手座谈
  • [纳闷贴]为什么那么多人非说要成为高手就不要用X,难道Linux就是为了成为高手用的?
  • 寻找UNIX高手——IBM UNIX高手招募
  • shroot(刘茫)*********速来领分。(*欢迎unix高手光临*)


  • 站内导航:


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

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

    浙ICP备11055608号-3