从外部目录调用makepkg

时间:2018-11-13 13:12:22

标签: linux archlinux package-managers

我意识到,当我尝试在内部文件(例如makepkg)中的PKGBUILD上调用makepkg package_name/PKGBUILD命令时,我得到一个错误提示

  

==>错误:PKGBUILD不存在。

但是当我将当前目录更改为PKGBUILD文件cd package_name的目录并运行makepkg PKGBUILD时,我没有遇到任何问题。因此,是否确实必须严格位于PKGBUILD文件的目录中才能在其中调用makepkg

谢谢

2 个答案:

答案 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知道您要做什么,并告诉您您做错了什么。