我意识到,当我尝试在内部文件(例如makepkg
)中的PKGBUILD
上调用makepkg package_name/PKGBUILD
命令时,我得到一个错误提示
==>错误:PKGBUILD不存在。
但是当我将当前目录更改为PKGBUILD
文件cd package_name
的目录并运行makepkg PKGBUILD
时,我没有遇到任何问题。因此,是否确实必须严格位于PKGBUILD
文件的目录中才能在其中调用makepkg
?
谢谢
答案 0 :(得分:1)
似乎是这样。如果您正在编写脚本并希望避免来回切换文件夹,则可以选择使用像这样的子外壳
(cd package_name && makepkg PKGBUILD)
完成括号中的操作后,它将把您带回到当前文件夹。
答案 1 :(得分:1)
命令makepkg PKGBUILD
不会执行您认为的操作。 makepkg 不不接受PKGBUILD的名称作为位置参数,并且将其完全丢弃。
根据联机帮助页,如果您希望指定要使用的PKGBUILD,则必须使用-p <buildscript>
选项。同样按照联机帮助页,“构建脚本必须位于调用它的目录makepkg中。”
$ makepkg -p package_name/PKGBUILD
==> ERROR: package_name/PKGBUILD must be in the current working directory.
如您所见,makepkg包含代码以确保您不会尝试做不允许这样做的事情-但您必须正确地依次使用makepkg命令行选项让makepkg知道您要做什么,并告诉您您做错了什么。