Linux制作deb格式安装包教程

简介: Linux制作deb格式安装包教程

我们通常在使用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 软件的类别,可以是utilsnetmailtextdevel等等
  • Priority 软件对于系统的重要程度,如requiredstandardoptionalextra等等
  • Architecture 架构,32位软件填写i386,64位软件填写amd64,如果是既能在32位系统运行又能在64为系统运行可以填写all
  • Installed-Size 安装后大小,单位为kb
  • Maintainer 维护者,为维护者名<邮箱>的形式
  • Provides 供应者
  • Description 描述

上面的字段是必须字段或者常用字段,除此之外,control文件还可以有以下字段,以下字段非必须,按需加入:

  • Essential 申明是否是系统最基本的软件包,值为yes或者no,如果是的话,这就表明该软件是维持系统稳定和正常运行的软件包,不允许任何形式的卸载
  • Depends 软件所依赖的其他软件包和库。如果是依赖多个软件包,彼此之间采用英文逗号隔开(例如该值为libc6, default-jre,说明该软件包依赖于libc6default-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字段的值。

相关文章
|
2月前
|
Linux 网络安全 Python
linux centos上安装python3.11.x详细完整教程
这篇文章提供了在CentOS系统上安装Python 3.11.x版本的详细步骤,包括下载、解压、安装依赖、编译配置、解决常见错误以及版本验证。
867 1
linux centos上安装python3.11.x详细完整教程
|
8天前
|
Linux Python
Linux 中某个目录中的文件数如何查看?这篇教程分分钟教会你!
在 Linux 系统中,了解目录下的文件数量是常见的需求。本文介绍了多种方法,包括使用 `ls` 和 `wc` 命令组合、`find` 命令、`tree` 命令以及编程方式(如 Python)。无论你是新手还是有经验的用户,都能找到适合自己的方法。掌握这些技巧将提高你在 Linux 系统中的操作效率。
20 4
|
1月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
588 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
424 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
|
24天前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
200 3
|
2月前
|
关系型数据库 MySQL Linux
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
在Linux系统中使用tar.xz压缩包安装MySQL数据库的详细步骤。包括下载MySQL压缩包,解压到指定目录,创建mysql用户和组,设置目录权限,初始化MySQL,配置my.cnf文件,启动服务,以及修改root用户密码。此外,还提供了如何设置Windows远程登录MySQL服务器的方法。
Linux 安装 mysql 【使用 tar.gz | tar.xz安装包-离线安装】
|
1月前
|
Linux C语言 C++
vsCode远程执行c和c++代码并操控linux服务器完整教程
这篇文章提供了一个完整的教程,介绍如何在Visual Studio Code中配置和使用插件来远程执行C和C++代码,并操控Linux服务器,包括安装VSCode、安装插件、配置插件、配置编译工具、升级glibc和编写代码进行调试的步骤。
206 0
vsCode远程执行c和c++代码并操控linux服务器完整教程
|
2月前
|
存储 Linux 5G
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
这篇文章介绍了LVM(逻辑卷管理)如何提供灵活的磁盘管理方式,允许动态调整逻辑卷的大小而不会丢失数据。
Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】
|
1月前
|
Linux 开发工具 Docker
各个类linux服务器安装docker教程
各个类linux服务器安装docker教程
55 0
|
2月前
|
存储 Linux 索引
Linux 下最主流的文件系统格式——ext
【9月更文挑战第8天】硬盘被划分为若干相同大小的块(Block),默认大小为4K,便于灵活管理文件数据。文件数据分散存放于这些块中,提高了数据添加、删除和插入的便利性。