如何使用rpm打包文件

上传人:ji****72 文档编号:37694942 上传时间:2018-04-21 格式:DOC 页数:10 大小:144KB
返回 下载 相关 举报
如何使用rpm打包文件_第1页
第1页 / 共10页
如何使用rpm打包文件_第2页
第2页 / 共10页
如何使用rpm打包文件_第3页
第3页 / 共10页
如何使用rpm打包文件_第4页
第4页 / 共10页
如何使用rpm打包文件_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《如何使用rpm打包文件》由会员分享,可在线阅读,更多相关《如何使用rpm打包文件(10页珍藏版)》请在金锄头文库上搜索。

1、 用Rpmbuild打包总结这些都是对这些软件简单的介绍,一些基本的信息!Name:SipMonitorVersion:1.0Release:1%?distSummary:for qt study Group:Development/Tools License:GPLURL:http:/ %_tmppath/%name-%version-%release- root%descriptionThe GNU wget program downloads files from the Internet using the command-line.%prep /这个是编译之前预处理!一般就是解压,然

2、后进入到解压文件夹下。下面有一段文字对%prep与%setup的一些参数讲解很详细的文章%setup -q%build%install%_rm -rf %buildrootmake #%makeinstall make install %_install -d %buildroot%_datadir/SipMonitorcp -a ./* %buildroot%_datadir/SipMonitor%postcp %_datadir/SipMonitor/sip_monitor %_bindirln -sf %_datadir/SipMonitor/sip_monitor /root/Desk

3、top%postun%_rm -rf %_bindir/sip_monitor%_rm -rf /root/Desktop/sip_monitor%cleanrm -rf $RPM_BUILD_ROOT%files%_datadir/SipMonitor%changelog* Wed Sep 10 2008 Wangjun- Make the spec file,first%prep : 此为预处理段,其内容为预处理脚本程序。该程序完成以下任务:* 建立软件编译用目录;* 将源程序解压缩;* 通过打补丁,升级源程序;* 执行其它一些操作,使源程序随时可进行编译。在此脚本程序中,可使用如下两个宏

4、命令:1.1.1 %setup 这个宏利用系统中的gzip与tar等命令,来解压源程序包。RPM会自动探测源程序包是否压缩,如果压缩,它会用gzip将其解压缩,否则直接用tar命令展开包中文件。其使用格式为:%setup -n name -c -D -T -b N -a N注: 所括为可选项。(1) 当没有任何选项时:这个宏用来解压默认的源程序包(由文件头Source或Source0域指定)。注意:源程序包中的文件应用“软件名-版本号“作为其上层目录,这样%setup宏就可以正常工作。如果不以“软件名-版本号“作为其上层目录,则%setup宏工作时有一个指令“cd 软件名-版本号“(转目录)会

5、因为系统中没有此目录而出错退出(除非在此宏上面加上建立此目录的命令)。(2) -n name : 上面已经谈到,源程序包中的文件应采用“软件名-版本号“作为上层目录。如果用了别的什么目录(如name),%setup宏无法正常工作,那该怎么办?没关系,可以用-n选项,引用一下这个目录(name)就行了。假如我的LZE源程序包中的文件是以lze为上层目录,那么我就可以用“%setup -n lze“宏命令来解压缩该包。(3) -c : 此选项的作用是创建上层目录(“软件名-版本号“目录)并转到这个目录。对于LZE软件,其效果相当于在上例的第4行与第5行之间加上这么两行命令:mkdir -p lze

6、-6.0 cd lze-6.0 它适用的情况是:有的源程序包是在源程序所在目录下打的包,所以其中的文件都没有上层目录。这样的话,要想正确解压,必须创建上层目录。(4) -D : 本选项的作用是在解压源程序包之前不要删除软件的上层目录(软件名-版本号)。在上例中,其效果是不执行第4行的命令(rm -rf lze-6.0)。(5) -T : 本选项的作用是不解压默认的源程序包(由文件头的Source或Source0域所定义)。在上例中,其效果是不执行第5-9行的命令:第5行是解压源程序包(用gzip -dc将包的内容解压缩到管道中,再由tar -xvvf -从管道中读取数据并展开),第6-9行是检

7、查解压命令的返回值,非0时执行非正常退出。(6) -b N : 本选项指示RPM在转到上层目录前解压第N个源程序包(由文件头SourceN域定义)。这适用于含上层目录的源程序包。注意:如果使用此选项时不同时使用-T选项,则RPM解压的是两个源程序包,一个是默认的包(由Source或Source0域定义),一个是-b选项指定的包(由SourceN域定义)。这样,当N等于0时,默认的源程序包将被解压两次。所以,如果想仅解压指定源程序包,请同时使用-T选项,以禁止解压默认的源程序包。下面的宏命令仅解压第1个源程序包,然后转到上层目录:%setup -b 1 -T(7) -a N :本选项指示RPM在

8、转到上层目录后再解压第N个源程序包(由文件头SourceN域定义)。这适用于不含上层目录的源程序包。使用本选项时,一般加上-c选项,以创建上层目录并转到此目录。注意:如果使用此选项时不同时使用-T选项,则RPM解压的是两个源程序包,一个是默认的包(由Source或Source0域定义),一个是-a选项指定的包(由SourceN域定义)。这样,当N等于0时,默认的源程序包将被解压两次。所以,如果想仅解压指定源程序包,请同时使用-T选项,以禁止解压默认的源程序包。下面的宏命令让RPM先转到上层目录,再仅解压第2个源程序包:%setup -T -a 2就我自己对rpm打包的理解谈谈对%install

9、与%files的理解,刚开始的时候怎么也不理解这两个宏!不解位置为如下:1,在%install中 ,install命令通过-d参数创建的文件目录为啥都是%_install -d %buildroot%_datadir/SipMonitor其中%buildroot宏定义通过查询结果如下:其实这就是在spec文件上面指定的BuildRoot:BuildRoot: %_tmppath/%name-%version-%release- root我是觉得我是要安装在系统中的为啥要写到这个目录下!不是要安装系统相应的目录下面么?额,先把疑问放在这里,之后一起解答!2,%files 对于这个宏,我看啦文档有

10、两个说法,有说是要保存的文件,“本段是文件段,它定义的是软件包需要包含哪些文件。本段通常放在描述文件尾部,以便于添加文件名,便于编辑”。也有说最后软件就安装在这个目录下。到底谁正确不知道,呵呵!好的,这就是我在打包时遇到的两个问题!现在根据我的理解来解答,额,其实这两个问题相关的。首先要对BuildRoot: %_tmppath/%name-%version-%release- root这个参数理解,根据这个BuildRoot的字面意思就是建立根,其实这是rpm的一个原理(可以说是原理吧!呵呵),其实rpm安装软件的过程是在先这个临时的根目录BuildRoot: %_tmppath/%name

11、-%version-%release- root下建立相应的文件,比如我下面写的:%_install -d %buildroot%_datadir/SipMonitor其中%_datadir这个宏的意思是/share,这句话的意思是也就是在这个%buildroot,rpm提供的临时的根目录下面的usr/share下面建立一个SipMonitor目录,但是软件是怎么到实际的根目录(就是我们操作系统的根目录)下面的呢?这下就是%files这个宏的作用啦,其实上面令我产生疑问的两个说话都对,%files%_datadir/SipMonitor 这是我上面spec文件中写的,这就是把我上面临时目录下面

12、建立的文件夹给保存,可能你看到:%_datadir/SipMonitor,这句话是在系统根目录下,其实这保存也就是最后我软件安装的位置,所以说上面两种说法都是正确的。这里一定要注意的就是这里的保存文件或者文件夹一定要是你上面%_datadir下面所建立的目录或者你包含这个建立的临时目录。其实你也可以这么写,%files%_prefix / #将安装目标目录里的所有东西都打进 rpm 包,这个%_prefix宏是/usr,这么目录包含你上面建立的目录/usr/share/SipMonitor.只是这样安装会有很多垃圾目录生成!上面列出的所有文件在安装时不一定全部安装,就像Windows下程序的安

13、装方式分为典型、完全、自定义一样,Linux也会让你选择安装方式,此时我们可以用下面这条命令查看软件包将会在系统里安装哪些部分,以方便我们的选择:rpm -qpl *.rpm但是按照上面的写法 那个写法,这时候再查看文件列表信息就是这样的通过上面的两个图比较,明显感觉到第一副图中装的文件夹多,所以在linux下也是可以跟windows下一样,对软件可以完全安装,也可以选择部分安装。只是linux要通过命令行的形式实现!总结:上面说啦这么多,也不知道说的清不清楚,最后总结性的说一句!rpm用一个临时目录做为根。进行编译安装。然后其他脚本之类的解决包依赖和前期处理的问题。安装的时候就根据spec的

14、文件。进行处理,把虚拟/中的文件按照结构,复制到你真实的/中。下面是copy的一些觉得讲的很好的资料:http:/ ,别人牛人做的,很经典的!http:/www.savs.hcc.edu.tw/chuavv/rpm/maximum- rpm/p5208.html这个是网上rpm讲的很深的文档,呵呵,很全的,不过全英语,没有办法英语差啦!只能自己慢慢意会!可以通过命令rpm -showrc查看实现代码。另外直接通过 rpm -eval “%macro“来查看具体对应路径。 比如我们要查看%_bindir的路径,就可以使用命令rpm -eval “% _bindir“来查看。 另外,所有的宏都可以

15、在/usr/lib/rpm/macros里找到。 常见宏定义(左侧是宏名,右侧是相应的定义):%_prefix /usr %_exec_prefix %_prefix #展开后是 /usr%_bindir %_exec_prefix/bin #展开后是 /usr/bin%_sbindir %_exec_prefix/sbin #展开后是 /usr/sbin%_libexecdir %_exec_prefix/libexec #展开后是 /usr/libexec%_datadir %_prefix/share #展开后是 /usr/share%_sysconfdir %_prefix/etc #展开后是 /usr/etc 但是在 magic linux 里 %_sysconfdir 代表的是 /etc,这是由另一个被发行版特殊定制的文件决定的!%_sharedstatedir %_prefix/com #展开后是 /usr/com%_localstatedir %_prefix/var #展开后是 /usr/var%_libdir %_exec_prefix/lib #展开后是 /us

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号