对不好的标题表示抱歉,但我无法想出该怎么称呼问题。
是的,所以我决定从Windows转到linux来解决问题,但现在我遇到了其他问题。
当我使用vagrant进行配置并尝试启动我的应用程序时,它会显示require': cannot load such file - /usr/
local/lib/ruby/gems/2.1.0/gems/gem_name-version/lib/gem_name/info
所以我ssh'进入框中并且很好地进入文件夹,我很奇怪。我做ls -l
我得到一份文件清单,其中包括一个据称无法找到我预期的文件(lib/gem_name/info
),但这里是我实际上无法将CD刻录到目录/lib/gem_name
中但是如果可以cat lib\\gem_name\\info.rb
并且显示文件内容。
所有文件的权限是:
-rw-r--r-- 1 root root
,可执行文件是:
drwxr-xr-x 2 root root
我不知道如何解决此问题,为什么无法找到或使用这些文件?
编辑:我已将执行资源更改为user "root"
,但它仍然无法找到文件夹
我还想提及虽然lib\boot.rb
存在lib
,但文件夹根据ls -l
并不是sudo ls -l
,即使我lib
它仍然存在lib
不显示bin
文件夹,仅显示{{1}}的内容。
编辑: 我还要提到{{1}}文件夹存在并按预期显示。
答案 0 :(得分:0)
这是您问题的根本原因。 Root是超级用户,如果root拥有文件但未授予对其他用户的访问权限,则他们可以读取但不执行它。如果您希望将目录插入目录,则目录需要执行权限。
-rw-r - r-- 1 root root
Vagrant不以root身份运行。你需要让vagrant用户访问/ usr / local / lib / ruby,最简单的方法是:
chown -R vagrant:vagrant /usr/local/lib/ruby
这会将/ usr / local / lib / ruby的所有者更改为vagrant,所以一般情况下你不会在普通服务器上执行此操作,但鉴于这是一个虚拟框并且你正在使用vagrant在这里可以做到这一点。
答案 1 :(得分:0)
您似乎在/usr/local/lib/ruby/gems/2.1.0/gems/gem_name-version/lib/gem_name/info
上获得了一些非常奇怪的权限,特别是如果root
甚至无法看到它。您可以通过在父目录上执行ls -al
来确认。您可以使用具有适当权限的directory
主厨资源来修复它,但是您真的应该追究权限的根本原因。
答案 2 :(得分:0)
对于那些回答谢谢但我已经解决的人,在迁移到linux时我忘记删除一些代码,将所有/
更改为\\
,这意味着在linux中它创建了一个名为文件夹lib\app_name\info.rb
内的info.rb
代替lib/app_name
。因此,在未来的孩子中,请记住确保您的路径正确。