Checkinstall是能够通过源码,自动生成 RPM/Debian 或Slackware 安装包的程序。通过 CheckInstall生成的安装包,可以通过linux的各种软件包软件包管理器来管理安装与卸载,保证系统的”干净“。
使用GUN Autoconf安装程序时我们一般是使用源码提供的Makefile在进行构建,但Makefile很多情况下是不提供卸载或升级的,所以我们只能自行的进行程序的管理,这样在我们升级或卸载时就非常繁琐,所以我们可以通过打包工具,打包成安装包,以供我们在该平台下进行程序的管理。
一般来说,我们编译GNU Autoconf配置的工程是使用:
./configure
make
make install
的步骤来编译安装工程,并安装至预定位置。configure脚本即是检查安装程序之前,系统是否满足某些依赖项,在make时需要用到,同时会根据编译参数生成Makefile文件(若有依赖子工程,则会在子工程文件夹统一生成Makefile文件,同时也会生成一个日志文件config.log和配置脚本config.status),然后就可以进行make
,从临时文件夹中编译出可执行文件,并可以通过make install
安装到指定目录中。
安装:sudo apt-get install checkinstall
使用checkinstall来打包安装程序
通过checkinstall来打包程序非常简单,只需要利用checkinstall
来替换上文中的make install
就会生成指定的打包文件:
./configure
make
checkinstall
使用checkisntall指令时,会产生一个事务并运行make install
检测所有安装过程中的写操作,在make安装执行完以后,会回滚事务,同时产生一个.deb,.rpm或slackware的安装包。关于生成安装包的路径,可以通过设置PAK_DIR的环境变量来修改。
同时,若安装程序使用的不是make install
使用shell脚本来进行安装的话,也可以通过checkinstall来进行打包,例如,安装脚本为setup.sh:
./configure
make
checkinstall setup.sh
checkinstall的参数配置
checkinstall默认打包的类型为deb,可以通过参数来生成不同的打包程序:
checkinstall 1.6.2, Copyright 2009 Felipe Eduardo Sanchez Diaz Duran
This software is released under the GNU GPL.
Usage: checkinstall [options] [command [command arguments]]
Options:
*Package type selection*
-t,--type=<slackware|rpm|debian> 设置打包类型
-S 打包成Slackware
-R 打包成RPM
-D 打包成DEB
CheckInstall 也有自己的局限之处。它不能处理静态连接的程序,因为这样 Installwatch 就不能监测到安装过程中修改过文件了。总体说来,有两类连接库:动态的和静态的。这些连接库通过 include 指令整合到程序中。静态连接过的程序已经包含了所有需要的库文件,运行时也就不需要再将这些库载入内存中。这种程序与安装在系统中的连接库无关,因为所谓的连接器(Linker)已经在编译时把这些库内置到可执行程序里了。