Linux制作deb包的方法详解
为了方便管理一些程序或脚本,可以将这些程序以及脚本都制作在一个deb包中, 本章节将介绍如何制作一个deb包, 制作deb的方式很多,如使用dpkg-deb方式、使用checkinstall方式、使用dh_make方式及修改原有的deb包, 本章将介绍如何从零制作一个自己的deb包,以及修改原有的deb包。
什么是deb包
deb包是在linux系统下的一种安装包,有时我们在网上下载的Linux软件安装包也会以deb包的形式出现, 由于它是基于tar包的,所以同样会记录着文件的权限信息(读、写、可执行)、所有者、用户组等。
我们可以使用命令:dpkg -l 来查看系统以及安装了哪些deb包
deb包的组成结构
安装的内容,这部分类似linux的根目录,表示需要将软件安装到linux系统上的文件目录。
控制信息(放在DEBIAN目录下),通常DEBIAN目录下有如下几个文件。
changelog: 文件记录了deb包的作者、版本以及最后一次更新日期等信息;
control: 文件记录了包名、版本号、架构、维护者及描述等信息;
copyright: 文件记录了一些版权信息;
preinst安装之前调用
# !/bin/bash echo '准备安装<你的文件名>' #执行安装之前的准备命令,可以省略 你的命令
postinst安装完成调用
# !/bin/bash #更新桌面图标数据库 update-desktop-database /usr/share/applications || true #获取当前的用户名 username=`getent passwd \`who\` | head -n 1 | cut -d : -f 1` #判断桌面文件夹是否存在 if [ -d "/home/${username}/Desktop" ]; then echo 'Desktop exist' #将你的桌面文件复制到桌面 cp 你的.desktop文件 /home/${username}/Desktop else echo '桌面文件夹存在' #中文系统自动复制到中文桌面 cp 你的.desktop文件 /home/${username}/桌面 fi
postrm:卸载完成调用
# !/bin/bash #可以省略 rm -rf 你创建的软链接文件 echo '已经卸载<你的文件名>'
prerm:卸载之前调用
# !/bin/bash echo '准备卸载<你的文件名>' #执行卸载之前的准备命令,可以省略 你的命令
其中control、postinst、postrm为必要文件。
从零开始创建自己的deb包
sudo apt-get install build-essential debhelper make autoconf automake dpkg-dev fakeroot pbuilder gnupg -y
my-package/
├── DEBIAN
│ ├── control
│ ├── preinst (可选)
│ ├──postinst (可选)
│ ├── prerm (可选)
│ └── postrm (可选)
└── usr
└── share
└── my-package
└── my-script.sh
在hello_deb目录下创建DEBIAN及opt/hello_deb目录,DEBIAN目录下包含控制信息文件, 而在opt/hello_deb目录下创建hello_deb.sh文件则表示我们需要将hello_deb.sh文件安装到 linux系统的opt/hello_deb目录下。
然后分别给予postinst、postrm、hello_deb.sh文件可执行权限,postinst和postrm的权限必须>=0555且<=0775。
hello_deb/DEBIAN/control
Package: test-deb
Version: 1.0.0
Architecture: arm64
Maintainer: Your Name <your.email@example.com>
Description: A sample package
This is a sample package to demonstrate how to create a deb package.
control文件的末尾需添加一个空行,否则会报错“缺失结尾的换行符”
若以后想升级这个deb包,可以修改该包的版本号Version,值得注意的是Architecture, 前面我们也有讲到,就是该deb包所支持的处理器架构,因为最终要将该deb包安装到arm64处理器的板卡上, 所以我们应该在Architecture中填入arm64属性,大家可根据自己的需求做相应修改即可, 如果不知道你的处理器架可以通过dpkg -l命令来查看已安装的deb包持支的架构, 或者输入lscpu查看处理器信息,aarch64就是arm64架构。若想支持所有架构,可以填入all属性, 如果Architecture属性与当前处理器架构属性不匹配的话,deb包将无法成功安装, 且control的属性信息必须以字母或者数字开头,不然可能导致打包出错。
hello_deb/DEBIAN/postinst
#!/bin/bash echo "deb installing"
当安装了该deb包以后,系统会默认执行postinst脚本, 通常我们利用该脚本来搭建一些为软件执行的环境(如创建目录、修改权限等), 值得注意的是该文件需具有可执行权限。 这里写的比较简单,判断第一个参数,仅供参考。
最后我们来看下真正的程序主体,为了简单起见,此处以一个简单的脚本为例。
hello_deb/opt/hello_deb/hello_deb.sh
#! /bin/bash echo Hello deb! echo This is a test script!!!
脚本仅仅是打印两句信息,用户可自行设置需要执行的程序。
构建打包
万事俱备,只欠东风,当备齐了制作deb包的基本原材料之后我们便可以开始制作属于自己的deb包了, 进入hello_deb目录下,也就是DEBIAN及home文件夹所在的目录,接着输入如下命令来构建软件包。
sudo dpkg-deb -b ../hello_deb ../hello_deb_1.0.0_arm64.deb
其中dpkg-deb是构建deb包命令,-b参数表示要构建一个deb包, …/hello_deb参数表示要构建deb包原材料的路径, …/hello_deb_1.0.0_arm64.deb参数表示将该deb包构建在当前目录的上级目录中, 一般我们构建deb包的名字都会遵循这么一个原则, 其命名方式为:软件名称+软件版本号+该软件所支持的处理器架构, 如软件名为hello_deb,版本号为1.0.0,所支持的处理器架构为arm64。
打包成功后会输出如下信息,并可在上级目录查看到deb安装包
#命令 dpkg -c hello_deb_1.0.0_arm64.deb #打印信息 drwxrwxr-x jiawen/jiawen 0 2022-10-12 09:27 ./ drwxrwxr-x jiawen/jiawen 0 2022-10-12 09:28 ./opt/ drwxrwxr-x jiawen/jiawen 0 2022-10-12 09:28 ./opt/hello_deb/ -rwxrwxrwx jiawen/jiawen 59 2022-10-12 09:41 ./opt/hello_deb/hello_deb.sh
也可使用如下命令查看deb包信息:
#命令 dpkg --info hello_deb_1.0.0_arm64.deb #打印信息 new Debian package, version 2.0. size 976 bytes: control archive=496 bytes. 190 字节, 9 行 control 100 字节, 4 行 * postinst #!/bin/bash 138 字节, 7 行 * postrm #!/bin/bash Package: hello-deb Version: 1.0.0 Section: free Priority: optional Essential: no Architecture: arm64 Maintainer: embedfire <embedfire@embedfire.com> Provides: hell_deb Description: deb test
输入“sudo dpkg -i hello_deb_1.0.0_arm64.deb”命令即可安装, 其中-i 参数表示安装软件,即install
解包
新建一个update_deb目录,使用 dpkg -X 命令将deb包解压到update_deb目录中。
$ ls Desktop Downloads Pictures Templates hello_deb_1.0.0_arm64.deb Documents Music Public Videos $ mkdir update_deb $ sudo dpkg -X hello_deb_1.0.0_arm64.deb update_deb/ ./ ./opt/ ./opt/hello_deb/ ./opt/hello_deb/hello_deb.sh $
进入update_deb目录下可看到并没DEBIAN相关目录,在update_deb目录下使用 dpkg -e 解压出控制文件相关信息。
~/update_deb$ ls opt ~/update_deb$ sudo dpkg -e ../hello_deb_1.0.0_arm64.deb ~/update_deb$ ls -al total 16 drwxrwxr-x 4 1001 1001 4096 Oct 12 13:37 . drwxr-xr-x 15 cat cat 4096 Oct 12 13:35 .. drwxr-xr-x 2 root root 4096 Oct 12 09:28 DEBIAN drwxrwxr-x 3 1001 1001 4096 Oct 12 09:28 opt ~/update_deb$ tree . |-- DEBIAN | |-- control | |-- postinst | `-- postrm `-- opt `-- hello_deb `-- hello_deb.sh 3 directories, 4 files
此时就可以对程序主体进行修改了
以上就是Linux制作deb包的方法详解的详细内容,更多关于Linux制作deb包的资料请关注脚本之家其它相关文章!
相关文章
linux下查看yum/rpm/dpkg某软件是否已安装的方法
这篇文章主要介绍了在linux下查看yum/rpm/dpkg某软件是否已安装的方法,文中给出了详细的示例代码,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。2017-03-03如何利用多核CPU来加速你的Linux命令(GNU Parallel)
这篇文章主要介绍了如何利用多核CPU来加速你的Linux命令(GNU Parallel),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2019-01-01
最新评论