bon*_*nes 2 ruby permission-denied rvm
在梳理了大量修复程序后,我陷入了停滞。我是 Ruby/编程的新手,并且在今天早些时候安装了 Ruby/RVM 非常好,可以正常工作(单用户),但是发生了一些变化,我尝试修复它可能造成的损害大于好处。
本质上,当我尝试运行我的基本 .rb 文件时,它给了我:
ruby: No such file or directory -- doom.rb (LoadError)
Run Code Online (Sandbox Code Playgroud)
我尝试卸载 RVM 并重新安装,我认为这就是我搞砸的地方。我用过rvm implode,我认为这是一个不完整的删除。现在当我尝试它时,它只是说command not found。大多数其他修复程序都会显示相同的消息,repair以及get head,你有什么。
如果我尝试重新安装任何存在/不存在的东西,我会看到一个充满权限拒绝错误和已经存在的对象的屏幕:
rm: /Users/caroljones/.rvm/src/rvm/patchsets/ruby/1.9.3/p385: Permission denied
.
.
.
scripts/wrapper: Can't unlink already-existing object
scripts/zsh/: Can't update time for scripts/zsh
scripts/zsh/Completion/: Can't update time for scripts/zsh/Completion
scripts/zsh/Completion/_rvm: Can't unlink already-existing object
tar: Error exit delayed from previous errors.
Could not extract RVM sources.
Run Code Online (Sandbox Code Playgroud)
如果我运行echo $PATH,我会得到这个:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
Ruby 安装正常:
ruby 2.0.0p451 (2014-02-24 revision 45167) [universal.x86_64-darwin13]
Run Code Online (Sandbox Code Playgroud)
我认为这归结为没有进行干净的卸载,但我无法弄清楚如何查明内爆留下的垃圾。
如果我可以给你任何其他信息来澄清我的问题,请告诉我。
编辑:如果我运行which ruby我得到这个输出:
/usr/bin/ruby
Run Code Online (Sandbox Code Playgroud)
而$ ls -al ~ | grep rvm我得到:
drwxr-xr-x 5 caroljones staff 170 May 5 17:35 .rvm
Run Code Online (Sandbox Code Playgroud)
我很确定您sudo在(取消)安装过程中的某个时候使用过,这改变了您的权限,并且会解释您的权限拒绝错误。
您的路径配置不正确;“local/bin”目录应该在“usr/bin”目录之前。“本地”目录的想法是它包含您安装的命令,以及覆盖/更新系统安装的预先存在的命令。当“本地”目录在 PATH 中的“usr”目录之前时,它们的命令将在“usr”目录之前找到并使用。按原样,您的路径不允许这样做。代替:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
它应该看起来像:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)
这不会让 Ruby 或 RVM 正确运行,但它会帮助您的命令行体验按预期方式工作。
一旦我们获得有关您的环境/配置的更多信息,我们就可以提供解决方案来让您的系统正常工作。
正如您所建议的那样,我在此过程中的某个时刻使用了一个“sudo”修复程序,该修复程序破坏了我的权限。
sudo将导致在命令运行时创建的文件和目录归 root 所有,并且尝试更改它们会给您带来您看到的错误。您可以通过将文件和目录的所有权归还给您来解决该问题。但是请注意,你不希望这样做慎之又慎。如果您更改了错误的文件,更改所有权可能会将您的机器变成一块砖。
要更改 ~/.rvm 及其所有内容的所有权,请使用:
sudo chown -R caroljones ~/.rvm
Run Code Online (Sandbox Code Playgroud)
之后,应该修复访问 ~/.rvm 中文件的权限问题。
那时你可以运行:
rm -rf ~/.rvm
Run Code Online (Sandbox Code Playgroud)
完全删除 RVM,类似于rvm implode会做的事情。那时我认为您可以安全地重新安装 RVM。
在此之前,请完整仔细地阅读RVM 安装页面。有关于如何修改 ~/.bashrc 或 ~/.bash_profile 以允许在创建 shell 时初始化 RVM 的说明。人们掩盖了这个过程,认为 RVM 一切都很好,但不明白它与他们的系统有什么关系。这不是一个好主意,因为知道什么应该到位将使诊断和修复问题变得容易。
您的 ~/.bashrc 或 ~/.bash_profile 文件之一应该具有在创建 shell 时加载 RVM 的代码。那应该在文件的底部;它不一定是最后一个,但您确实需要了解它可以移动的方式和原因。