Hm, that’s interesting… MRI gets redirected to the virtual store but
IronRuby does not, I wonder if that is more of a .NET issue than a
IronRuby problem…
JD
From: [email protected]
[mailto:[email protected]] On Behalf Of Shri B.
Sent: Tuesday, January 26, 2010 11:44 AM
To: [email protected]
Subject: Re: [Ironruby-core] “igem install rake” raise an
System.UnauthorizedAccessException (Windows 7)
There indeed is a difference in behavior between IronRuby and MRI when
creating a file in %ProgramFiles% from a non-elevated process. MRI
silently writes to USERPROFILE. IronRuby raises Errno::EACCES. I have
opened http://ironruby.codeplex.com/WorkItem/View.aspx?WorkItemId=3685
to track this. I don’t see the System.UnauthorizedAccessException
though.
D:>ruby -e “File.open(‘c:/Program Files/foo.txt’, ‘w+’) {}”
D:>dir “c:\Program Files\foo.txt”
File Not Found
D:>dir “%USERPROFILE%\AppData\Local\VirtualStore\Program Files\foo.txt”
01/26/2010 11:39 AM 0 foo.txt
1 File(s) 0 bytes
0 Dir(s) 122,124,869,632 bytes free
D:>rbx -e “File.open(‘c:/Program Files/foo.txt’, ‘w+’) {}”
mscorlib:0:in `WinIOError’: Access to the path ‘c:\Program
Files\foo.txt’ is denied. (Errno::EACCES)
From: [email protected]
[mailto:[email protected]] On Behalf Of Shri B.
Sent: Tuesday, January 26, 2010 11:09 AM
To: [email protected]
Subject: Re: [Ironruby-core] “igem install rake” raise an
System.UnauthorizedAccessException (Windows 7)
Another way to simulate “sudo†is to use an elevated Command Prompt.
http://www.sevenforums.com/tutorials/11841-run-administrator.html tells
you how. If you are using the command prompt a lot, you only need to
deal with the UAC dialog box once when you open the elevated Command
Prompt. After that, all commands executed from the Command Prompt run
elevated.
Jim, from an elevated Command prompt, I was able to create a new file in
%ProgramFiles% using notepad, and did not get any UAC dialog box. This
would mean that “gem install†should also be able to install gems to
%ProgramFiles%. Not sure how this reconciles with your comment about
TrustedInstaller.
Thibaut, could you try using “igem install –user-install� (I wonder if
IronRuby needs to catch the System.UnauthorizedAccessException exception
and raise a Ruby exception for RubyGems to do the right thing.)
Could you also separately try running from an elevated Command Prompt?
From: [email protected]
[mailto:[email protected]] On Behalf Of Jim D.
Sent: Tuesday, January 26, 2010 9:18 AM
To: [email protected]
Subject: Re: [Ironruby-core] “igem install rake” raise an
System.UnauthorizedAccessException (Windows 7)
There are a couple of differences that would be apparent for this
proposed solution:
-
Runas /user…. Is much longer than sudo ;)
-
The normal installation directory is owned by TrustedInstaller
and Admins have no rights by default. We wouldn’t have a supported way
to share gems at this time, since that does have security risks. Each
user would have to install their own gems, but (unsupported) you should
be able to move GEM_PATH (assuming we can figure out how to share
between IronRuby and Ruby) to a shared location and change permissions
on it.
JD
From: [email protected]
[mailto:[email protected]] On Behalf Of Will G.
Sent: Tuesday, January 26, 2010 9:03 AM
To: [email protected]
Subject: Re: [Ironruby-core] “igem install rake” raise an
System.UnauthorizedAccessException (Windows 7)
Yes, that occurred to me this morning.
So, runas /user:mymachine\administrator igem install foo for globals
gems, right?
–
Will G.
http://hotgazpacho.org/
On Tue, Jan 26, 2010 at 4:16 AM, Thibaut Barrère
<[email protected]mailto:[email protected]> wrote:
Per-user gems should not be the default. In RubyInstaller (mingw MRI), as well as MRI on Linux, and I believe OS X, system-wide gems are
the default. This, of course, would require elevation (sudo gem install xxx).
I believe per-user gems is now the default (it wasn’t in the past, but
if I’m right a rubygems update changed that behaviour. Maybe 1.3.0 -
http://rubyforge.org/forum/forum.php?forum_id=27728 => ‘RubyGems now
installs gems into ~/.gem if GEM_HOME is not writable. Use
–no-user-install command-line switch to disable this behavior.’).
Here’s what happens on my machine (OS X):
~$ gem list | grep less
~$ sudo gem list | grep less
~$ gem install less
(…)
~$ gem list | grep less
less (1.2.21)
~$ sudo gem list | grep less
(empty)
~$ gem -v
1.3.5
~$ ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-darwin10.0.0]
– Thibaut
Ironruby-core mailing list
[email protected]mailto:[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core