# Building ruby

**URL:** <https://www.ruby-forum.com/t/building-ruby/134223>\
**Category:** Ruby\
**Created:** [April 9, 2008, 2:25am UTC](https://www.ruby-forum.com/t/building-ruby/134223 "2008-04-09T02:25:38Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![jonraphaelson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jonraphaelson](https://www.ruby-forum.com/u/jonraphaelson)\
**Post date:** [April 9, 2008, 2:25am UTC](https://www.ruby-forum.com/t/building-ruby/134223/1 "2008-04-09T02:25:38Z")

</div>

The linux systems I admin @ work have an old version of ruby (1.8.2).  
I’ve decided to attempt an upgrade. (SuSE 9.1 fwiw.)

First attempt was with Ruby 1.9.0-1. Everything seemed to work fine,  
even got a recent build of OCI8 to work, and my oracle connection  
scripts were golden. Then I tried another group of scripts with less  
favorable results. Apparently ‘ping’ isn’t in the std lib anymore? It  
wasn’t immediately clear to me that net-ping-1.22 would be a drop in  
replacement, so I punted on 1.9. ☹

Next in line was 1.8.6-p114. Also went smoothly through build. Tried to  
run a few scripts… nope. Error on ‘socket’? huh?

irb(main):001:0\> require ‘socket’  
LoadError: no such file to load – socket  
from (irb):1:in `require’  
from (irb):1

I see in the console from ‘make’ that socket was built cleanly. And it’s  
in the lib directory:

lib/ruby/1.8/i686-linux/socket.so

Been using ruby for some time now and feel like a noobie all of a sudden  
by not being able to get either of these builds working. Both builds  
were done with “./configure; make; sudo make install”. Nothing special.

Any tips welcome. My scripts are monitoring oriented, making liberal use  
of ping, socket, OCI8, gserve, thread and timeout. (If any of that makes  
a difference.)

thanks,  
jon

---

<div class="post-metadata">

**Author:** ![jonraphaelson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jonraphaelson](https://www.ruby-forum.com/u/jonraphaelson)\
**Post date:** [April 9, 2008, 9:15am UTC](https://www.ruby-forum.com/t/building-ruby/134223/2 "2008-04-09T09:15:56Z")

</div>

> The linux systems I admin @ work have an old version of ruby (1.8.2).  
> I’ve decided to attempt an upgrade. (SuSE 9.1 fwiw.)
> 
> First attempt was with Ruby 1.9.0-1.

You should be careful from 1.8 to 1.9  
As far as I understood it, 1.9 is a “different language” than 1.8

> Everything seemed to work fine

Famous last words SCNR 😉

> Next in line was 1.8.6-p114. Also went smoothly through build. Tried to  
> run a few scripts… nope. Error on ‘socket’? huh?
> 
> irb(main):001:0\> require ‘socket’  
> LoadError: no such file to load – socket

Works here.  
My ruby is source built from p114:  
ruby 1.8.6 (2008-03-03 patchlevel 114) [i686-linux]

Maybe you have messed up your ruby install. Or the default SuSE  
ruby is missing some bits. Personally I compile things into  
self-contained dirs.

> Both builds were done with “./configure; make; sudo make install”. Nothing special.

Guess that will default to /usr/local  
Where does your irb reside at? And do you have /usr/lib/ruby\*  
something, some stray ruby files somewhere?

All I know is that it _should_ work (it works here)

---

<div class="post-metadata">

**Author:** ![jonraphaelson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jonraphaelson](https://www.ruby-forum.com/u/jonraphaelson)\
**Post date:** [April 9, 2008, 11:35am UTC](https://www.ruby-forum.com/t/building-ruby/134223/3 "2008-04-09T11:35:27Z")

</div>

On Apr 9, 1:25 am, Jon R. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> irb(main):001:0\> require ‘socket’  
> LoadError: no such file to load – socket  
> from (irb):1:in `require’  
> from (irb):1
> 
> I see in the console from ‘make’ that socket was built cleanly. And it’s  
> in the lib directory:
> 
> lib/ruby/1.8/i686-linux/socket.so

It may be a path issue. “strace” in a shell is your friend. Run  
“strace ruby yourscript.rb 2\>&1 | grep socket | more”. It’ll how you  
what files/directories your new Ruby interpreter actually tries  
loading the socket extension from. (strace shows you what system calls  
your app calls - it’s very flexible, and well worth learning how to  
use)

Vidar

---

<div class="post-metadata">

**Author:** ![jonraphaelson](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/j/53a042/32.png) [@jonraphaelson](https://www.ruby-forum.com/u/jonraphaelson)\
**Post date:** [April 10, 2008, 1:54am UTC](https://www.ruby-forum.com/t/building-ruby/134223/4 "2008-04-10T01:54:09Z")

</div>

Vidar H. wrote:

> It may be a path issue. “strace” in a shell is your friend. Run  
> “strace ruby yourscript.rb 2\>&1 | grep socket | more”. It’ll how you

Glorious. Thanks for the tip/reminder. (slapping forehead)

The socket.so file was installed mode 640. Doh!

stat64("/usr/local/ruby186/lib/ruby/1.8/i686-linux/socket.so",  
{st\_mode=S\_IFREG|0750, st\_size=84340, …}) = 0

open("/usr/local/ruby186/lib/ruby/1.8/i686-linux/socket.so",  
O\_RDONLY|O\_LARGEFILE) = -1 EACCES (Permission denied)

Thanks,  
jon
