Mac OSX Ruby Configuration Question

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

This is causing several problems with gems as well, as the Mongrel webserver (for example) requires 1.8.4, and if you try to install it via gem it dies - it is smart enough to see the 'system' version, but not the /usr/local version and won't let you install it on an 'old' system.

I tried Google-ing for $PATH configurations, because I know it has to be a simple fix to let me run "ruby -v" (or whatever) at a prompt pretty much anywhere and have my system use the /usr/local version (1.8.4) instead of 1.8.2, but I just can't figure it out.

Paste of relevant issue from terminal session below, including $PATH in case I made a non-obvious (to me) error there.

Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

I searched this forum as well, and read through the various installation guides - if it is there, I missed or misunderstood it. Guidance, even flames (with a link or winning Google search text), would be welcome.

Many thanks in advance.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

···

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

--
Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby,
Rails, etc. run great and I am working through Ruby for Rails (great
book, BTW).

I installed ruby in /usr/local so as not to conflict with the version
(1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and
similar to use rails, rubygems, etc.

This is causing several problems with gems as well, as the Mongrel
webserver (for example) requires 1.8.4, and if you try to install it via
gem it dies - it is smart enough to see the 'system' version, but not
the /usr/local version and won't let you install it on an 'old' system.

I tried Google-ing for $PATH configurations, because I know it has to be
a simple fix to let me run "ruby -v" (or whatever) at a prompt pretty
much anywhere and have my system use the /usr/local version (1.8.4)
instead of 1.8.2, but I just can't figure it out.

Paste of relevant issue from terminal session below, including $PATH in
case I made a non-obvious (to me) error there.

Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin

As Elliot suggests, re-order your path. The system looks for programs
on the path from left to right. So as /usr/bin comes before /usr/local/
bin, the system ruby is found first. So if you move /usr/local/bin in
front of /usr/bin, then your version of ruby will be found first.

I would not modify anything in /usr/bin directly. Apple assumes that
the system /usr/bin is theirs and unmodified and will (and have!) change
things there in updates without warning - possibly breaking your
modifications and potentially causing serious system problems.
Installing in /usr/local and prepending it to your path is the usual
unix way of doing things.

-r

···

On Saturday, July 15, 2006, at 8:10 AM, Steven R. wrote:

Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

I searched this forum as well, and read through the various installation
guides - if it is there, I missed or misunderstood it. Guidance, even
flames (with a link or winning Google search text), would be welcome.

Many thanks in advance.

--
Posted with http://DevLists.com. Sign up and save your mailbox.

won't that mess up anything that tries to use the system version?

i think the solution is to add to your path in your .profile

-- Elliot Temple

···

On Jul 14, 2006, at 4:15 PM, Eric Hodel wrote:

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

Thanks for the fast reply - if I read this correctly, I am literally removing ruby (or irb, etc.) from the path the system 'sees' to a directory it won't (not on $PATH) so it will eventually default to my /usr/local version - is this correct?

I understand the mv command - it is the impact on system behavior as it searches for a path I am asking about - that's unclear to me.

Thanks again -

SR

Eric Hodel wrote:

···

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

--Eric Hodel - drbrain@segment7.net - http://blog.segment7.net
This implementation is HODEL-HASH-9600 compliant

http://trackmap.robotcoop.com

Just to speak on this point, I've been safely using the replacement solution for about 6 months now with no trouble at all. But the one thing I did after I moved /usr/bin/ruby is to make a link from /opt/local/bin/ruby (my darwinports installation) to /usr/bin/ruby.

Pathing works most of the time, but I had some problems with RadRails/Eclipse because it doesn't appear to honor pathing provided in .profile or .login. Which prompted the linking solution. It's a little ugly and might go away with future updates, but it was about all I had left for a few programs that ignored my personal path information.
-Mat

···

On Jul 14, 2006, at 8:31 PM, Ryan Raaum wrote:

I would not modify anything in /usr/bin directly. Apple assumes that
the system /usr/bin is theirs and unmodified and will (and have!) change
things there in updates without warning - possibly breaking your
modifications and potentially causing serious system problems.
Installing in /usr/local and prepending it to your path is the usual
unix way of doing things.

Elliot Temple wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

won't that mess up anything that tries to use the system version?

i think the solution is to add to your path in your .profile

-- Elliot Temple
Curiosity Blog – Elliot Temple

Thank you for the help -

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

···

On Jul 14, 2006, at 4:15 PM, Eric Hodel wrote:

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

I would not modify anything in /usr/bin directly. Apple assumes that
the system /usr/bin is theirs and unmodified and will (and have!)

change

things there in updates without warning - possibly breaking your
modifications and potentially causing serious system problems.
Installing in /usr/local and prepending it to your path is the usual
unix way of doing things.

Just to speak on this point, I've been safely using the replacement
solution for about 6 months now with no trouble at all. But the one
thing I did after I moved /usr/bin/ruby is to make a link from /opt/
local/bin/ruby (my darwinports installation) to /usr/bin/ruby.

Pathing works most of the time, but I had some problems with
RadRails/Eclipse because it doesn't appear to honor pathing provided
in .profile or .login. Which prompted the linking solution. It's a
little ugly and might go away with future updates, but it was about
all I had left for a few programs that ignored my personal path
information.

Sometimes modifying /usr/bin is the only option left - but sooner or
later an Apple update will break it. (I guess the last time this
happened was a little over 6 months ago if you haven't been hit by it).
So I suggest that the OP try everything else first.

But, as you have discovered, sometimes you _have_ to choose the less
optimal solution.

Best,

-r

···

On Saturday, July 15, 2006, at 12:37 PM, Mat Schaffer wrote:

On Jul 14, 2006, at 8:31 PM, Ryan Raaum wrote:

-Mat

--
Posted with http://DevLists.com. Sign up and save your mailbox.

oh oops.

well the places in the path are tried in order. so just put the /usr/local/bin before /usr/bin

-- Elliot Temple

···

On Jul 14, 2006, at 4:40 PM, Steven R. wrote:

Elliot Temple wrote:

On Jul 14, 2006, at 4:15 PM, Eric Hodel wrote:

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

won't that mess up anything that tries to use the system version?
i think the solution is to add to your path in your .profile
-- Elliot Temple
Curiosity Blog – Elliot Temple

Thank you for the help -

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

Hi,

At Sat, 15 Jul 2006 08:40:06 +0900,
Steven R. wrote in [ruby-talk:202047]:

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

/usr/local/bin is after /usr/bin. The order is significant.

···

--
Nobu Nakada

Elliot Temple wrote:

Elliot Temple wrote:

I recently installed Ruby 1.8.4 on my iMac, running OSX 10.4. Ruby, Rails, etc. run great and I am working through Ruby for Rails (great book, BTW).

I installed ruby in /usr/local so as not to conflict with the version (1.8.2) used by OSX.

Now, I have to type "/usr/local/bin" before all Ruby commands, and similar to use rails, rubygems, etc.

mv /usr/bin/ruby /usr/bin/ruby182-orig

You may need to do the same with irb, ri, rdoc and testrb.

Beware, updates from 10.x.y to 10.x.z may restore /usr/bin/ruby.

won't that mess up anything that tries to use the system version?
i think the solution is to add to your path in your .profile
-- Elliot Temple
Curiosity Blog – Elliot Temple

Thank you for the help -

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

oh oops.

well the places in the path are tried in order. so just put the /usr/local/bin before /usr/bin

-- Elliot Temple
Curiosity Blog – Elliot Temple

I learned something new today. Your solution worked.

Many thanks!

BTW - it is rather odd - changing .profile did nothing. It was only adding the path to .bash_profile that did the trick.

···

On Jul 14, 2006, at 4:40 PM, Steven R. wrote:

On Jul 14, 2006, at 4:15 PM, Eric Hodel wrote:

On Jul 14, 2006, at 4:10 PM, Steven R. wrote:

nobu@ruby-lang.org wrote:

Hi,

At Sat, 15 Jul 2006 08:40:06 +0900,
Steven R. wrote in [ruby-talk:202047]:

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

/usr/local/bin is after /usr/bin. The order is significant.

Thank you for your reply - I updated my .bash_profile and it worked great.

I am still trying to work out why changing .profile did nothing, but changing .bash_profile worked.

I suppose the important thing was, my system works now.

Thanks to all for their time and assistance.

I believe if you have a .bash_profile, then .profile isn't run unless you tell it to. here's what I have:

cg5:~ >cat .bash_profile
PS1="cg5:\w >"
. ~/.profile
cg5:~ >cat .profile
export PATH="/usr/local/bin:/usr/local/sbin:/opt/local/bin:/opt/local/sbin:/usr/local/mysql/bin:/usr/games/:/Users/curi/me/bin:$PATH"
export RUBYLIB="/Users/curi/me/rubylib"
cg5:~ >

-- Elliot Temple

···

On Jul 15, 2006, at 12:05 PM, Steven R. wrote:

nobu@ruby-lang.org wrote:

Hi,
At Sat, 15 Jul 2006 08:40:06 +0900,
Steven R. wrote in [ruby-talk:202047]:

Per my original post, my path already includes the path:

Alpha:~ srummel$ echo $PATH
/usr/local/mysql/bin:/bin:/sbin:/usr/bin:/usr/local/bin:/usr/sbin
Alpha:~ srummel$ ruby -v
ruby 1.8.2 (2004-12-25) [powerpc-darwin8.0]
Alpha:~ srummel$ /usr/local/bin/ruby -v
ruby 1.8.4 (2005-12-24) [powerpc-darwin8.7.0]
Alpha:~ srummel$

Is there some other issue involved?

/usr/local/bin is after /usr/bin. The order is significant.

Thank you for your reply - I updated my .bash_profile and it worked great.

I am still trying to work out why changing .profile did nothing, but changing .bash_profile worked.

I suppose the important thing was, my system works now.

Thanks to all for their time and assistance.