打造自己的checkinstall

相信使用过rpmbuild

打包的读者,对整个打包过程都记忆犹新,这个过程对于一个新手来说是异常复杂的。不仅要需要学习spec

格式文件的规 范,还要把文件先打包成tar

,然后再把tar

文件拷贝的到指定的目录过程去,最后执行rpmbuild

命令。中间任何一步出错,都要从头再来。经过多次
往返,才能打成一个rpm

包。这一切复杂的过程,迫使你不等不找一种更简单的打包方式。

checkinstall

,是一个能从 tar.gz

类的源代码自动生成 RPM

/Debian

或Slackware

安装包的程序。通过 CheckInstall

,你就能用几乎所有的 tar.gz

类的源代码来生成“干净”的安装或者卸载包。

checkinstall

的使用非常方便,可以从checkinstall-1.6.1-1.i386.rpm

获取checkinstall

的rpm

包,直接部署到我们的机器上,但是我们要打造自己的checkinstall

,所以我们最好下载源代码来,获取源代码

通过源代码安装checkinstall

的过程如下

# tar xzf checkinstall-1.6.1.tgz
# cd checkinstall-1.6.1
checkinstall-1.6.1# make
checkinstall-1.6.1# make install
checkinstall-1.6.1# checkinstall

如果使用checkinstall

打包,首先要确保你的项目中包含有Makefile

文件,我们在包含有Makefile

的目录内执行

   sudo checkinstall

  

指令 checkinstall

不仅默认运行了 make install

,而且还监测所有安装过程中的写操作。在 make install

成功完成之后,CheckInstall

会产生一个 Slackware-

,Debian-

或RPM-

安装包,并在当前目录(或标准安装包存储目录)留下一个生成的安装包。你可以通过修改变量 PAK_DIR

来修改这个保存目录。

更详细的过程可以参考《Linux

的源码安装工具 CheckInstall

   
Checkinstall

的打包过程相对于rpmbuild

已经很简单了,至少我们不用写spec

文件,我们不用tar

文件,也不用拷贝来拷贝去。但是,具体应用中,还是有很多不爽的地方

  1. checkinstall

    中有太多的交换命令,我能不能去掉?

  2. checkinstall

    获得项目名称和版本号,以及依赖关系,都不是我想要的,每次打包时,修改这些信息很麻烦,能不能想spec

    文件那样,

    把Name

    ,Version

    ,Summary

    ,Packager

    等信息写到一个文件内,checkinstall

    从这个文件内读取?

  3. 我们的项目需求,一次性需要打多个包,比如我要打一个数据库包,打一个应用包,checkinstall

    可以实现吗?

  4. 等等,好像是用checkinstall

    打的包安装的时候有问题,提示

  5. error: unpacking of archive failed on file /bin/basename;4877040f: cpio: MD5 sum mismatch
  6. 这是一个

    bug

    ,安装的时候需要指定

    --nomd5

    ,这岂不是很麻烦?

  7. 在部署我的

    rpm

    包前,我希望执行一段

    shell

    命令,做些初始化工作。安装完成后,再执行一段

    shell

    命令,做些清理工作。可是

    checkinstall

    不支持?难道我只能用

    spec

    嘛?

  8.  

    spec

    文件中,我可以在

    %changelog

    详细描述,我每次打包时的日志,而现在似乎我不能这样,怎么办?

    笔者在使用

checkinstall

的时候,也碰到这种问题,尤其是令人恶心的是

MD5

验证失败的问题,查到

checkinstall

的官方

faq

,发现第一条就是这个问题

I use checkinstall 1.6.1 and the rpm I create report a faild MD5 verification when installed and/or the package has unrelated files inside.
This is a known bug in version 1.6.1 and will be fixed in the next release. As a workaround you can use the --inspect, --review-spec and/or --review-control command line options and edit out the files to be included in the package. 

再看一下,最新版本的官方更新时间是

November 1st, 2006

,很明显,指望官方修改这个

bug

已经不可能了。看来只能操刀子自己从头修改吧。

经过修改后的

checkinstall_cn

,不但解决了

MD5

验证失败的问题,还增加了支持一种新的文件格式。参考我的

rar

中的

example.citb

文件

# 包的名称
Name: test
# 包的版本信息
Version: 1.0.0
Release: 1
# 依赖包
Requires: php , httpd
# 创建者
Packager: ugg
# 摘要信息
Summary: by ugg test
# 版权
copyright: hehexiao
PEARPATH=/usr/lib/php/pear/tbs/apps/customhtml
HTDOCSPATH=/var/www/htdocs/apps/customhtml
# 安装脚本开始命令 , 以下部分可以从和 Makefile 中的内容相同即可
install:
mkdir -p $(PEARPATH)
mkdir -p $(HTDOCSPATH)
cp -r ../../src/htdocs/*.php $(PEARPATH)/customhtml
cp -r ../../src/pear/*.php $($HTDOCSPATH)/customhtml
# 以下 shell 命令,要以 TAB 开始每一行
pre:
# 每行命令以 TAB 开始
# sudo apachectl restart
# 安装包后执行命令,同 rpm 中的 %post 功能,
post:
# 每行命令以 TAB 开始
# sudo apachectl restart
# 打包日志,同 rpm 中的 %changelog
changelog:
# 每行日志以 TAB 开始
* Wed May 20 2009 changjing.xu <guangzhao@taobao.com> %{Version}
- this is test

如上所示,通过上面这个配置文件,我们可以在这个配置文件中写要打包的Name

,Version

等信息,还可以写包的pre

,post

,changelog

,而我们打rpm

包只需执行

    Sudo checkinstall –citb=example.citb

 

并且笔者还对checkinstall

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

   

其实这个功能也做了,参考包内的mmt_create

,有了mmt_create

之后,我就不在直接使用checkinstall

进行打包了,而是

    mmt_create –citb checkinstall.citb
mmt_create –citb *.citb
mmt_create –citb checkinstall.citb example.citb 

   

使用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

时间: 2024-08-31 17:51:11

打造自己的checkinstall的相关文章

RPM打包利器RPM_CREATE

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4        RPM 是 Redhat Package Manager 的简称,是由 redhat 公司研制,用在 Linux 系统下的系统包管理工具. RPM 包目的:是使软件包的安装和卸载过程更容易,简化软件包的建立分发过程,并能用于不同的体系结构, RPM 系统已成为现在 Linux 系统下包管理工具事实上的标准,并且已经移植到很多商业的 unix 系统之下 .

树莓派打造廉价版TimeCapsule

Time Capsule是苹果公司推出的与Mac配合使用的无线硬盘驱动器,可以很方便地在Apple系列的设备之间共享数据,Mac可以利用Mac OS X系统下的Time Machine软件通过WiFi和Time Capsule连接实现系统的全自动备份. 想必很多人都使用过外置硬盘来完成电脑数据的备份,这确实可以工作的很好,不过尽管移动硬盘可以移动,但是想比WiFi,移动性还是差了很多,尤其是当在膝上办公的时候.如果有一个无线硬盘驱动器,确实可以方便不少,然而Time Capsule价格虚高,而且

京颐CTO宋建康:如何应对系统高度分化异构的挑战,打造不间断服务的在线交易云平台

[现场视频]京颐CTO兼医疗云事业部总经理宋建康:基于医疗核心业务系统的在线交易云平台,点此进入→https://yq.aliyun.com/video/play/1171 摘要:在9月7日云栖专家"走进京颐"线下活动中,京颐CTO兼医疗云事业部总经理宋建康分享了移动互联网医疗的发展历程和所面临的挑战,以及京颐在线交易云平台的设计.挑战和应用,以及对于互联网医疗行业的未来展望.错过了线下活动的小伙伴们,不要错过本文哦~ 本文内容根据演讲专家音频材料以及PPT整理而成. 前言 移动互联网

ps打造出水芙蓉字体

本文小编为大家介绍一下使用photoshop打造出水芙蓉字体,文字从水面中浮沉,效果奇特,下面就和小编一起来看看具体操作方法吧. 最终效果图 一.文字的处理 1.打开一个素材文件,最好是矢量文件,调整好大小比例,我们要用它来作背景.该实例就选取了一幅带波纹的水景作背景,因为是"出水芙蓉"嘛. 2.激活工具箱中的输入文字工具,在弹出的对话框中键入"出水芙蓉"四字,该实例选了"创艺繁综艺"字体,大小以背景图的大小来决定就可以了. 3.激活工具箱中的移

如何使用photoshop打造岩浆字体

教程为大家介绍如何使用photoshop打造岩浆字体,下面就一起来看看具体操作方法吧. 最终效果 1.用黑色的背景,打上白色字体,最后合并图层 2.用"风"滤镜,左右各执行2次 3.用"分层云层"执行几次 4.用文字工具再打入一样大小的字体与原图基本重合.现在,要加纹理的可以现在加到字体上去了,这样最后可以做出"破损"效果.这里我就不在多说了,可以自己下去试试.教程里还是采用不加的方式. 5.凸出 6.接下来,这一步尤其重要! 要表现出"

Photoshop打造非常有创意的户外运动鞋海报

  Photoshop打造非常有创意的户外运动鞋海报          效果图构图非常巧妙,用类似盒子的空间来展示,立体感非常强;同时可以很好的突出户外产品的特性,给人无限的想象空间. 最终效果 一.头脑风暴 户外运动品牌肯定是用户外场景最贴切了,最先想到的是沙漠,沙漠的色彩和鞋子的颜色挺和谐的,所以下面就只需要想沙漠有什么东西就好了. 二.寻找灵感 看到一些这样的图,感觉挺有意思,房子里面有一个世界的感觉,那么举一反三咱们是否可以做一个"鞋盒子里面的世界"呢? 三.找素材 经过头脑风

传统企业的O2O闭环打造:你也可以做到苹果那样

对于苹果成功的原因,各种的"理论"."分析"早就满大街了,其中有必然说也有偶然说,苹果的模式也许不值得中国企业,尤其是传统企业完全照搬,但其中的某些细节却值得我们思考,一个常常被忽略的地方就是苹果的CRM,客户关系管理体系. 强客户关系运维 在刚刚过去的2014年第一季度中,苹果的iPhone出货量达到了4371.9万台,这是一个什么概念,中国所有的零售.制造.家电等传统企业的负责人们,请做一个简单的换位思考,如果你们的产品一个季度就达到这种规模的出货量时,你还可以

聊聊打造优质WEB表单的9个方法

  这篇文章算是笔者交的一份读书笔记,与 CRM 系统打交道了这么久,表单天天见.如果表单有感情的话,我猜它应该都不想再看见我了.也是有缘,老板推荐了一本表单设计的书--<Web Form Design – Filling the blanks>by Luke Wroblewski,得此书如获至宝.该书对表单描述详尽,案例充分,解决了许多笔者多年未解决的问题.接下来进入正题,我们来聊一聊如何打造优质 Web 表单.黑喂狗! 1. 标签推荐使用右对齐方式 (图示1:淘宝网注册页面) 马泰奥·彭佐

用iSee打造个性自我签名图

现在不管是QQ空间,还是论坛.博客,都流行做个签名图,代表着自己的风格,张扬着自己的个性.iSee教你怎样把自己的照片打造属于自己的独一无二的签名图.先看原图和效果图: 原图: 效果图: 操作步骤: 1.iSee打开图1.点击"右侧工具栏"-影楼效果-反转负冲 2.点击 影楼效果 – Lomo色彩 -- Lomo 3.选择"上方工具栏"-图像特效-艺术效果-抽丝 进入"抽丝"的处理界面. 抽丝方向:纵向 抽丝颜色:黑色 抽丝宽度:1 横向间距:2