Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包

问题:我想要从源码创建安装的软件包。有没有一种方式从源码来创建和安装软件包,而不是运行“make install”?这样的话,以后如果我想,我可以容易的卸载程序。

如果你已经从它的源码运行“make install”安装了linux程序。想完整移除它将变得真的很麻烦,除非程序的开发者在Makefile里提供了uninstall的目标设置。否则你必须在安装前后比较你系统里文件的完整列表,然后手工移除所有在安装过程中加入的文件。

这时候Checkinstall就可以派上使用。Checkinstall会跟踪install命令行所创建或修改的所有文件的路径(例如:“make install”、“make install_modules”等)并建立一个标准的二进制包,让你能用你发行版的标准包管理系统安装或卸载它,(例如Red Hat的yum或者Debian的apt-get命令)。已知它在 Slackware、SuSe、Mandrake 和 Gentoo 上也工作很好,请参考其官方文档。

在这篇文章中,我们只集中在红帽子和Debian为基础的发行版,并展示怎样从源码使用Checkinstall创建一个RPM和DEB软件包

在linux上安装Checkinstall

在Debian及其衍生发行版上安装Checkinstall:

  1. # aptitude install checkinstall

在红帽子的发行版上安装Checkinstall,你需要下载一个已经打包好的Checkinstall rpm包(例如:从http://rpm.pbone.net找到),不过它已经从Repoforge库里删除了。这个包是针对Cent OS6的,不过也可在Cent OS7里工作。

  1. # wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/home:/ikoinoba/CentOS_CentOS-6/x86_64/checkinstall-1.6.2-3.el6.1.x86_64.rpm
  2. # yum install checkinstall-1.6.2-3.el6.1.x86_64.rpm

一旦checkinstall安装好,你就可以用下列格式创建一个特定的软件包

  1. # checkinstall <install-command>

如果没有参数,默认安装命令“make install”将被使用

用Checkinstall创建一个RPM或DEB包

在这个例子里,我们将创建一个htop包,这是一个linux交互式文本模式进程查看器(类似 top)。

首先,让我们从项目的官方网站下载源代码,作为一个好的习惯,我们存储源码包到/usr/local/src下,并解压它。

  1. # cd /usr/local/src
  2. # wget http://hisham.hm/htop/releases/1.0.3/htop-1.0.3.tar.gz
  3. # tar xzf htop-1.0.3.tar.gz
  4. # cd htop-1.0.3

让我们看看htop的安装命令是什么,以便我们能用Checkinstall命令调用它,如下面所示,htop用“make install”命令安装。

  1. # ./configure
  2. # make install

因此,要创建一个htop安装包,我们可以不带任何参数的调用checkinstall,这将使用“make install”命令创建一个包。在这个过程中, checkinstall命令会问你几个问题。

简而言之,如下命令会创建一个htop包:

  1. # ./configure
  2. # checkinstall

“Should I create a default set of package docs?(我会创建一个默认设置的包文件?)”,回答“Y”:

你可以输入一个包的简短描述,然后按两次回车:

输入一个数字以修改下面的任何值或ENTER继续:

然后checkinstall将自动地创建一个.rpm或者.deb包,根据你的linux系统是什么:

在CentOS7:

在Debian 7:

原文发布时间:2014-10-26
本文来自云栖合作伙伴“linux中国”

Linux有问必答:怎么用CheckInstall从源码创建一个RPM或DEB包相关推荐

  1. 详解linux下auto工具制作Makefile源码包(制作篇)

    2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一.     概述 为了更好的制作configure ...

  2. (转)Linux设备驱动之HID驱动 源码分析

    //Linux设备驱动之HID驱动 源码分析 http://blog.chinaunix.net/uid-20543183-id-1930836.html HID是Human Interface De ...

  3. linux epoll 开发指南-【ffrpc源码解析】

    linux epoll 开发指南-[ffrpc源码解析] 摘要 关于epoll的问题很早就像写文章讲讲自己的看法,但是由于ffrpc一直没有完工,所以也就拖下来了.Epoll主要在服务器编程中使用,本 ...

  4. linux下 如何调试php,linux下使用gdb对php源码调试

    title: linux下使用gdb对php源码调试 date: 2018-02-11 17:59:08 tags: --- linux下使用gdb进行php调试 调试了一些php的漏洞,记录一下大概 ...

  5. linux应用程序逆向,Linux下查看并下载命令源码包(根据命令/应用程序逆向获取并且安装其所属源码包)...

    使用linux的过程中,我们会熟悉各种命令,偶尔我们不禁会问,这些命令是怎么实现的,学习他们其实是学习linux高级系统编程很快捷的方法. 这些命令的源码肯定是存放在相应的包里面,但是是哪些包呢? 发 ...

  6. Linux内存管理 brk(),mmap()系统调用源码分析2:brk()的内存释放流程

    Linux brk(),mmap()系统调用源码分析 brk()的内存释放流程 荣涛 2021年4月30日 内核版本:linux-5.10.13 注释版代码:https://github.com/Rt ...

  7. Linux Zero-copy零拷贝技术:源码示例

    <Linux Zero-copy零拷贝技术:源码示例> <Linux Zero-copy零拷贝技术全面揭秘> <什么是mmap?零拷贝?DMA?> <Linu ...

  8. Linux环境下安装MySQL(源码安装)

    Linux环境下安装MySQL(源码安装) 1.事先从官网/国内镜像站点中下载源码安装包,上传至服务器: 2.安装开发工具和开发包(从5.5开始使用cmake编译) 3.创建用户和组 4.编译安装My ...

  9. 图文深度解析Linux内存碎片整理实现机制以及源码

    图文深度解析Linux内存碎片整理实现机制以及源码. 物理内存是以页为单位进行管理的,每个内存页大小默认是4K(大页除外).申请物理内存时,一般都是按顺序分配的,但释放内存的行为是随机的.随着系统运行 ...

最新文章

  1. 经理让我复盘上次Redis缓存雪崩事故
  2. 今年两会大火的新基建,平均企业月薪1.63万 | 2020新基建中高端人才市场就业吸引力报告...
  3. java 获取文件版本号_Java 获取资源文件路径
  4. Sitecore安全性第1部分:自定义角色和权限
  5. Python测试演讲稿收集
  6. 消息中间件(Kafka/RabbitMQ)收录集
  7. shiro启动之后页面访问不了_java:shiro入门——4
  8. Linux——CentOS建立一个最高权限的用户
  9. Extjs chart 总结 reload-chart.js 修改
  10. SAP自学指南:案例公司的需求分析
  11. 数位DP入门题 hdu 2089 hdu 3555
  12. java项目源码分享——适合新手练手的java项目
  13. 计算机组成与设计概念总结
  14. 太极熊猫3服务器维护中,太极熊猫3月10日维护公告_瑞兽稀有技修改_蚕豆网新闻...
  15. qlistview 自定义控件_是否可以将自定义小部件添加到QListView中?
  16. Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  17. 虚拟机安装debian教程
  18. 数据结构考试的一些选择题
  19. Rk3588 Rk3588s对比
  20. html鼠标拖动变换大小案例,js实现鼠标拖拽缩放div实例代码_哒哒_前端开发者

热门文章

  1. java动态添加view
  2. # 自定义异常类 问题: 请使用代码实现 每一个学生(Student)都有学号,姓名和分数,分数永远不能为负数 如果老师给学生赋值一个负数,抛出一个自定异常
  3. 用StringBuilder 或StringBuffer: 把字符串“ABCDE”,转变成字符串“A,B,C,D” (注意,最后一个E是需要删除的)
  4. OCR算法识别率怎么评估?
  5. 【转】时间序列分析——基于R,王燕
  6. 洛谷P4315 月下“毛景树”
  7. 用python实现:找出1到101 之间的质数
  8. jQuery选择器引擎和Sizzle介绍
  9. 20135313_exp5
  10. 新手Java程序员找工作更看重Java项目经验?