【问题标题】:Calling makepkg from an outer directory从外部目录调用 makepkg
【发布时间】:2018-11-13 13:12:22
【问题描述】:
我意识到,当我尝试在内部文件中的 PKGBUILD 上调用 makepkg 命令时,例如 makepkg package_name/PKGBUILD,我收到一条错误消息
==> 错误:PKGBUILD 不存在。
但是当我将当前目录更改为PKGBUILD 文件的目录cd package_name 并运行makepkg PKGBUILD 时,我没有遇到任何问题。那么,我必须严格在PKGBUILD 文件的目录中才能调用makepkg,这是真的吗?
谢谢
【问题讨论】:
标签:
linux
archlinux
package-managers
【解决方案1】:
好像是这样。如果您正在编写脚本并希望避免来回切换文件夹,则可以选择使用这样的子外壳
(cd package_name && makepkg PKGBUILD)
在完成括号内的操作后,它会将您传送回当前文件夹。
【解决方案2】:
命令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 识别您正在尝试做的事情并告诉您您做错了什么。