我们通常在使用Debian系的Linux系统时,常常会遇到一些deb格式安装包。我们也知道,使用dpkg
命令即可安装。
当然,也会下载到一些软件是压缩包,就没那么方便了。我们能不能把它自己打包成deb安装包呢?当然是可以的。
其实,制作一个deb安装包是个很简单的事情。
1,认识deb安装包结构
在制作安装包之前,我们认识一下deb包的内容:
这是我要打包的内容,可见除了DEBIAN
文件夹,其余都是应用程序文件,这里其余部分的目录模拟了安装目录(看起来和安装完成后根目录里面对应内容结构一致),这是因为deb安装包安装就是把内容释放到了根目录/
下。
DEBIAN
文件夹中必须有control
文件,表示安装包基本信息。
除此之外,其中还可以有:
preinst
软件安装之前会执行的脚本postinst
软件安装完成后执行的脚本prerm
软件卸载前会执行的脚本postrm
软件卸载后会执行的脚本
这四个脚本非必须,如果有,这四个脚本文件必须要有可执行权限。
2,开始制作安装包
今天下载了typora,但是是压缩文件格式的,我们就以制作typora的安装包为例开始。
(1) 创建一个目录存放所有文件
我创建了一个名为pack
的文件夹,位于/home/maiqu/Downloads/pack
,放置安装包内容和配置。下文也以此为例。
(2) 创建DEBIAN
文件夹并编写control
文件
我们在pack
文件夹中创建DEBIAN
文件夹,并在里面新建control
文件,并编辑control
文件。
我这里control
内容如下:
Package: typora Version: 13.6.1 Section: utils Priority: optional Architecture: amd64 Installed-Size: 218600 Maintainer: swsk33<example@163.com> Provides: typora Description: 自己打包的Typora安装包。
上述字段意义如下:
Package
包名Version
版本号Section
软件的类别,可以是utils
、net
、mail
、text
、devel
等等Priority
软件对于系统的重要程度,如required
、standard
、optional
、extra
等等Architecture
架构,32位软件填写i386
,64位软件填写amd64
,如果是既能在32位系统运行又能在64为系统运行可以填写all
Installed-Size
安装后大小,单位为kbMaintainer
维护者,为维护者名<邮箱>
的形式Provides
供应者Description
描述
上面的字段是必须字段或者常用字段,除此之外,control
文件还可以有以下字段,以下字段非必须,按需加入:
Essential
申明是否是系统最基本的软件包,值为yes
或者no
,如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载Depends
软件所依赖的其他软件包和库。如果是依赖多个软件包,彼此之间采用英文逗号隔开(例如该值为libc6, default-jre
,说明该软件包依赖于libc6
和default-jre
这两个软件包,缺一不可)Pre-Depends
软件安装前必须安装、配置依赖性的软件包和库Recommends
这个字段表明推荐的安装的其他软件包Suggests
建议安装的其他软件包
注意,control
文件最末尾必须保留一个空行,否则打包会报错。
(3) 将待打包内容放进来
上面我们知道了,其余内容即为被打包的软件内容,会被直接释放到根目录。那么我们这里也需要保持目录结构。
例如我想让typora安装到/opt
文件夹中,那么我们这里就在pack
文件夹中创建opt
文件夹,将typora文件夹放进这个opt
文件夹:
我们知道了除了DEBIAN
文件夹,其它内容都会被直接放到根目录,那么这时我们就要在这里模拟出安装目录,把应用程序文件进行一个组织,以让它安装到我们想要的位置。
(4) 快捷方式
之前写了个博客讲解Linux创建快捷方式的方法,这里就不再赘述Linux快捷方式文件怎么写了,直接参考这个博客即可:链接
当然,我们知道快捷方式文件都位于/usr/share/applications
目录下,因此这里我们需要在我们的pack
文件夹中建立起/usr/share/applications
,在里面新建一个desktop
文件表示快捷方式。
不过需要注意的是,快捷方式的可执行文件、图标、运行目录指向必须对应为这个安装包安装完成后我们的应用程序所在位置,如下图:
3,打包
刚刚完成了安装包配置文件编写,现在就可以打包了。使用dpkg
命令打包:
dpkg -b"待打包目录""生成deb安装包目录"
我的待打包内容都在/home/maiqu/Downloads/pack
文件夹下,那么我执行命令:
cd /home/maiqu/Downloads dpkg -b"pack""Typora-linux.deb"
等待安装包构建完成,然后我们就可以使用dpkg -i
命令安装它了!
如果要卸载,还是使用apt remove
命令即可,包名就是上面control
文件中Package
字段的值。