`
javababy1
  • 浏览: 1166611 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Linux 源码安装工具 CheckInstall

 
阅读更多

丽娜(wanglina@cn.ibm.com),软件工程师, IBM 中国软件开发中心

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

标记本文!

发布日期:2008 12 11

级别:初级

访问情况 5048 次浏览

评论:1(查看|添加评论- 登录)

平均分 5 星 共 5 个评分

平均分(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”显示所有可用的子参数

运行命令“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 的全过程。这会安装上 CheckInstallInstallwatchmakepak,其中 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 包的图示过程

运行命令“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 的 RPM 包

回页首

CheckInstall 的配置

你可以通过修改配置文件 /usr/local/lib/checkinstall/checkinstallrc 来改变 CheckInstall 的默认配置。

文件值得注意的变量有 INSTYPEINSTALL PAK_DIR

INSTYPE 变量决定生成何种类型安装包。

4. 查看变量 INSTYPE

查看变量 INSTYPE

PAK_DIR 变量决定安装包的存储目录。

5. 查看变量 PAK_DIR

查看变量 PAK_DIR

INSTALL 变量决定是只生成安装包还是一起将这个包马上安装。

0-只生成安装包

1-不仅生成安装包,还将包立即安装

6. 查看变量 INSTALL

查看变量 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 包的图示过程

运行命令“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

检查 squid-2.6.STABLE12 的 RPM 包

回页首

结束

CheckInstall 是一款优秀的源码安装软件,它使得 Linux 软件管理更加方便。特别是在源码需要经常重复编译的情况下,CheckInstall 可以让你丝毫不破坏系统一致性的前提下完全的卸载程序。而且,你还可以使用这些编译好的安装包直接在其他的机器上安装无须再重新编译。

参考资料

关于作者

王丽娜,中国软件开发中心 Tivoli 部门软件工程师,负责 IBM 产品TMF(Tivoli Management Framework)的维护和客户支持工作,热爱 Linux

源文档 <http://www.ibm.com/developerworks/cn/linux/l-cn-checkinstall/>

分享到:
评论

相关推荐

    checkinstall-1.6.2.tar.gz

    源码安装工具

    checkinstall_cn

    checkinstall_cn,是经过改造后的checkinstall,不但修复了md5验证的bug,而且开发了一种新的文件格式,更加方便打包。

    checkinstall-1.6.2-CentOS_5.5.x86_64.rpm

    make your program, CheckInstall will run make install (or whatever you tell it to run) and keep track of every file modified by this installation, using the excelent installwatch utility written by ...

    checkinstall-1.6.3-1.mips64.rpm

    可用于龙芯3a3000以上的linux系统的checkinstall rpm安装包,这个程序用于替代make install制作自己的打包安装程序,解决make install方式编译安装源码的时候系统rpm数据库里面无法记录自己编译程序信息的问题,避免...

    selinux,gnupg,checkinstall 压缩包

    selinux 源码安装包,gnupg源码,checkinstall安装包

    checkinstall方法制作deb 包1

    sudo apt-get install checkinstall进入源码src 的目录下,进行make 操作输入command checkinstall4.

    wireshark-1.12.0最新源码

     安装Checkinstall以便管理您系统中直接由源代码编译安装的软件。  $sudo apt-get install checkinstall 下载后的文件名:wireshark-1.2.2.tar.bz2 cd到文件目录解压:$tar -xvf wireshark-1.2.2.tar.bz2 $cd ...

    wireshark源码

     安装Checkinstall以便管理您系统中直接由源代码编译安装的软件。  $sudo apt-get install checkinstall 下载后的文件名:wireshark-1.2.2.tar.bz2 cd到文件目录解压:$tar -xvf wireshark-1.2.2.tar.bz2 $cd ...

    用Checkinstall制作你自己的RPM

    用Checkinstall制作你自己的RPM 用Checkinstall制作你自己的RPM

    GPS搜星功能的小工具checkinstallV1.0.rar

    GPS搜星功能的小工具checkinstall;适合用于低版本的旧手机 测试GPS收星 看能否收到GPS信号、能收到几颗星

    rr232x-linux-src:HighPoint RocketRaid 232x

    为了使用3.x内核支持更新Linux发行版,已对源代码进行了修补。 您可以在src/目录中找到原始源,而修补后的源位于patched/目录中。 在对camper2表示感谢,因为他提供了补丁。 建造 安装所需的构建软件包和内核...

    给ubuntu18安装python3.7的详细教程

    安装工具 sudo apt update sudo apt upgrade sudo apt install gcc sudo apt install g++ sudo apt install build-essential checkinstall sudo apt install libreadline-gplv2-dev libncursesw5-dev libssl-dev ...

    Toolbox Installer 2.2:用于轻松安装和卸载工具箱目录的例程。-matlab开发

    然后通过在您的工具箱中包含 INSTALL 和 UNINSTALL 程序,用户只需编写 INSTALL 以将您指定的目录(您不必指定基目录)安装到 matlab 路径,或者使用 UNINSTALL 从 matlabpath 中删除它们。 您可以随时通过执行 ...

    libplist:处理二进制或XML的Apple Property List格式的库

    首先安装所有必需的依赖项并构建工具: sudo apt-get install \ build-essential \ checkinstall \ git \ autoconf \ automake \ libtool-bin 如果要选择构建文档或Python绑定,请使用: sudo apt-get ...

    FFmpeg-Cedrus:FFMpeg for Cedrus on Allwinner devices with sunxi kernel

    FFMpeg for Cedrus on Allwinner devices with sunxi kernel 基于与 jemk 和 alcantor 的不可思议的工作,我们设法更新 FFmpeg 以包含 cedrus264 硬件编码... 或者,您可以在目标上安装“checkinstall”包,并创建一个

    unibuild:ArchDebian PKGBUILD和检查安装补丁

    它可用于自动重建兼容的PKGBUILD项目,备份到指定的驱动器以及更新已安装的软件包。的Ubuntu 数百次构建了100多个项目之后,核心脚本和补丁的强度就变得显而易见。 他们收集制作项目所需的信息,并构建他们的debian...

    autoinstall-开源

    使用wget,配置,制作和检查install / slackbuilds从源代码下载,打包和安装软件。 当前可用于slackware,但可以轻松移植到checkinstall支持的任何版本(debian,redhat)。

    Code_Pr00filer

    Pr00filer-白色工作站/ USB密钥净化站 要知道: 该项目仍在开发中。 目前使用的敏化图像来自项目,以...$ sudo apt-get install build-essential checkinstall $ sudo apt-get install libreadline-gplv2-dev libnc

    qemu2deb-RPi:在Raspberry Pi上比以往任何时候都更容易Compilepackageinstall QEMU

    *:使用checkinstall将arm64和x86的QEMU打包,可以正常工作。 用法: 从下载最新版本的deb文件。 使用以下命令安装它: sudo dpkg -i qemu2deb_*_armhf.deb或使用您喜欢的图形应用程序/命令。 要运行qemu2deb...

    nasm( ubuntu-deb安装包)

    自己用checkinstall做的nasm的deb安装包,其实用终端更方便,这个东西只当说明用 版本:2.08.01(截止10-3-27最新)

Global site tag (gtag.js) - Google Analytics