从外部目录调用 makepkg

Calling makepkg from an outer directory

我意识到当我尝试在内部文件中的 PKGBUILD 上调用 makepkg 命令时,例如 makepkg package_name/PKGBUILD,我收到一条错误消息

==> ERROR: PKGBUILD does not exist.

但是当我将当前目录更改为 PKGBUILD 文件、cd package_name 和 运行 makepkg PKGBUILD 的目录时,我没有遇到任何问题。那么,我必须严格位于 PKGBUILD 文件目录中才能调用 makepkg 是真的吗?

谢谢

好像是这样。如果您正在编写此脚本并希望避免来回切换文件夹,则可以选择使用这样的子 shell

(cd package_name && makepkg PKGBUILD)

完成括号内的操作后,它将把您传送回当前文件夹。

命令 makepkg PKGBUILD 并不像您认为的那样。 makepkg 接受 PKGBUILD 的名称作为位置参数,它完全放弃了这一点。

根据联机帮助页,如果您希望指定要使用的 PKGBUILD,则必须使用 -p <buildscript> 选项。同样根据联机帮助页,"The buildscript must be located in the directory makepkg is called from."

$ makepkg -p package_name/PKGBUILD
==> ERROR: package_name/PKGBUILD must be in the current working directory.

如您所见,makepkg 包含的代码可确保您不会尝试做它不允许您做的事情 -- 但您必须 正确使用 makepkg 命令-line 选项以便 makepkg 识别您正在尝试做什么并告诉您您做错了什么。