【问题标题】:Meteor will not run without Sudo?Meteor 没有 Sudo 就不会运行?
【发布时间】:2014-12-19 14:26:41
【问题描述】:

在 OSX Yosemite 和最新版本的流星 (1.0.1) 上,无论我卸载并重新安装多少次,如果没有 sudo,我似乎无法让它运行。我的用户帐户是管理员帐户。但是没有 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 并将其添加到环境变量中
  • @BallPython 每次你做chmod 777,在世界的某个地方,一只小猫会死去
  • @janos - 哈哈,是的)但我建议它只是为了确保它能够正常工作

标签: bash meteor permissions terminal sudo


【解决方案1】:

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

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

解决步骤:

  1. 在基目录上添加权限:sudo chmod +rx /usr/local/bin
  2. 如有必要,将基目录添加到PATHPATH=$PATH:/usr/local/bin

供将来参考:

  • 当您收到此类错误时:-bash: XYZ: command not found
    • 首先要检查的是找到XYZ的绝对路径,例如/path/to/XYZ
    • 尝试使用绝对路径/path/to/XYZ运行
  • 如果使用/path/to/XYZ 运行会得到-bash: /path/to/XYZ: Permission denied,这意味着您对文件和/或目录的权限存在问题:
    • 您需要对文件本身具有读取和执行权限:sudo chmod +rx /path/to/XYZ
    • 您需要对指向该文件的所有路径元素具有 exec 权限:sudo chmod +x /path /path/to
  • 修复权限问题后,使用/path/to/XYZ 运行应该可以工作
  • 修复权限问题后,如果使用XYZ(没有完整路径)运行仍然无法正常工作,这意味着/path/to 不在您的PATH 上。用PATH=$PATH:/path/to 修复

注意:上述sudo chmod 命令授予所有用户权限(读取和执行):所有者+组+其他。在 OP 的情况下(以及在最常见的情况下),这非常好。 在权限设置更复杂的情况下,您可能需要更具体,并使用g+rx 而不是+rx

(供记录)

如果它与sudo 一起使用,而没有sudo 你得到command not found,这意味着meteorPATH 上用于root,但不适用于您的用户。要使其适用于您的用户,您需要找到meteor 的路径并将其添加到您用户的PATH。例如:

  1. 通过sudo su - 成为根用户
  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

从您的 cmets 看来,您的用户似乎也没有对 /usr/local/bin 目录本身的权限。用这个命令修复它:

sudo chmod +rx /usr/local/bin

【讨论】:

    【解决方案2】:

    运行它不需要管理员帐户,标准用户帐户可以正常工作。您可以通过键入which 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 来删除它。
    • 然后先使用 sudo 删除文件
    • 是的,我已经这样做了,并重新安装了它。每次我尝试运行流星、创建应用程序等时,它都会显示-bash: meteor: command not found,除非我使用 sudo 运行它。
    猜你喜欢
    • 1970-01-01
    • 2014-01-15
    • 1970-01-01
    • 1970-01-01
    • 2015-07-02
    • 1970-01-01
    • 2020-04-07
    • 2015-07-25
    • 1970-01-01
    相关资源
    最近更新 更多