0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 软件开发

如何把自己的软件制作成软件包呢?

发表时间:2023-10-28 17:02:20

文章来源:炫佑科技

浏览次数:213

菏泽炫佑科技

如何把自己的软件制作成软件包呢?

文件是为 Arch Linux 及其衍生产品(例如 Arch Linux)构建和创建软件包的方式。

如果您曾经使用过 AUR(Arch Linux 用户维护的存储库)软件制作,您甚至可能遇到过它们。

但究竟如何从一个可安装包变成一个可安装包呢? 两者之间究竟发生了什么,又如何将自己的软件做成软件包呢? 您将在本文中了解这些内容。

基础知识

对于熟悉 Bash 或其他 shell 的人来说,您可能知道它只是带有一些变量的 shell 脚本。

该文件由变量和函数组成,所有这些都用于定义包本身以及如何构建它。

为了从中创建包,需要命令行工具。 获取文件后,只需在包含的目录中运行 ` 即可获得可安装的包。

在本教程中,您将看到我刚刚制作的一个包,其中打印了“Hello World!” 运行时。

准备

为了继续本教程,您需要创建一些文件。

首先,您需要创建一个名为 的文件,它将作为构建包的“配方”。

您需要创建的另一个文件是一个名为 hello-world.sh 的文件。 稍后我将解释其目的。

您还可以使用一个命令创建这两个文件:

touch PKGBUILD hello-world.sh

您可以使用 ls 命令检查这些文件是否创建。

那么你就可以出发了!

设置您的文件

我不会让您复制并粘贴整个文件,而是与您一起键入每一行,以便您可以更好地理解每一行的用途。 如果您不喜欢这种学习方式,我强烈推荐有关为 Arch Linux 创建软件包的 Arch wiki 文章。

本文并不介绍每一个可以设置的选项,只是介绍一些常用的选项,以便您尽快上手。

话虽如此,打开文本编辑器,让我们开门见山。

首先存在变数。 这是在安装过程中定义包名称的内容,也是 Arch Linux 的包管理器跟踪包的方式。

该变量(以及其他一些变量)的格式为=value,变量名在左边,变量值在右边,用等号分隔。

要设置包的名称,请输入以下内容:

pkgname="hello-world"

正如变量名称本身所示,它设置包的版本(即 1.0.0)。 这在用户更新系统时很有用,因为设置更高版本会提示用户升级。

要设置版本号,请输入以下内容(在上一行之后):

pkgver="1.0.0"

这与变量有关,通常不需要知道。 但就像变量一样,如果更改为更高的数字,则会通知用户升级。

它适用于任何需要保持不变的情况,例如某些东西本身已经改变。 如果您为您使用的程序创建一个程序(并且希望保持程序包版本相同)并且需要修复程序本身的错误,那么这非常有用。

要设置此变量,请输入以下内容:

pkgver="1"

该变量应始终从 1 开始,并一次向上移动一个。 当该变量自身升级时,它可以(并且应该)重置为 1,因为它本身会通知用户升级。

这将设置包的描述,可以用来帮助更好地识别包。

要设置它,只需将描述放在引号内即可:

pkgdesc="Hello world in your terminal!"

此变量设置包兼容的硬件架构。 如果您不明白模式是什么,也没关系,因为在大多数情况下,这个变量几乎没有用处。

无论如何,它仍然需要进行设置,以便它知道这个包与我们的系统兼容。

该变量支持设置多个值,因此需要不同的语法,如下所示。

要进行设置,请输入以下内容:

arch=("x86_64")

如果要设置多个值,则需要用空格和引号分隔每个值,如下所示。 拱门=(“”“手臂”)。

这列出了提供我们的包所需的功能的所有包。 与 arch 一样,它也可以包含多个值,因此必须使用括号语法。

由于我们的包没有任何依赖项,因此我们不需要在 . 但是,如果我们的包具有依赖项,我们将使用与 arch 相同的语法。

以下是不提供所需功能但提供附加功能的软件包列表。

这与 的语法相同。

这告诉我们哪些包可能会导致我们的包出现问题,或者以我们不希望的方式运行。

在安装我们的软件包之前,此处列出的任何软件包都将被卸载。

这与 的语法相同。

这定义了您的程序使用的软件许可证。 如果您需要帮助选择许可证,Arch wiki 提供了一些信息。 如果您不知道如何设置,只需将其设置为 即可。

这与 arch 和相同的语法:

license=("custom")

这是如何知道使用哪些文件来构建我们的包的方法。 它可以包含各种不同类型的源,包括本地文件和 URL。

添加本地文件时如何把自己的软件制作成软件包呢?,输入相对于该文件的文件路径,例如以下目录布局:

PKGBUILD
file.txt
src/file.sh

如果您想在我们的文件中包含 file.sh,则需要输入 src/file.sh 作为其名称。

输入URL时,只需输入完整的URL即可,即:

您的包只需要 hello-world.sh 文件,并且由于它位于同一目录中,因此您只需输入其名称作为值。

该变量也使用与 arch 相同的语法:

source=("hello-world.sh")

这用于验证文件未被修改或下载不正确。 有关如何获取此值的信息可以在 Arch Wiki 文章中找到。

如果您不想设置此项(或者您只是不需要它,例如对于本地文件),您可以为变量中的每个文件输入 SKIP:

sha512sums=("SKIP")

这是实际制作包的*后也是*重要的部分。 在处理这个问题时,了解两个变量很重要。

包含用于创建包的命令列表。

因此,如果(假设)您需要在 /usr/share/motto.txt 中有一个文件表示“Linux is to”,您将运行如下所示的命令:

package {
  mkdir -p "${pkgdir}/usr/share"
  echo "Linux is superior to Windows" | tee "${pkgdir}/usr/share/motto.txt"
}

关于上述命令的一些注释:

对于您的系统,您将把 hello-world.sh 文件放置在目标系统上的 /usr/bin/hello-world 中。 您还可以让文件说“你好!” 当它运行时。

为此,请输入以下内容:

package {
  echo 'Hello to you!' > "${srcdir}/hello-world.sh"
  mkdir -p "${pkgdir}/usr/bin"
  cp "${srcdir}/hello-world.sh" "${pkgdir}/usr/bin/hello-world"
  chmod +x "${pkgdir}/usr/bin/hello-world"
}

然后就完成了! 使用 -si 构建并安装包,然后在终端中运行 hello-world 以查看其输出。

总结

就这样,你已经做了你的**个! 您正在为自己甚至为 AUR 制作一个实际的包。

是有什么问题,还是有什么问题? 请随时在下面的评论部分留言。

通过:

作者:选题:译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux China 自豪推出

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多