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
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)
On Apr 9, 1:25 am, Jon R. [email protected] 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
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