> This is strange. What are the permissions that you are seeing? I ran 
> the same steps on my b87 machine, and here's how the permissions show 
> up. They are sufficient for a user to use rails.

I completely re-installed OpenSolaris 2008.05 on a formatted hard drive.

% pfexec pkg refresh --full
% pfexec pkg install gcc-dev ss-dev ruby-dev webstackui
% pfexec gem update
% pfexec gem install rails --include-dependencies
% cd /usr/ruby/1.8/bin
% ls -hlF
total 55K
-rwxr-xr-x 1 root bin   3.8K 2008-05-11 20:43 erb*
-rwxr-xr-x 1 root bin     707 2008-05-11 20:43 gem*
-rwxr-xr-x 1 root bin   3.2K 2008-05-11 20:43 gemlock*
-rwxr-xr-x 1 root bin   1.8K 2008-05-11 20:43 gem_mirror*
-rwxr-xr-x 1 root bin     521 2008-05-11 20:43 gemri*
-rwxr-xr-x 1 root bin       76 2008-05-11 20:43 gem_server*
-rwxr-xr-x 1 root bin   1.8K 2008-05-11 20:43 gemwhich*
-rwxr-xr-x 1 root bin   7.8K 2008-05-11 20:43 index_gem_repository.rb*
-rwxr-xr-x 1 root bin     382 2008-05-11 20:43 irb*
-rwx------ 1 root root    342 2008-05-11 20:47 rails*
-rwx------ 1 root root    342 2008-05-11 20:47 rake*
-rwxr-xr-x 1 root bin   1.6K 2008-05-11 20:43 rdoc*
-rwxr-xr-x 1 root bin   1.5K 2008-05-11 20:43 ri*
-rwxr-xr-x 1 root bin   6.2K 2008-05-11 20:43 ruby*
-rwxr-xr-x 1 root bin     156 2008-05-11 20:43 testrb*
-rwxr-xr-x 1 root bin     655 2008-05-11 20:43 update_rubygems*

So you can see that the permissions are not created correctly during the 
installation of rails.  I'm not sure why they are done differently on my 
machine, but I completely re-installed from scratch to ensure I was in a clean 
environment.

% pfexec chmod a+rx rails rake

You already mentioned that patching rubygems for the long term fix, but for now:

% pfexec ln -s /usr/ruby/1.8/bin/rails /usr/bin/rails
% pfexec ln -s /usr/ruby/1.8/bin/rake /usr/bin/rake

Setting GEM_HOME environment variable goes a long way to fixing the previous 
problem (thanks!):

% export GEM_HOME=/var/ruby/1.8/gem_home
% echo $GEM_HOME
/var/ruby/1.8/gem_home

So now I try to create a rails work space:

% cd ~
% rails test-rails
/usr/ruby/1.8/lib/ruby/site_ruby/1.8/rubygems/source_index.rb:91:in `read'': 
Permission denied - 
/var/ruby/1.8/gem_home/specifications/activerecord-2.0.0.gemspec (Errno::EACCES)
   ... et cetera ...

Let's try again with super-user priviledges:

% pfexec rails test
        create
        create app/controllers
        create app/helpers
        ...
        create log/test.log
% ls -hlF
total 11K
drwx------  2 karrick staff   2 2008-05-10 12:18 bin/
drwxr-xr-x  2 karrick staff   2 2008-05-10 12:18 Desktop/
-rwx------  2 karrick staff   2 2008-05-10 12:18 install-dev.script/
drwx------ 5 karrick staff 114 2008-05-10 12:18 scripts/
drwx------ 15 root    root   15 2008-05-11 21:05 test-rails/

Sure enough, looking into the [/var/ruby/1.8/gem_home] directory, all the 
subdirectories in [cache], [doc], [gems], and [specifications] are all read 
only to the owner, who is root.

% cd /var/ruby/1.8/gem_home
% pfexec find . -type d -exec chmod a+rx {} \;
(long pause while all directories have group and world read and execute 
permissions added...)
% pfexec find . -type f -exec chmod a+r {} \;
(long pause while all files have group and world read permissions added...)

% cd ~
% rails test-again
        create
        create app/controllers
        create app/helpers
        ...
        create log/test.log
% ls -hlF
total 11K
drwx------  2 karrick staff   2 2008-05-10 12:18 bin/
drwxr-xr-x  2 karrick staff   2 2008-05-10 12:18 Desktop/
-rwx------  2 karrick staff   2 2008-05-10 12:18 install-dev.script/
drwx------ 5 karrick staff 114 2008-05-10 12:18 scripts/
drwx------ 15 root    root   15 2008-05-11 21:05 test-rails/
drwx------ 15 karrick staff   15 2008-05-11 21:05 test-rails/

So the problem is solved with some mechanical finess.

Summary of the process:
% pfexec pkg refresh --full
% pfexec pkg install gcc-dev ss-dev ruby-dev webstackui
% pfexec gem update
% pfexec gem install rails --include-dependencies
% pfexec chmod a+rx rails rake
% pfexec ln -s /usr/ruby/1.8/bin/rails /usr/bin/rails
% pfexec ln -s /usr/ruby/1.8/bin/rake /usr/bin/rake
% export GEM_HOME=/var/ruby/1.8/gem_home
% cd /var/ruby/1.8/gem_home
% pfexec find . -type d -exec chmod a+rx {} \;
% pfexec find . -type f -exec chmod a+r {} \;

I surely hope someone else finds this usefull.  A big thanks to the OpenSolaris 
community that gave a few insightfull pointers along the way.

-Karrick
This message posted from opensolaris.org


Reply via email to