在 makefile 中运行任何 git 命令时出现权限错误

jkw*_*l87 1 git permissions makefile

在任何 makefile 中运行任何 git 命令时,我都会因为反复遇到权限错误而慢慢变得疯狂:

例如运行 make 针对:

a:
    git --version
Run Code Online (Sandbox Code Playgroud)

将导致:

make: git: Permission denied
make: *** [makefile:<line number>: <target>] Error 127 
Run Code Online (Sandbox Code Playgroud)

观察结果:

  • 即使是最琐碎的命令也会发生,例如 git status
  • 以 root 身份运行时发生
  • 无论目录和文件权限如何都会发生
  • 如果直接运行,给定的命令运行没有问题
  • 重新格式化并重新安装操作系统后,问题消失了,但几个月后又重新出现
  • BSD bmake 似乎工作正常

环境:

  • Arch Linux x86-64
  • GNU Make v4.3
  • git v2.26.2

我在工作中广泛使用 makefile,这个问题慢慢变得越来越令人沮丧。如果有人对如何解决此问题有任何见解或建议,我们将不胜感激。谢谢。

Mad*_*ist 5

如果您提供了您尝试运行的给出上述错误的配方,甚至是调用的命令的 make 输出,那将非常非常有帮助。如果没有的话,我们只能猜测,这有点浪费大家的时间:)

我的怀疑是这样的:您的目录中有一个目录$PATH,其中有一个名为的目录git,并且该目录出现/usr/bin在您的$PATH.

GNU make 4.3 中存在一个错误(实际上该错误存在于 GNU make 使用的 gnulib 中),该错误在搜索PATH.

但是,如果您的配方以非平凡的方式(作为 shell 脚本的一部分)调用,则这不会成为问题。git

检查这一点的最快方法就是在命令行中添加分号;您没有向我们展示整个食谱,因此我们无法确定,但如果您有:

foo:
        git --version
Run Code Online (Sandbox Code Playgroud)

尝试将其更改为:

foo:
        git --version;
Run Code Online (Sandbox Code Playgroud)

看看它是否有效。