在 Debian 中从源代码构建软件包 [Easy Step-By-Step Guide]

从源代码构建软件包的想法可能不是我们在 Debian 上下文中经常听到的。 它更像是一个 Arch-y 的东西,但在这个模块中,我们将学习如何在任何基于 Debian 的发行版上做同样的事情。

在 Debian 中从源代码构建软件包的步骤

让我们直接进入在 Debian 中从源代码构建软件包的步骤。

第 1 步:设置先决条件

首先,我们需要一些包,它们将在整个构建过程中帮助我们。 所有这些都可以使用以下 apt 命令安装:

$ sudo apt install dpkg-dev devscripts 

第 2 步:从源中获取包

要获取我们的源包,首先,我们需要在我们的 /etc/apt/sources.list 启用它们。 因此,将所述文件打开到您最喜欢的文本编辑器并注释所有行乞求 deb-src 像这样 :

# Generated by distrobuilder deb https://deb.debian.org/debian bullseye main  # Additional line for source packages # deb-src https://deb.debian.org/debian bullseye main 

# Generated by distrobuilder deb https://deb.debian.org/debian bullseye main  # Additional line for source packages deb-src https://deb.debian.org/debian bullseye main 

这允许我们从 易于 存储库直接通过 CLI。 完成更改并使用以下命令更新存储库:

$ sudo apt update 

但是为什么要做出这样的改变呢?

以“开头的行德布“ 是 二进制包 并且可以直接安装 易于 包管理器。 另一方面,以“deb-src”将帮助我们获取将在一分钟内派上用场的源包。

第 3 步:获取源包

现在我们已经准备好了我们的武器库,我们现在可以进入真正的部分了。 首先从存储库中获取一个源包:

$ sudo apt source <package-name> 

对于我们的示例,我们将获取一个简单的“你好世界” 程序:

$ sudo apt source hello 

这应该会在当前工作目录中为我们获取以下 3 个文件和一个文件夹:

  • hello-2.10(文件夹)
  • 你好_2.10-2.dsc
  • hello_2.10-2.debian.tar.xz
  • hello_2.10.orig.tar.gz

使用 ls 命令查看文件夹内的源代码:

$ ls ABOUT-NLS    config.in     doc          maint.mk     README          TODO aclocal.m4   configure     GNUmakefile  Makefile.am  README-dev AUTHORS      configure.ac  hello.1      Makefile.in  README-release build-aux    contrib       INSTALL      man          src ChangeLog    COPYING       lib          NEWS         tests ChangeLog.O  debian        m4           po           THANKS 

这些是主要的源代码内容,它们将帮助我们启动和运行我们的应用程序。

第 4 步:安装构建依赖项

我们尝试构建的应用程序可能需要一些额外的包才能正常运行。 应用程序经常需要一些共享库,而这些库在大多数系统上都不是本机可用的。

为了确保我们拥有我们尝试构建的应用程序所需的所有各种依赖项,我们可以输入:

$ sudo apt build-dep <package-name> 

按照我们的例子,对我们来说这应该是这样的:

$ sudo apt build-dep hello 

如果我们缺少任何库,这应该为我们安装它。 有了这个,我们就可以进入下一步了。

第 5 步:调整我们的源文件(可选)

接下来,我们可以根据我们的要求调整我们的代码以进行必要的更改,这是从源代码构建包的主要优势之一。

我们可以调整位于 源文件 主源目录的子文件夹。 就像在我们的示例中一样,我们发现以下内容:

$ cd hello-2.10/src/ $ ls hello.c  system.h 

看着我们的 hello.c 文件,我们在第 60 行稍作修改,只是为了我们的 PoC 目的:

前 :

greeting_msg = _("Hello, world"); 

后 :

 greeting_msg = _("Compiled From Source !"); 

笔记 如果你以任何方式改变源代码,你必须处理 测试 也相应地。 因此,请务必在“测试“ 目录。

第 6 步:构建包

现在是时候建立我们的 .deb 使用源代码打包。 我们可以通过以下两种方式之一做到这一点:

方法一:使用 解构

要构建我们的包,只需转到源的父目录并键入:

$ sudo debuild -b -uc -us 

让我们稍微分解一下我们的命令:

  • sudo: 以root权限运行命令
  • debuild:这是名称 Perl 脚本 这将帮助我们构建一个包
  • -b:仅构建二进制包
  • -uc:防止链日志签名
  • -us:防止对源代码进行签名

这应该给我们一个 .deb 文件可以在源文件夹所在的同一文件夹中找到。

注意:您可能会发现“数据库符号” 包,它基本上包含了一些可能对开发人员有用的调试信息。

方法二:使用 dpkg-buildpackage

在源代码树的主目录中,键入以下内容来构建您的包:

$ sudo dpkg-buildpackage -b -uc -us 

这里也使用的标志与前一个相同,这也将给我们我们的 .deb 包裹 !

注意 – 如果您没有对源包进行任何更改,您可以直接生成您的 .deb 文件:

$ sudo apt-get source --compile <package-name> 

第 7 步:安装软件包

现在我们有一个 .deb 文件,我们可以简单地安装它:

$ sudo dpkg -i <package-name> 

就是这样! 有了这个,我们应该能够安装我们刚刚构建的包! 如果缺少任何依赖项,我们可以通过以下方式修复它们:

$ sudo apt install -f  

回到我们的示例,我们使用以下命令安装它:

$ sudo dpkg -i hello_2.10-2_amd64.deb 

有了这个,我们可以通过以下方式检查包是否成功构建:

$ hello Compiled From Source! 

它反映了我们修改后的源代码!

结论

因此,我们成功地从 Debian 中的源代码构建了我们的软件包! 这使我们可以完全控制我们的应用程序,允许根据需要进行调整,并且从源代码构建确实非常容易!