Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1799082
  • 博文数量: 787
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5015
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-22 15:17
文章分类

全部博文(787)

文章存档

2008年(787)

我的朋友

分类:

2008-09-25 16:06:05

  本来应该没有故事了,因为三个RPM都做好了,但是cjacker说spec文件中要有跟源代码相关的%prep,%build和%install功能段,于是回去继续整。[@more@]

  这一整不打紧,差点完全颠覆了原来建立起来的思维体系,原来以为制作RPM就是把系统中的一些文件给组合到一个安装包里面,因而关键在于%files功能段。现在发现根本就不是这样,有了%prep,%build和%install功能段之后,只要把源码压缩包放到/usr/src/dist/BUILD下面,解压,编译,安装,打包便可一气呵成。而且,借助于设置BuildRoot,可以指定一个工作目录进行建包,这样建包完毕以后把工作目录一删,系统干干净净,绝对不会“污染”。

  其实那三个功能段很简单,%prep只需要一句话:%setup -q,%build只需要两句话:./configure和make,%install也只要一句话:make install。但是我被BuildRoot迷住了,想制造一个干净的系统,而且看了很多spec文件的例子,大都是指定了BuildRoot的。

  但是使用BuildRoot时%install段就会变得复杂,因为必须自己写那一条条的安装指令,make install的话会无视BuildRoot直接装到系统里面去。看了很长时间的安装指令,似懂非懂。于是干脆在./configure的后面增加--prefix选项,这么一来的确安装好了,可是运行时会出很多问题,因为很多软件编译的时候都会将prefix应用到源代码中去,这样做好的RPM在使用时就会有问题,比如我明明把QTParted给中文化了,运行的时候却是英文界面,因为.qm文件的路径里面包含了prefix。试来试去最后决定还是污染系统算了,毕竟这样写spec文件时最省心。

  把软件的头文件单独打包到一个xxx-devel.rpm中去似乎是一个普遍的做法,但我很不喜欢这种风格,因为当我安装到某个软件出现依赖问题时,通常总是要安装至少两个包,一个xxx,一个xxx-devel。因此这次对progsreiserfs和ntfsprogs打包时,我将头文件一起装了进去。



--------------------next---------------------

阅读(706) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~