Linux 源码安装工具 CheckInstall
来源:互联网 发布:淘宝现货指的是什么 编辑:程序博客网 时间:2024/05/01 09:00
王丽娜 (wanglina@cn.ibm.com),软件工程师, IBM 中国软件开发中心
简介: Checkinstall是一个能从 tar.gz类的源代码自动生成 RPM/Debian或Slackware安装包的程序。通过 CheckInstall,你就能用几乎所有的 tar.gz 类的源代码来生成“干净”的安装或者卸载包。
标记本文!
发布日期: 2008年 12月 11日
级别: 初级
访问情况: 5048次浏览
评论: 1 (查看 | 添加评论 -登录)
平均分(5个评分)
为本文评分
引言
经常出现这样的问题:很想试用的程序只有源代码(比如 tar.gz)可用,没人提供 RPM或者Debian包。你只好下载源代码,解压,然后手动编译。到目前为止,一切正常。然而,当你想删除它的时候呢?
Makefile文件只包括了很少情况下的卸载例程。当然,你可以把程序安装到临时文件夹,然后记下所有由程序生成或修改的文件,最后删除他们。但是如果这个程序要经常重新编译,这样做是非常痛苦的,工作量也相当大。Felipe Eduardo所写的 CheckInstall就是用来解决这个问题的。
回页首
用 GNU Autoconf安装程序
一般说来,我们编译安装一个由 GNU Autoconf配置的程序是采用如下的步骤:
./configure && make && make install
这个 configure脚本文件是用来“猜”出一系列系统相关的变量,这些变量是在后面的编译过程要用到的。它将检查系统变量值是否满足编译要求,然后使用这些变量在程序包内每个文件夹下生成 Makefile。此外,configure脚本还会生成其它文件:
- 每个文件夹/子文件夹下的一个或多个 Makefile(s)
- 一个名叫 config.status的脚本
- 一个文本文件 config.log
Configure脚本文件成功运行之后,你会输入 make来编译程序,得到你需要的可执行文件。如果 make成功的完成,你可以使用 make install来安装这个程序。
回页首
用 CheckInstall安装程序
上节我们采用 GNU Autoconf来编译程序,现在该是换一种方式的时候了。你可以使用CheckInstall工具。它采用自己的指令 checkinstall来代替 make install。其他两个指令保留下来跟以前一样,因此,现在这个指令序列使用 CheckInstall 变成:
./configure && make && checkinstall
指令 checkinstall不仅默认运行了 make install,而且还监测所有安装过程中的写操作。为此,CheckInstall使用了 Pancrazio de Mauro所写的程序 Installwatch。在make install 成功完成之后,CheckInstall会产生一个 Slackware-,Debian-或RPM-安装包,然后按照软件包的默认配置来安装程序,并在当前目录(或标准安装包存储目录)留下一个生成的安装包。你可以通过修改变量 PAK_DIR 来修改这个保存目录。
CheckInstall并不只是使用make install,它还可以与其他安装指令相协调。例如,如果安装指令为 setup.sh,那么安装指令序列变成:
./configure && make && checkinstallsetup.sh
我们还可以让 CheckInstall带着很多参数运行。
图 1.运行命令“checkinstall –h”显示所有可用的子参数
这些子参数大致分为:
- 安装选项(Install options)
- 脚本处理选项(Scripting options)
- 信息显示选项(Info display options)
- 安装包选项(Package tuning options)
- 清除选项(Cleanup options)
- 关于 CheckInstall(About CheckInstall)。
如果 CheckInstall带着这些参数运行,它会使用这些参数值来代替配置文件 checkinstallrc中相应的值。
CheckInstall也有自己的局限之处。它不能处理静态连接的程序,因为这样 Installwatch就不能监测到安装过程中修改过文件了。总体说来,有两类连接库:动态的和静态的。这些连接库通过 include指令整合到程序中。静态连接过的程序已经包含了所有需要的库文件,运行时也就不需要再将这些库载入内存中。这种程序与安装在系统中的连接库无关,因为所谓的连接器(Linker)已经在编译时把这些库内置到可执行程序里了。
回页首
CheckInstall的安装
我们可以在 CheckInstall的主页上下载各种预编译好的安装包或者合适的源码包。下面将展示安装最新的源代码 checkinstall-1.6.1.tgz的全过程。这会安装上 CheckInstall、Installwatch和makepak,其中 makepak 是 makepkg的修改版。如果你对新版本的改进感兴趣,请参看Release Notes和Changelog。
清单 1.生成 checkinstall的 rpm安装包
# 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
图 2.运行命令“checkinstall”生成 rpm 包的图示过程
图 2.1.过程一
图 2.2.过程二
图 2.3.过程三
checkinstall-1.6.1的 rpm包已经生成,我们用 rpm来安装它。
清单 2.用生成的 rpm包安装 checkinstall
checkinstall-1.6.1# cd/usr/src/redhat/RPMS/i386/
i386# rpm -i checkinstall-1.6.1.rpm
checkinstall-1.6.1安装完毕。使用包管理程序的查询语句,你可以检查安装包中文件是否完全在程序库中记录了,还可以查看安装包头部的一些额外信息。
图 3.检查 checkinstall的 RPM包
回页首
CheckInstall的配置
你可以通过修改配置文件 /usr/local/lib/checkinstall/checkinstallrc来改变 CheckInstall的默认配置。
文件值得注意的变量有 INSTYPE,INSTALL和 PAK_DIR。
INSTYPE变量决定生成何种类型安装包。
图 4.查看变量 INSTYPE
PAK_DIR变量决定安装包的存储目录。
图 5.查看变量 PAK_DIR
INSTALL变量决定是只生成安装包还是一起将这个包马上安装。
0-只生成安装包
1-不仅生成安装包,还将包立即安装
图 6.查看变量 INSTALL
回页首
用 CheckInstall制作 RPM包实例
上两节我们把 Checkinstall安装配置完成,这节以 squid-2.6.STABLE12.tar.bz2为例,说明用checkinstall制作编译成 squid-2.6.STABLE12-1.i386.rpm包的具体方法。
清单 3.生成 squid-2.6.STABLE12的 rpm安装包
# tar jxvf squid-2.6.STABLE12.tar.bz2
# cd squid-2.6.STABLE12
squid-2.6.STABLE12# ./configure --prefix=/usr/local/squid --sysconfdir=/etc \
--enable-arp-acl --enable-linux-netfilter -enable-err-language="Simplify_Chinese" \
--enable-storeio=ufs --enable-default-err-language="Simplify_Chinese" \
--enable-auth="basic" --enable-baisc-auth-helpers="NCSA" --enable-underscore
squid-2.6.STABLE12# make
squid-2.6.STABLE12# checkinstall
生成 rpm包期间会出现一些选项,选择默认的即可。
图 7.运行命令“checkinstall”生成 rpm 包的图示过程
图 7.1.过程一
图 7.2.过程二
图 7.3.过程三
图 7.4.过程四
清单 4.用生成的 rpm包安装 squid-2.6.STABLE12
squid-2.6.STABLE12# cd/usr/src/redhat/RPMS/i386/
i386# rpm -ivh squid-2.6.STABLE12-1.i386.rpm
图 8.检查 squid-2.6.STABLE12的 RPM包
回页首
结束
CheckInstall是一款优秀的源码安装软件,它使得 Linux软件管理更加方便。特别是在源码需要经常重复编译的情况下,CheckInstall可以让你丝毫不破坏系统一致性的前提下完全的卸载程序。而且,你还可以使用这些编译好的安装包直接在其他的机器上安装无须再重新编译。
参考资料
- 学习更多关于 Checkinstall的知识请参阅:http://asic-linux.com.mx/~izto/checkinstall/
- GNU Autoconf Online Manual:http://www.gnu.org/software/auto ... -2.57/autoconf.html
- Installwatch Manual:http://asic-linux.com.mx/~izto/checkinstall/installwatch.html
- 下载 Checkinstall网站:http://asic-linux.com.mx/~izto/checkinstall/download.php
- Checkinstall的 Release Notes: http://asic-linux.com.mx/~izto/checkinstall/docs/RELNOTES
- Checkinstall的 Changelog:http://asic-linux.com.mx/~izto/checkinstall/docs/Changelog
关于作者
王丽娜,中国软件开发中心 Tivoli部门软件工程师,负责 IBM产品TMF(Tivoli Management Framework)的维护和客户支持工作,热爱 Linux。
源文档 <http://www.ibm.com/developerworks/cn/linux/l-cn-checkinstall/>
- Linux 源码安装工具 CheckInstall
- Linux 的源码安装工具 CheckInstall
- Linux 的源码安装工具 CheckInstall
- Linux 的源码安装工具 CheckInstall
- Linux源码打包工具CheckInstall
- checkinstall制作linux安装包
- fedora/ubuntu使用checkinstall源码安装软件
- wdOS系统上checkinstall工具的安装和应用示例
- 源码安装时用CheckInstall生成deb包
- ubuntu中用checkinstall安装软件
- 编译安装checkinstall-1.6.2
- Debian下制作deb工具:checkinstall
- 制作RPM安装包工具checkinstall
- 使用checkinstall 编译软件源码并生成deb包
- Linux下源码阅读工具ctags+vim中安装ctags
- Linux 软件安装使用(6)源码查看工具
- Linux下源码阅读工具ctags的安装及使用
- 用checkinstall制作deb/rpm/Slackware安装包
- 文章正文图片loding
- Linux Top 命令解析 比较详细
- Ubuntu11.04--Wireshark配置
- 数组 桶排序
- 差距
- Linux 源码安装工具 CheckInstall
- 带你体验串行到并发的旅途--第一部分
- Windows下vim配置
- 读取文件夹下所有文件内容
- shell命令行的一些快捷键汇总
- PHP操作MongoDB学习笔记
- Android——ImageButton按下效果设计
- C语言:extern 讲解
- joj2474