我一直在研究 PKGBUILD 和 makepkg,但我似乎无法弄清楚如何简单地使用已构建的本地可执行文件制作一个包。我需要将它们打包,以便可以轻松地将它们安装在另一台 Linux 机器上。我正在使用 Arch Linux。
我基本上需要从特定目录中获取两个可执行文件,用这些文件制作一个包,然后能够将这些文件安装在另一台 Arch Linux 机器上,位置与 pacman 通常安装可执行文件的位置相同。不使用任何源代码或任何东西,因为应用程序已经构建。
我知道将文件放在 PKGBUILD 文件中的源位置,但是我应该在 package() 函数中放入什么,我是否需要 .install 文件?如果是的话,我需要在那里做什么?
编辑:这个问题已经解决。最佳答案已被标记。
答案1
软件包可以附带与 PKGBUILD 文件位于同一目录中的任意文件。为了您的目的,您可以这样做。在 PKGBUILD 文件的package()
函数中,您可以将这些文件称为${srcdir}/my-executable
.最终结果可能如下所示:
# snip!
source=(my-executable)
sha256sums=('foo')
package() {
install -Dm755 "${srcdir}/my-executable" "${pkgdir}/usr/local/bin/my-executable"
}
您现在可以使用以下命令制作包:
updpkgsums && mksrcinfo && makepkg
请注意,这种方法仅真正适合自制程序包。做不是如果将包上传到 AUR,请采用此方法。与 PKGBUILD 一起提供的文件应该很少更改 - 当然不是每个版本都会更改。如果您的可执行文件是二进制文件,您将无法将包上传到 AUR。 (或者它会起作用,有人会发现它并禁止你。)
有关具体示例,请查看映射表。它将一个简单的包装脚本安装到/usr/bin/mkgmap
.请注意,我使用了一些不合时宜的内容,例如cd "${srcdir}/${pkgname}-${pkgver}"
在package()
.
创建包后,可以使用多种工具将这些包发送到所有主机。一个很好的特定于应用程序的工具是帕斯韦。 (感谢 jasonwryan 的提示。)
另外,请考虑使用像 Ansible 这样的工具。如果您希望包管理器了解这些可执行文件,那么制作一个包是很好的选择。但如果您想将文件放置在用户目录中,例如~/.local/bin/
,配置管理系统可能会更好。