gpt4 book ai didi

Ruby:安装 gem 时 Errno::EEXIST 是什么意思?

转载 作者:数据小太阳 更新时间:2023-10-29 07:22:16 25 4
gpt4 key购买 nike

我正在尝试安装一个名为 activeldap 的 ruby​​ gem,但是,它不允许我安装它。我不断收到各种错误,包括 Errno::EEXIST 错误。我在下面添加了错误信息。有什么想法吗?

C:\Ruby\www\demo>gem install activeldap
ERROR: While executing gem ... (Errno::EEXIST)
File exists - C:

C:\Ruby\www\demo>gem install activeldap --debug -V
Exception `NameError' at C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:164 - uninitialized constant Gem::Commands::InstallCommand
Exception `NoMethodError' at C:/Ruby187/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `Gem::LoadError' at C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:779 - Could not find RubyGem test-unit (>= 0)

Exception `Gem::LoadError' at C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems.rb:779 - Could not find RubyGem sources (> 0.0.1)

GET http://rubygems.org/latest_specs.4.8.gz
302 Found
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
200 OK
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - File exists - C:/Users/ktemplar/.gem/specs/rubygems.org%80
GET http://rubygems.org/specs.4.8.gz
302 Found
GET http://production.s3.rubygems.org/specs.4.8.gz
304 Not Modified
Installing gem locale-2.0.5
Exception `IOError' at C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/format.rb:50 - closed stream
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - File exists - C:/Ruby187/lib/ruby/gems/1.8
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - File exists - C:/Ruby187/lib/ruby/gems/1.8/gems/locale-2.0.5
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - File exists - C:/Ruby187/lib/ruby/gems/1.8/gems/locale-2.0.5/lib
C:/Ruby187/lib/ruby/gems/1.8/gems/locale-2.0.5/lib/locale.rb
Exception `Errno::ENOENT' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - No such file or directory - C:/Ruby187/lib/ruby/gems/1.8/gems/locale-2.0.5/lib/locale/tag
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:243 - File exists - C:
Exception `Errno::EEXIST' at C:/Ruby187/lib/ruby/1.8/fileutils.rb:219 - File exists - C:
ERROR: While executing gem ... (Errno::EEXIST)
File exists - C:
C:/Ruby187/lib/ruby/1.8/fileutils.rb:243:in `mkdir'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:243:in `fu_mkdir'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:217:in `mkdir_p'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:215:in `reverse_each'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:215:in `mkdir_p'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:201:in `each'
C:/Ruby187/lib/ruby/1.8/fileutils.rb:201:in `mkdir_p'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/installer.rb:517:in `extract_files'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/installer.rb:500:in `each'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/installer.rb:500:in `extract_files'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/installer.rb:196:in `install'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:277:in `install'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:247:in `each'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:247:in `install'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:119:in `execute'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:116:in `each'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:116:in `execute'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command.rb:270:in `invoke'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:134:in `process_args'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:104:in `run'
C:/Ruby187/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run'
C:/Ruby187/bin/gem:21

最佳答案

2010 年 7 月 13 日更新

这个问题很可能是Windows 7上安装了E Text Editor导致的,E为了提供与Windows TextMate的兼容性,自动安装了Cygwin。在安装过程中,会运行一个 bash 脚本,它会尝试修改 C: 上的权限。这是一行:

chmod o-w `cygpath $HOMEDRIVE`

显然,当 Cygwin 设置权限时,它会弄乱 Windows ACL权限。为了保护系统根驱动器的完整性,Windows UAC 执行了称为虚拟化或数据重定向的操作。 More info here .在我们的例子中,虚拟化并没有破坏真正的根目录的权限,而是启动并破坏了 VirtualStore (%localappdata%\VirtualStore) 目录的权限,使其根无法访问(尽管其中的任何目录保持不变和可访问)。当 Ruby 安装 gems 时,它会尝试访问 UAC 不允许的根 C:\目录,因此它会尝试访问 %localappdata%\VirtualStore,如果您有损坏的权限,它就不能访问,因此您会失败。

您可以通过从 VirtualStore 中删除错误权限来解决此问题(您需要在资源管理器中取消隐藏 protected 系统文件才能看到 VirtualStore)。正确的权限应该从父文件夹继承并且应该是:

SYSTEM                   (full control)
*your users* (full control)
Administrators (full control)

这里有一个要点,比较了损坏的权限和正确的权限:

http://gist.github.com/471087

E 的作者已经意识到这个问题并正在修复。


这似乎是一个奇怪的权限错误,显然只发生在 Windows 7 上。尝试打开提升的命令提示符并从那里安装。这是我在提升时得到的:

[C:\Users\charlesr]gem install activeldap
Successfully installed activeldap-1.2.2
1 gem installed
Installing ri documentation for activeldap-1.2.2...
Installing RDoc documentation for activeldap-1.2.2...

如果我从标准命令提示符运行,我会得到:

[C:\Users\charlesr]gem install activeldap
ERROR: While executing gem ... (Errno::EEXIST)
File exists - C:

如果出现更好的解决方案,我会更新此答案。在 Windows 上安装 gem 时,从来没有要求提升权限,因此我们在这里看到的行为是错误的。

此处有与此问题相关的讨论:http://groups.google.com/group/rubyinstaller/browse_thread/thread/df7b7c217ad7d882

关于Ruby:安装 gem 时 Errno::EEXIST 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com