[Share Experiences] 二进制文件制作封装成 deb 软件包
Tofloor
poster avatar
爱开发
deepin
2023-08-23 20:46
Author

要将一个二进制文件制作成可以通过 apt install 安装的资源,你需要创建一个 Debian 软件包。Debian 软件包是一种标准的软件分发格式,它包含了软件的元数据、安装脚本以及文件等。

以下是制作 Debian 软件包的基本步骤:

  1. 准备工作环境
    在你的开发环境中,确保已经安装了 dpkg-dev 包,它包含了创建和管理 Debian 软件包所需的工具。

    sudo apt-get update
    sudo apt-get install dpkg-dev
    
  2. 创建软件包目录结构
    在你的工作目录中,创建一个新的目录,用于组织软件包的内容。

    mkdir mypackage
    cd mypackage
    
  3. 创建软件包的控制文件
    在软件包目录中,创建一个名为 DEBIAN 的子目录,用于存放软件包的控制文件。在 DEBIAN 目录中,创建一个名为 control 的文件,它包含了软件包的元数据,如软件名称、版本、描述等。

    示例 control 文件内容:

    Package: mypackage
    Version: 1.0
    Architecture: amd64
    Maintainer: Your Name 
    Description: A description of your package
    
  4. 将二进制文件添加到软件包
    将你的二进制文件复制到软件包目录中,通常放在 /usr/bin (即 软件包子目录 mkdir -p ./usr/bin)或类似目录(比如 /usr/local/bin)下。确保你在 control 文件中正确指定了适当的架构。

  5. 制定安装脚本(可选):
    如果你的软件包需要在安装或卸载时执行特定的操作,你可以在 DEBIAN 目录中创建 postinst(安装后脚本)和 postrm(卸载后脚本)等文件。

  6. 设置文件权限和所有权
    根据需要,为软件包中的文件设置适当的权限和所有权。

  7. 构建软件包
    在软件包目录的上层目录,使用以下命令构建软件包:

    sudo dpkg-deb --build mypackage
    

    这将在同级目录下生成一个 .deb 文件,这就是你的 Debian 软件包。

  8. 安装和测试
    你可以使用 dpkg 命令安装你的软件包进行测试:

    sudo dpkg -i mypackage.deb
    

    然后,你可以运行你的二进制文件,确保它能正常工作。

  9. 上传到仓库(可选):
    如果你希望其他人也能通过 apt 安装你的软件包,你可以将软件包上传到一个 APT 软件仓库。这需要更多的步骤,包括设置一个仓库服务器和发布软件包。

需要注意的是,创建一个完整的 Debian 软件包可能涉及更多的细节和配置。上述步骤只是一个基本指南。如果你计划将软件包发布到公共仓库,还需要了解如何签名和管理你的软件包以确保安全性。


比如:

先制作一个二进制文件

cat > helloworld.c
#include 

int main() {
    printf("Hello, World!");
    return 0;
}

ctrl + c (注意,要有换行。若输入的内容无换行,需要再按“Enter”回车换行)

# 编译成二进制文件
gcc helloworld.c -o helloworld

# 运行二进制文件
./helloworld

# 显示
Hello, World!

将二进制文件复制到 mypackage/usr/bin/ 目录下。

cp ./helloworld ./mypackage/usr/bin/mypackage
mypackage tree
.
├── DEBIAN
│   └── control
└── usr
    └── bin
        └── mypackage

4 directories, 2 files
/# 构建
dpkg-deb --build mypackage

# 安装
sudo dpkg -i mypackage.deb

# 将会将 ./mypackage/usr/bin/mypackage 文件复制到系统目录 /usr/bin/mypackage 中
which mypackage
/usr/bin/mypackage

视频教程:https://asciinema.org/a/BwcRmwD1SyyHMpUT2qK7JTdhr


若想通过 apt install 可安装的方式,需要制作一个 apt 软件仓库。

Reply Favorite View the author
All Replies
阿尼樱奈奈
Moderator
2023-08-23 20:57
#1

like

Reply View the author
wlly-lzh
deepin
2023-08-23 21:00
#2

like

我可以把这个帖子放到我自己的资源收集贴里面吗?

Reply View the author
爱开发
deepin
2023-08-23 21:01
#3
wlly-lzh

like

我可以把这个帖子放到我自己的资源收集贴里面吗?

可以啊。我还在看怎么搞 apt 仓。

Reply View the author
爱开发
deepin
2023-08-24 01:22
#4

折腾了很久,apt repos 服务搭建老是出问题。最后找到了一篇更全面的文章,刚刚搭建了 apt repos,成功了。

https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/


案例如下网址:

https://deb.ppwq.de

# 添加公钥

wget -O - https://deb.ppwq.de/ppwq.gpg | sudo gpg --dearmor -o /usr/share/keyrings/ppwq.gpg

# 添加源

echo "deb [arch=amd64 signed-by=/usr/share/keyrings/ppwq.gpg] https://deb.ppwq.de stable main" | sudo tee /etc/apt/sources.list.d/ppwq.list

# 更新源。可能首次会报 403 错误,再次重试即可

sudo apt update -y
# 搜索

$ sudo apt search hello-world
正在排序... 完成
全文搜索... 完成
hello-world/未知 0.0.1 amd64
A program that prints hello
Reply View the author
vivian_me
deepin testing team
2023-08-24 22:48
#5

很详细哦,我可以整理到wiki中吗?

Reply View the author
爱开发
deepin
2023-08-24 22:52
#6
vivian_me

很详细哦,我可以整理到wiki中吗?

可以啊。

不用再问了…分享出来就是让大家多多为linux社区作贡献的…

Reply View the author
倒吸一口凉屁
deepin
2024-07-27 23:39
#7

厉害啊 强的离谱

Reply View the author