打造自己的checkinstall

相信使用过rpmbuild 打包的读者,对整个打包过程都记忆犹新,这个过程对于一个新手来说是异常复杂的。不仅要需要学习spec 格式文件的规 范,还要把文件先打包成tar ,然后再把tar 文件拷贝的到指定的目录过程去,最后执行rpmbuild 命令。中间任何一步出错,都要从头再来。经过多次 往返,才能打成一个rpm 包。这一切复杂的过程,迫使你不等不找一种更简单的打包方式。

checkinstall ,是一个能从 tar.gz 类的源代码自动生成 RPMDebian Slackware 安装包的程序。通过 CheckInstall ,你就能用几乎所有的 tar.gz 类的源代码来生成“干净”的安装或者卸载包。

checkinstall 的使用非常方便,可以从checkinstall-1.6.1-1.i386.rpm 获取checkinstallrpm 包,直接部署到我们的机器上,但是我们要打造自己的checkinstall ,所以我们最好下载源代码来,获取源代码

通过源代码安装checkinstall 的过程如下


如果使用checkinstall 打包,首先要确保你的项目中包含有Makefile 文件,我们在包含有Makefile 的目录内执行

      

指令 checkinstall 不仅默认运行了 make install ,而且还监测所有安装过程中的写操作。在 make install 成功完成之后,CheckInstall 会产生一个 Slackware-Debian- RPM- 安装包,并在当前目录(或标准安装包存储目录)留下一个生成的安装包。你可以通过修改变量 PAK_DIR 来修改这个保存目录。

更详细的过程可以参考《Linux 的源码安装工具 CheckInstall

    Checkinstall 的打包过程相对于rpmbuild 已经很简单了,至少我们不用写spec 文件,我们不用tar 文件,也不用拷贝来拷贝去。但是,具体应用中,还是有很多不爽的地方

  1. checkinstall 中有太多的交换命令,我能不能去掉?
  2. checkinstall 获得项目名称和版本号,以及依赖关系,都不是我想要的,每次打包时,修改这些信息很麻烦,能不能想spec 文件那样,NameVersionSummaryPackager 等信息写到一个文件内,checkinstall 从这个文件内读取?
  3. 我们的项目需求,一次性需要打多个包,比如我要打一个数据库包,打一个应用包,checkinstall 可以实现吗?
  4. 等等,好像是用checkinstall 打的包安装的时候有问题,提示

  5. 这是一个 bug ,安装的时候需要指定 --nomd5 ,这岂不是很麻烦?
  6. 在部署我的 rpm 包前,我希望执行一段 shell 命令,做些初始化工作。安装完成后,再执行一段 shell 命令,做些清理工作。可是 checkinstall 不支持?难道我只能用 spec 嘛?
  7.   spec 文件中,我可以在 %changelog 详细描述,我每次打包时的日志,而现在似乎我不能这样,怎么办?

    笔者在使用 checkinstall 的时候,也碰到这种问题,尤其是令人恶心的是 MD5 验证失败的问题,查到 checkinstall 的官方 faq ,发现第一条就是这个问题


再看一下,最新版本的官方更新时间是 November 1st, 2006 ,很明显,指望官方修改这个 bug 已经不可能了。看来只能操刀子自己从头修改吧。

经过修改后的 checkinstall_cn ,不但解决了 MD5 验证失败的问题,还增加了支持一种新的文件格式。参考我的 rar 中的 example.citb 文件


如上所示,通过上面这个配置文件,我们可以在这个配置文件中写要打包的NameVersion 等信息,还可以写包的prepostchangelog ,而我们打rpm 包只需执行

      

并且笔者还对checkinstall 的文件进行配置,减少了打包过程中的交互。可能还有一个需求没有满足就是,就是如何打多个包?

    其实这个功能也做了,参考包内的mmt_create ,有了mmt_create 之后,我就不在直接使用checkinstall 进行打包了,而是

   

    使用mmt_create 后,经过打造的checkinstall 就具有如下功能了。

  • 打包命令简单,所需要操作就是指定要打包的citb 文件。
  • 目录随意,citb 可以放置在任意目录内。
  • 打包后的文件,放在和citb 同级目录内。
  • 相对于spec ,更简单的citb 格式文件编写。只要您会写shell ,就会写citb 文件。
  • 支持多个citb 文件同时打包
  • 支持spec 格式文件打包
  • 支持自更新
  • 支持32-64 系统(已经经过测试)

如果使用checkinstall_cn

获取到checkinstall_cn 后,解包到你的目录,然后

如果使用checkinstall_cn
获取到checkinstall_cn后,解包到你的目录,然后
    # cd checkinstall-1.6.1
    checkinstall-1.6.1# make
    checkinstall-1.6.1# make install
    checkinstall-1.6.1# checkinstall
如果要使用mmt_create,可以在经过上述步骤后把mmt_create拷贝到/usr/local/bin/目录内,但是我的推荐方法是
    1:先打checkinstall_cn包
    Sudo checkinstall –citb=checkinstall.citb
    2:安装checkinstall_cn包
    Sudo rpm –ivh checkinstall-1.7.1-1.i386.rpm
    3:使用mmt_create
哈哈,现在你就可以是使用mmt_create打rpm包了。


下载checkinstll_cn
有任何问题或者建议,请联系我,CSDN ID: 逸学堂(ugg)。

转帖请注明:http://blog.csdn.net/ugg/archive/2009/05/26/4217660.aspx

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值