Linux os下制作deb包

在 linux os下制作 `.deb` 包涉及以下几个主要步骤。假设已经有一个应用程序或软件项目,并且希望将它打包为一个 `.deb` 包。

1. 准备源代码和构建环境

首先,需要准备好应用程序的源代码,并确保它可以在开发环境中成功编译和运行。

2. 创建目录结构

创建一个目录结构用于存放打包所需的文件和信息:

```bash

mkdir -p mypackage-1.0/DEBIAN

mkdir -p mypackage-1.0/usr/local/bin

```

在这个示例中,`mypackage-1.0` 是包的根目录,其中 `DEBIAN` 目录包含控制文件,`/usr/local/bin` 是希望安装二进制文件的位置。

3. 创建控制文件

在 `DEBIAN` 目录中,创建一个名为 `control` 的文件。这个文件包含包的元数据信息,例如包名、版本、维护者、依赖项等。

```bash

nano mypackage-1.0/DEBIAN/control

```

`control` 文件的内容示例:

```text

Package: mypackage

Version: 1.0

Section: base

Priority: optional

Architecture: amd64

Depends: libc6 (>= 2.29)

Maintainer: Your Name <your.email@example.com>

Description: My custom package

 This is a custom package created for demonstration purposes.

```

4. 复制文件到目录结构中

将应用程序的二进制文件或脚本复制到适当的目录中。例如,如果有一个可执行文件 `myapp`,将它复制到 `usr/local/bin`:

```bash

cp myapp mypackage-1.0/usr/local/bin/

```

5. 设置文件权限

确保所有的文件和目录都有正确的权限。即相应的二进制文件有可执行权限:

```bash

chmod 755 mypackage-1.0/usr/local/bin/myapp

```

6. 构建 `.deb` 包

使用 `dpkg-deb` 命令来构建 `.deb` 包:

```bash

dpkg-deb --build mypackage-1.0

```

这将生成一个名为 `mypackage-1.0.deb` 的包文件。

7. 测试安装 `.deb` 包

可以使用 `dpkg` 命令安装刚刚创建的 `.deb` 包,以测试它是否正确安装和运行:

```bash

sudo dpkg -i mypackage-1.0.deb

```

8. 验证安装

确保应用程序安装到正确的位置并能正常运行。可以通过运行程序或检查安装路径中的文件来验证。

9. 处理依赖项(可选)

如果包依赖其他包,可以在 `control` 文件中指定依赖项。在安装时,使用 `apt-get install -f` 来自动安装缺少的依赖项。

10. 发布 `.deb` 包

如果一切正常,可以将 `.deb` 包发布或分发给其他用户,他们可以通过 `dpkg -i` 命令安装包。

反解析一个实际示例:

以vlc_3.0.16-1build7_amd64.deb为例

ar解压vlc_3.0.16-1build7_amd64.deb

解压control.tar.zst

control文件包含vlc_3.0.16-1build7_amd64.deb文件的元数据信息:

解压data.tar.zst

在执行 apt install 或 dpkg -i 时,Debian 包管理系统会根据 .deb 包中的 data.tar.*(通常是 .tar.gz 或 .tar.zst)的内容来决定文件安装的位置。具体位置是由 .deb 包中的文件结构决定的。

data.tar. 的结构:* data.tar.* 文件包含了软件安装后的文件系统结构。例如,如果 data.tar.* 中包含 usr/bin/vlc,那么安装时,这个文件就会被解压到系统的 /usr/bin/vlc 位置。

安装路径: .deb 包的内容在解压时会直接映射到系统文件结构中。例如,usr/bin/ 会对应到系统的 /usr/bin/,usr/lib/ 会对应到系统的 /usr/lib/,依此类推。

是的, 看到现在的小伙伴可能已经发现问题了, 就是我上面截图的目录中不包含./usr/bin呀,是的没错,我来解释下原因:

查看的 data.tar.zst 文件仅代表了vlc工具的一部分内容。

Debian 包可能由多个 .deb 文件组成,特别是大型软件,如 VLC,它可能包含多个子包,每个子包都包含不同的文件集。通常,一个应用程序的二进制文件(如 vlc)会在主程序包中,而其他文件(如文档、桌面文件等)可能在不同的子包中。解压的 vlc_deb 是一个特定的子包,并不包含所有文件,尤其是可执行文件部分。

其次我们给出这个解析示例的原因是, 举一反三的目的, 给一个标准的示例, 那么我们在构架deb包的时候可以依据标准示例来做。

  • 22
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值