sudo make install:权限被拒绝

Woj*_*tek 5 sudo ubuntu-10.04 installation

我有一个关于从源代码构建的最烦人的问题。我已经搜索了很长时间的答案,但无处可寻……我以前从源代码编译过软件,这让我感到困惑。

所以我试图从源代码安装 python 2.7.2。我可以做一个成功的./configure,也make似乎运行良好。但是当我这样做时sudo make install,我会遇到各种各样的错误......

首先,sudo make install给我这个:

make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.
Run Code Online (Sandbox Code Playgroud)

所以我做了chmod +rx Makefile*。无济于事。

然后,sudo ls .

ls: cannot access .: Permission denied
Run Code Online (Sandbox Code Playgroud)

然后ls -d .说权限是drwxr-x---

然后,作为一种绝望的措施,chmod +rx .. 这给了我:

make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.
Run Code Online (Sandbox Code Playgroud)

所以一些进展......这里发生了什么?看起来像是某种权限问题。我认为 sudo 将是解决方案,但显然这里还有其他事情......我试过了,sudo -s但我又一次遇到了那些权限问题......

我正在使用 Ubuntu 10.04LTS。

Fat*_*ror 7

我相信您所遇到的实际上是一种称为“根壁球”的 NFS 策略。用户在特定主机上需要 root 权限的情况并不少见,但您不希望他们在共享 NFS 卷上拥有相同类型的权限。因此,授予本地 root 访问权限不允许用户对任何已挂载的 NFS 卷进行粗暴运行并访问/修改其他用户的文件——NFS 服务器会将 root 的 uid 从 0 映射到 65534 ( nobody),这就是为什么您可以甚至不列出您的示例中的目录。

所以,这给你留下了几个选择:

  1. 您可以尝试nobody通过chmod -R o+rw .在顶级目录中执行 a来使构建中的所有文件都可以访问,授予“其他人”对您的文件的读/写权限(可能不够,也可能不够——例如,您可能需要o+x目录,如果它需要搜索它们)。
  2. 如果您有权访问 NFS 服务器的/etc/exports文件,那么您可以禁用根压缩(可能不是一个好主意)。
  3. 只是建立在本地目录一样/usr/local/src/usr/src/tmp等,或者只是创建自己的本地目录(你甚至可以把它归用户)一样/scratch/myuser。这可能是引起最少头痛的选项。