Bugs item #25882, was opened at 2009-05-12 05:01 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=575&aid=25882&group_id=126
Category: `gem install` command Group: v1.3.x Status: Open Resolution: None Priority: 3 Submitted By: Lars Christensen (larsch) Assigned to: Nobody (None) Summary: Handling of Windows paths broken in 1.3.3 Initial Comment: Installing gems from local drives other than the current is broken on Windows. RubyGems strips the drive letter (through using the URI class for something which isn't an URI). C:\> gem install p:\path\to\mygem-2.1.18.gem ERROR: While executing gem ... (Errno::ENOENT) No such file or directory - /path/to/mygem-2.1.18.gem Then I tried to pass a valid URI: C:\> gem install file:///p:/path/to/mygem-2.1.18.gem But that doesn't work either; ERROR: could not find gem file:///p:/path/to/mygem-2.1.18.gem locally or in a repository I believe this is because URI#path returns "/p:/path/to/mygem..." (with leading slash), which is not a valid path on Windows. Finally, I attempted to hack RubyGems to prefix file:/// itself, but I don't understand the reason for this line of code in remote_fetcher.rb: remote_gem_path = File.join(path, 'gems', gem_file_name) That causes this error instead: ERROR: While executing gem ... (Errno::ENOENT) No such file or directory - p:/path/to/gems/mygem-2.1.18.gem Notice the extra /gems/ path. ---------------------------------------------------------------------- >Comment By: Daniel Berger (djberg96) Date: 2009-05-12 06:22 Message: Well, this is odd. I tried installing from an explicit path using "C:\Documents and Settings\djberge". That worked fine. But, when I tried to install from a drive other than "C:", things went bad: C:\Documents and Settings\djberge>gem install "z:\djberge on my mac\documents\workspace\ptools\ptools-1.1.7.gem" --verbose --debug Exception `NameError' at C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:161 - uninitialized constant Gem::Commands::InstallCommand Exception `IOError' at C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/format.rb:50 - closed stream Installing gem ptools-1.1.7 Exception `Errno::ENOENT' at C:/Ruby/lib/ruby/1.8/fileutils.rb:1200 - No such file or directory - /djberge on my mac/documents/workspace/ptools/ptools-1.1.7.gem ERROR: While executing gem ... (Errno::ENOENT) No such file or directory - /djberge on my mac/documents/workspace/ptools/ptools-1.1.7.gem C:/Ruby/lib/ruby/1.8/fileutils.rb:1200:in `stat' C:/Ruby/lib/ruby/1.8/fileutils.rb:1200:in `lstat' C:/Ruby/lib/ruby/1.8/fileutils.rb:1178:in `stat' C:/Ruby/lib/ruby/1.8/fileutils.rb:1260:in `copy_file' C:/Ruby/lib/ruby/1.8/fileutils.rb:463:in `copy_file' C:/Ruby/lib/ruby/1.8/fileutils.rb:383:in `cp' C:/Ruby/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest' C:/Ruby/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0' C:/Ruby/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest' C:/Ruby/lib/ruby/1.8/fileutils.rb:382:in `cp' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/remote_fetcher.rb:142:in `download' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:232:in `install' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:222:in `each' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/dependency_installer.rb:222:in `install' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:78:in `execute' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:75:in `each' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/commands/install_command.rb:75:in `execute' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/command.rb:254:in `invoke' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:132:in `process_args' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/command_manager.rb:102:in `run' C:/Ruby/lib/ruby/site_ruby/1.8/rubygems/gem_runner.rb:58:in `run' C:/Ruby/bin/gem:21 I'll have to investigate further to determine if this is a bug in rubygems or fileutils. Regards, Dan ---------------------------------------------------------------------- Comment By: Daniel Berger (djberg96) Date: 2009-05-12 05:20 Message: The use of file urls is meant for use with the --source flag (i.e. from a local repository), which is why the method includes the 'gems' directory. However, the "gem install p:\path\to\mygem-2.1.18.gem" should work. I'll take a look. Regards, Dan ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=575&aid=25882&group_id=126 _______________________________________________ Rubygems-developers mailing list http://rubyforge.org/projects/rubygems Rubygems-developers@rubyforge.org http://rubyforge.org/mailman/listinfo/rubygems-developers