专栏首页Linux知识积累linux下制作deb的方法总结

linux下制作deb的方法总结

deb简介

deb是Unix系统(其实主要是Linux)下的安装包,基于 tar 包,因此本身会记录文件的权限(读/写/可执行)以及所有者/用户组。

由于 Unix 类系统对权限、所有者、组的严格要求,而 deb 格式安装包又经常会涉及到系统比较底层的操作,所以权限等的设置尤其重要。

deb包使用方法

dpkg -c xxx.deb // 安装前根据deb文件查看
dpkg -L debname // 安装后根据包名查看
dpkg -i xxx.deb //安装deb包,如果提示错误,可以加参数—force-all强制安装,但不推荐这样做
dpkg -r debname //移除deb包
dpkg -S filepath //查看某个文件属于哪个deb包
dpkg -X xxx.deb dirname //释放安装内容到dirname目录中
dpkg -e xxx.deb  //释放控制信息到当前目录下的DEBIAN子目录中

deb包的数据组成

deb包里面的结构:DEBIAN目录 和 软件具体安装目录(模拟安装目录)(如etc, usr, opt, tmp等)。

在DEBIAN目录中至少有control文件,还可能有postinst(postinstallation)、postrm(postremove)、preinst(preinstallation)、prerm(preremove)、copyright (版权)、changlog (修订记录)和conffiles等。


控制文件 描述

control 用了记录软件标识,版本号,平台,依赖信息等数据

preinst 在解包data.tar.gz前运行的脚本

postinst 在解包数据后运行的脚本

prerm 卸载时,在删除文件之前运行的脚本

postrm 在删除文件之后运行的脚本

control文件:描述软件包的名称(Package),版本(Version),描述(Description)等,是deb包必须剧本的描述性文件,以便于软件的安装管理和索引。为了能将软件包进行充分的管理,可能还具有以下字段:

Section:申明软件的类别,常见的有`utils’, `net’, `mail’, `text’, `x11′ 等;

Priority:申明软件对于系统的重要程度,如`required’, `standard’, `optional’, `extra’ 等;

Essential:申明是否是系统最基本的软件包(选项为yes/no),如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载(除非进行强制性的卸载)

Architecture:软件包结构,如基于`i386′, ‘amd64’,`m68k’, `sparc’, `alpha’, `powerpc’ 等;

Source:软件包的源代码名称;

Depends:软件所依赖的其他软件包和库文件。如果是依赖多个软件包和库文件,彼此之间采用逗号隔开;

Pre-Depends:软件安装前必须安装、配置依赖性的软件包和库文件,它常常用于必须的预运行脚本需求;

Recommends:这个字段表明推荐的安装的其他软件包和库文件;

Suggests:建议安装的其他软件包和库文件。

control文件完整示例:

Package: mysoftware
Version: 2016-02-26
Section: free
Priority: optional
Depends: libssl.0.0.so, libstdc++2.10-glibc2.2
Suggests: Openssl
Architecture: i386
Installed-Size: 66666
Maintainer: Simon @ newdivide7037#gmail.com
Provides: mysoftware
Description: just for test
                    (此处必须空一行再结束)

使用dpkg命令制作deb包

制作如下目录及文件:

control文件内容: 

postinst文件内容:

# !/bin/sh
echo "my deb" >/home/mydeb.log

postrm文件内容:

# !/bin/sh
rm -rf /home/mydeb.log

完成第一步的制作目录及文件后可以给做好的mydeb目录进行打包成.deb包

$ dpkg -b mydeb mydeb.deb #第一个参数为将要打包的目录名,
                          #第二个参数为生成包的名称

现在完成了deb包的制作。

本文分享自微信公众号 - Linux知识积累(LinuxLearning365),作者:linux知识积累

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-21

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++中函数异常规格的说明

    用户5807183
  • 19个强大、有趣、又好玩的 Linux 命令!

    输出一句话,有笑话,名言什么的 (还有唐诗宋词sudo apt-get install fortune-zh)

    用户5807183
  • 曾是最流行的语言之一,Visual Basic 28年兴衰记

    这是一篇暴露年龄的文章。为什么这么说?因为现在年轻的程序员可能没有接触过当年红极一时的 Visual Basic。28 年前的 1991 年 4 月,Micro...

    用户5807183
  • 文件的打开与关闭-IO1.文件的目的2.文件的打开与关闭 3.文件的读写 4.应用

    就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力

    意气相许的许
  • Python进阶04 函数的参数对应

    我们已经接触过函数(function)的参数(arguments)传递。当时我们根据位置,传递对应的参数。我们将接触更多的参数传递方式。 回忆一下位置传递: d...

    Vamei
  • openCV 扩图

    用户2398817
  • python爬取新浪股票数据—绘图【原创分享】

    逆向小白
  • NetSuite中国横行90%的高续约率 国内ERP厂商需警醒

    记得有一个ERP的资深顾问说过:在传统ERP软件时代,甲骨文在与SAP的竞争中经常被吊打,但是在云时代甲骨文却实现了反转,SAP在甲骨文在面前占不到半点便宜。可...

    人称T客
  • Linux文件时间格式修改

    修改/etc/profile文件,在文件内容末尾加入 export TIME_STYLE=’+%Y-%m-%d %H:%M:%S’ 执行如下命令,使你修改后的/...

    苦咖啡
  • 内置函数filter()和匿名函数lambda解析

    一.内置函数filter filter()函数是 Python 内置的一个高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是...

    用户1679793

扫码关注云+社区

领取腾讯云代金券