1.Arch安装deb包:为 deb 包编写 PKGBUILD 文件
Arch安装deb包:为 deb 包编写 PKGBUILD 文件
在使用 Arch 或 Manjaro 系统时,源码若官方仓库中缺乏所需软件,源码而网上可下载到编译好的源码二进制文件,如 deb 包或 rpm 包,源码这些文件虽可直接使用,源码却不受包管理器 pacman 监控,源码java 网页源码也难以从应用程序启动器中便捷运行。源码
为了解决这一问题,源码Arch Wiki 提供了一个名为 debtap 的源码脚本,用于将 deb 包转换为 pacman 可以直接安装的源码 .pkg.tar.zst 格式。此方法虽简便,源码但由于考虑广泛兼容性,源码有时转换后的源码 .pkg.tar.zst 包会遇到安装问题。
解决这个问题的源码一种有效方法是使用 makepkg 打包软件。虽然初学者可能会感到困惑,源码但了解其工作原理后,便会觉得操作简单。通过编写 PKGBUILD 文件,可以将源代码编译并打包成 .pkg.tar.zst 格式,从而在 Arch 系统中直接安装。
要使用 makepkg 打包软件,网站抓取源码首先需要创建一个 PKGBUILD 文件。系统中提供了一些示例文件,如 /usr/share/pacman/PKGBUILD.proto,供参考。
编写 PKGBUILD 文件时,需要定义软件名、版本、运行架构,并在文件中定义一个名为 package() 的函数,该函数会被 makepkg 自动执行。新媒体源码确保定义 pkgname、pkgver、pkgrel、arch 四个变量,这些是基本的必要参数。
下面是一个简单的 PKGBUILD 文件示例,其中包含软件名、版本、运行架构,并定义了一个包装函数,PHP休假源码仅输出 packaging...,表示打包过程已开始。
构建流程涉及多个步骤。首先,makepkg 通过定义的变量获取软件包的信息,如软件名、版本号等。source 变量用于指示打包过程中所需文件,可以是本地文件或文件网址。makepkg 将获取的精素源码文件验证 MD5 值并存放在 src 目录中,这是进行编译等处理的工作目录。
随后,makepkg 依次执行四个函数:prepare()、build()、check()、package()。prepare() 函数通常用于编译前的准备,如解压文件。build() 函数执行编译。check() 函数检查编译结果。最后,package() 函数进行打包。在我们的例子中,prepare()、build()、check() 函数仅输出提示信息。
在 package() 函数中,我们创建了一个目录 ${ pkgdir}/home,其中 ${ pkgdir} 是软件包目录 pkg/${ pkgname},在安装包时会被复制到相应的目录中。例如,在本例中,文件 m.vsix 被复制到 /home/m.vsix。
运行 makepkg 命令后,目录结构会发生变化。接下来,使用 pacman -U 安装软件包,可以看到 /home 目录下多了文件 m.vsix。通过卸载软件包,/home 目录下的 m.vsix 文件将被删除。
为深入理解 PKGBUILD 文件编写,可以参考 AUR 仓库中提供的其他示例,如 quickapp-ide,通过克隆仓库学习实践。
关于 deb 包的示例,可以提前准备好 wps-office 的 deb 安装包,并与 PKGBUILD 文件放在一起。在 PKGBUILD 文件中,需要将 deb 包解压后得到的 data 目录打包,因为 data 目录包含了需要安装的所有文件。