ArgumentError:父目录是全局可写的但不是粘性的(捆绑安装)

时间:2016-06-01 13:41:10

标签: ruby-on-rails ruby linux

Link to github for error printout

当我尝试捆绑安装时,我收到上述错误。我已经尝试了其他帖子的建议,而github社区也不知道答案。

我正在运行Arch并且正在使用zsh作为我的shell。

更新环境:

  

Bundler 1.12.5

     

Rubygems 2.5.1

     

Ruby 2.3.1p112(2016-04-26修订版54768)[x86_64-linux]

     

GEM_HOME /usr/lib/ruby/gems/2.3.0

     

GEM_PATH /usr/lib/ruby/gems/2.3.0:/home/.gem/ruby/2.3.0

     

Git 2.8.3

     

open_gem(1.5.0)

提前致谢!

3 个答案:

答案 0 :(得分:11)

试试这个:

chmod +t -R ~/.bundle/cache

它对我有用。

答案 1 :(得分:4)

首先,运行命令

ls -l ~/.bundle/cache/compact_index/

您应该看到类似

的内容
drwxr-xr-x  3 myname  staff  102 Jun  1 23:03 rubygems.org.443.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

(我是一个可怜的中国程序员,所以我的文件夹是ruby.taobao.org.443.07113fbafd9bf5f337f3f6cee4b3a723。我猜dir名称是<rubygems source domain>.<rubygems source port (443 for HTTPS)>.<checksum>

请注意drwxr-xr-x部分,并确保其 drwxrwxrwx

如果是drwxrwxrwx,则通过命令

进行更改
chmod 0755 rubygems.org.443.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

drwxrwxrwx(0777)表示任何人都可以在该目录中创建任何文件(可写入世界)以及删除/移动它们(不粘)。 Bundler(&gt; = 1.12.4)使用compact_index,后者又使用Dir::mktmpdir在该目录中创建子目录。

出于安全原因,方法Dir::mktmpdir验证了要创建的tmp目录的父目录的权限。如果权限是0777(drwxrwxrwx),那么你会看到这个错误,因为它不安全。

0755(drwxr-xr-x)没问题,因为只有该目录的所有者(用户)可以创建/删除/移动该目录中的文件或子目录(不是世界可写的)。其他任何人都只能列出他们的信息。

1777(drwxrwxrwt)也没问题,因为任何人都可以在该目录中创建文件或子目录(世界可写),但只有该文件的创建者可以移除/移动它(粘性)。 / p>

答案 2 :(得分:0)

这对我有用

obj = Instantiate (Resources.Load ("Textures/web", typeof(GameObject)), position, Quaternion.identity) as GameObject;