如何把自己的软件制作成软件包呢?
发表时间: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 自豪推出