CheckI tall-便民的Linux源码安装工具

文章作者 100test 发表时间 2007:10:15 12:19:43
来源 100Test.Com百考试题网


  Checkinstall 是一个能从 tar.gz类的源代码自动生成RPM/Debian或Slackware安装包的程序。这样使你能用几乎所有的 tar.gz 类的源代码生成“干净”的安装或者卸载包。

  简介

  经常出现这样的问题:你很想试用的程序只有 tar.gz的源代码可用(没人提供 rpm 或者 Debian包)。这样,你只好下载回源代码,解压,然后手动编译。到目前为止,一切正常。然而,当你想删掉它的时候呢?

  Makefile文件只包括了很少情况下的卸载例程。当然,你可以把程序安装到临时文件夹,然后记下所有由程序生成或修改的文件,最后删除他们。但是如果这个程序要经常重新编译,那样做是非常痛苦的,工作量也是相当大的。 Felipe Eduardo所写的 CheckInstall [1] Sánchez Díaz Durán 就是用来解决这个问题的。

  一般说来,我们编译安 装一个由GNU Autoconf配置的程序是采用如下的步骤:

./configure &.&. make &.&. make install.

  这个 configure 脚本文件是用来“猜”出一系列系统相关的变量,这些变量是在后面的编译过程要用到的。它将检查系统变量值是否满足编译要求,然后使用这些变量在程序包内每个文件夹下生成 Makefile .此外,configure 脚本还会生成其他文件,他们是:

  * 每个文件夹/子文件夹下的一个或多个Makefile(s)

  * 一个名叫config.status的脚本

  * 一个文本文件config.log

  * 另一个名叫config.cache的脚本(可选的)

  * 带有系统特殊定义的C头文件(*.h)(可选项)

  configure脚本文件成功运行之后, 你会输入make来编译程序,得到你需要的可执行文件。你也可能在make之后马上使用make check来运行测试。但是这只是可选的步骤,因为这需要这个程序包的支持。如果 make成功的完成了,你可以使用make install来安装这个程序了——很明显,完成这步你需要一些相关权限。程序安装好了,你可以在源代码的文件夹下输入make clean来清除这些生成的可执行文件和目标文件。如果你还想删除由configure生成的文件,那么输入 then typemake distclean.后两步同make check一样(是可选的),它们通常是开发者在开发和测试阶段所使用,也可以被一般使用者用来节省硬盘空间或者保持文件夹的结构简洁明快。另外make distclean使得我们在不同类型的电脑上编译程序成为可能。

  关于GNU Autoconf的详细资料可以在在线文档[2]上找到。在基本介绍之外,你可以通过写你自己的configure脚本、用M4编程和创建自己的宏等方式来学习更多有关GNU Build System的知识。

  CheckInstall

  前面提到,我们采用GNU Autoconf通过一系列如下指令来编译程序:

./configure &.&. make &.&. make install

  现在该是换一种方式的时候了,你可以使用CheckInstall.它采用自己的指令checkinstall来代替make install.其他两个指令保留下来跟以前一样,因此,现在这个指令序列使用 CheckInstall变成了:

./configure &.&. make &.&. checkinstall

  指令checkinstall不仅默认运行了make install,而且还监测所有安装过程中的写操作。为此,CheckInstall使用了Pancrazio de Mauro 所写的程序Installwatch [3].在make install成功完成之后,CheckInstall会产生一个Slackware-, Debian- 或RPM- 安装包,然后按照软件包的默认配置安装程序,并在当前目录(或标准安装包存储目录)留下一个生成的安装包。而外,你可以通过修改变量PAK_DIR来修改保存这个目录。这样生成的安装包安装到其他机器上而无须重新编译——当然,还得考虑软件包的相互依赖性。


相关文章


Linux技巧:用cron和at调度作业
RedHatLinux9.0安装过程
Linux系统下的C语言开发都需要学些什么
用软件包命令管理Solaris软件系统
CheckI tall-便民的Linux源码安装工具
Linux磁盘管理:学会理解并编辑fstab
Linux系统上Iptables实现端口转发的过程
Linux系统Apache服务的信息查看模块介绍
用Linux拯救损坏的硬盘分区表
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛