为了清楚起见,我编辑了我的问题。
TL;DRyay
当我更新 PKGBUILD 文件时,是否会更新我最初从本地 PKGBUILD 安装的软件包?换句话说,AUR 帮助程序可以用于不在 AUR 中的包吗?
详细信息:假设我在本地创建一个 PKGBUILD 文件,并使用它来安装不在 AUR 中的软件包,使用以下步骤:
安装软件包
- 获取构建文件,包括 PKGBUILD 和可能的其他所需文件,例如 systemd 单元和补丁(通常不是实际代码)。
- 验证 PKGBUILD 和随附文件不是恶意的或不可信的。
- 在保存文件的目录中运行makepkg -si。这将下载代码,使用 pacman 解决依赖关系,编译它,打包它,然后安装包。
我按照上述步骤在不使用 AUR 帮助程序的情况下安装软件包后,以后可以使用 AUR 帮助程序保持软件包更新吗?当然,由于该包不在 AUR 中,因此当开发人员发布新版本时,我必须更新本地 PKGBUILD 文件。假设我这样做,一个好的 AUR 助手(例如yay
)能够正确运行makepkg
和pacman -U
吗?
我的动机是为这些非 AUR 包维护相同的工作流程,这意味着我希望使用 AUR 帮助程序来保持它们更新。
更广泛地说,我的问题是,AUR 帮助程序如何确定软件包何时需要更新?他们是否完全依赖在线存储库,或者他们是否可以对 AUR 中未包含的本地软件包做出决定?
如果最后一个问题的答案是肯定的,那么在使用我自己的本地 PKGBUILD 时需要遵循哪些步骤?很明显,当应用程序的新版本发布时,我需要更新我的 PKGBUILD 文件。我是否需要将 PKGBUILD 文件放在某个位置以便使用诸如yay
查找它们之类的工具?我是否需要以yay
某种方式“注册”本地 PKGBUILD 文件?我是否需要遵循有关版本号的特定约定?
答案1
您提到的所有工具都不会自动执行此操作,因为它们都依赖于软件包维护者来更新新版本的 PKGBUILD。唯一的例外是 VCS PKGBUILD,默认情况下它们会提取最新的源代码。
AUR 帮助程序读取 srcinfo 以确定包是否已更新。工作中没有魔法,仍然需要有人进行此操作以及对 PKGBUILD 进行任何其他必要的更改,以触发重建/更新。
您可以编写一个脚本来更新 PKGBUILD,但您实际上承担了维护者角色,因此无论您如何实现它,你必须更新 PKGBUILD。