Meteor需要sudo权限才能运行?

6
在OSX Yosemite和最新版本的meteor(1.0.1)上,无论我卸载和重新安装多少次,似乎都无法在没有sudo的情况下运行它。我的用户帐户是管理员帐户。但meteor拒绝在没有sudo的情况下运行。我收到的所有错误都是:
-bash: meteor: command not found

我在这里看到了一些类似的问题帖子。我已经尝试使用磁盘工具修复磁盘权限。我还尝试过:

sudo chown -R $myUsername /usr/local/bin/meteor

我不确定还能做什么,因为这似乎是权限问题。有人有什么建议吗?

可能有用的附加信息:

$ sudo which meteor
/usr/local/bin/meteor
$ sudo ls -l /usr/local/bin/meteor
-rwxrwxrwx 1 root wheel 3528 Dec 18 23:14 /usr/local/bin/meteor
$ ls -ld /usr/local/bin
drwx------ 6 502 wheel 204 Dec 18 23:14 /usr/local/bin

顺便提一下,ls -l /usr/local/bin/meteor 只能通过 sudo 命令使用。

将 "chmod 777 meteor" 添加到环境变量中。 - midori
1
@BallPython 每当你执行 chmod 777 命令时,世界上就会有一只小猫咪离开人世。 - janos
@janos - 哈哈,没错) 但我建议这样做只是为了确保它能正常工作。 - midori
2个回答

11

在我们澄清了meteor可执行文件及其基本目录的权限之后,问题变得很明显:

  • Meteor二进制文件位于/usr/local/bin/meteor
  • 您的用户没有访问目录/usr/local/bin的权限

解决步骤:

  1. 对基本目录添加权限:sudo chmod +rx /usr/local/bin
  2. 如果需要,请将基本目录添加到PATHPATH=$PATH:/usr/local/bin

以供参考:

  • 当出现此类错误时:-bash: XYZ:命令未找到
    • 首先要检查XYZ的绝对路径,例如/path/to/XYZ
    • 尝试使用绝对路径/path/to/XYZ运行
  • 如果使用 /path/to/XYZ 运行时出现-bash: /path/to/XYZ: 权限被拒绝 ,则表示文件和/或目录的权限存在问题:
    • 您需要在文件本身上具有读取和执行权限:sudo chmod +rx /path/to/XYZ
    • 您需要在所有导致该文件的路径元素上具有执行权限:sudo chmod +x /path /path/to
  • 解决权限问题后,使用/path/to/XYZ应该可以正常工作
  • 修复权限问题后,如果仍无法使用不带完整路径的XYZ(即 /usr/local/bin/XYZ),则表示/path/to不在您的PATH中。使用PATH=$PATH:/path/to修复。

注意:上述sudo chmod命令为所有用户(所有者+组+其他人)授予了权限(读取和执行)。在大多数情况下(包括本例),这是完全可以接受的。 在具有更复杂权限设置的情况下,您可能需要更加具体,并使用g+rx而不是+rx

(仅供记录)

如果已通过sudo工作,并且没有使用sudo时出现“command not found”,则表示meteor对于root而言在PATH上,但对于您的用户而言不在PATH上。要使其对您的用户起作用,您需要找到meteor的路径并将其添加到您的用户的PATH中。例如:

  1. 使用sudo su -成为root
  2. 找到meteor的路径,运行命令:which meteor
  3. 退出root(Control-D)以返回您的用户
  4. 将基本目录添加到PATH中,例如,如果早先which meteor给出了/usr/local/bin/meteor,则执行以下操作:PATH=$PATH:/usr/local/bin

之后,它应该对您的用户起作用。要使其“永久”,请在~/.bashrc中添加最后一步。

如果仍然无法正常工作,则可能是您的用户没有文件的执行权限。使用以下命令修复此问题:

sudo chmod +x /usr/local/bin/meteor

从您的评论中,似乎您的用户对 /usr/local/bin 目录本身没有权限。使用以下命令解决此问题:

sudo chmod +rx /usr/local/bin

3
不需要管理员帐户即可运行,标准用户帐户可以正常工作。您可以通过输入which meteor来查找meteor文件。它会告诉您正在使用哪个文件执行。
尝试删除您主目录中的.meteor文件夹,例如rm -rf ~/.meteor和bin文件夹中的脚本rm /usr/local/bin/meteorrm 'which meteor'(那里的引号是波浪线上面的引号)。
然后使用curl https://install.meteor.com/ | sh命令重新安装Meteor而无需sudo权限。希望可以安装所有正确的权限...

我从来没有使用sudo安装过它。这是我唯一能做的部分。我刚刚重新安装了它,但是我甚至无法使用rm /usr/local/bin/meteor删除该文件夹,它告诉我“权限被拒绝”... which meteor指向那个目录。即使要删除它,我也需要使用sudo。 - Rashad Nasir
然后使用sudo命令先删除这些文件。 - Aaron
是的,我已经这样做了,并重新安装了它。每次我尝试运行meteor、创建应用程序等时,除非我使用sudo运行它,否则都会显示“-bash:meteor:找不到命令”。 - Rashad Nasir

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接