How to build a distributable Solaris binary for Ruby 1.8?

Hello all:

I apologize if I have missed any other posts that addressed this.

For our company’s internal use I have always used the GCC compiler and
followed the simple instructions in the README.TXT for compiling Ruby
1.8 in Solaris as well as in Linux. Now I need to run Ruby code in one
of our customer’s place and the Information Security guys there are so
paranoid they are making a big fuss about installing GCC in their
boxes. I know SunFreeware has a 1.6.7 binary but I need 1.8.

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

I appreicate your help.

Thanks and Best Regards,
Venkat.

Something like this ought to do the trick:

tar -czf rubydist.tar.gz \
/usr/local/lib/ruby/1.8 /usr/local/lib/ruby/site-ruby/1.8
/usr/local/bin/ruby /usr/local/bin/irb /usr/local/bin/erb
/usr/local/lib/libruby-static.a

This has the advantage that any RAA packages you added to the core will also
be in your tarball.

If you configured with --enable-dynamic then you’ll have to include
/usr/local/lib/libruby.so* as well.

Oh, that assumes you have a sensible GNU tar, if stock Solaris then
tar -cf rubydist.tar …list of files…
gzip -9 rubydist.tar

You should do ‘ldd /usr/local/bin/ruby’ to see what it’s dynamically linked
against, and make sure the target system has the same libraries: e.g.

$ ldd /usr/local/bin/ruby
libdl.so.1 => /lib/libdl.so.1
libcrypt_i.so.1 => /lib/libcrypt_i.so.1
libm.so.1 => /lib/libm.so.1
libc.so.1 => /lib/libc.so.1
libgen.so.1 => /lib/libgen.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

HTH,

Brian.

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

What’s the problem with installing GCC?

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

For our company’s internal use I have always used the GCC compiler and
followed the simple instructions in the README.TXT for compiling Ruby
1.8 in Solaris as well as in Linux. Now I need to run Ruby code in one
of our customer’s place and the Information Security guys there are so
paranoid they are making a big fuss about installing GCC in their
boxes. I know SunFreeware has a 1.6.7 binary but I need 1.8.


Daniel Carrera, Math PhD student at UMD. PGP KeyID: 9AF77A88
.-“~~~”-. Weekly Smile:
/ O O \
: s : There are 10 types of people in the world…
\ _/ / Those who understand binary - and those who don’t.
`-.
_.-’

Brian Candler wrote:

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

Something like this ought to do the trick:

tar -czf rubydist.tar.gz
/usr/local/lib/ruby/1.8 /usr/local/lib/ruby/site-ruby/1.8
/usr/local/bin/ruby /usr/local/bin/irb /usr/local/bin/erb
/usr/local/lib/libruby-static.a

This has the advantage that any RAA packages you added to the core will also
be in your tarball.

If you configured with --enable-dynamic then you’ll have to include
/usr/local/lib/libruby.so* as well.

Oh, that assumes you have a sensible GNU tar, if stock Solaris then
tar -cf rubydist.tar …list of files…
gzip -9 rubydist.tar

You should do ‘ldd /usr/local/bin/ruby’ to see what it’s dynamically linked
against, and make sure the target system has the same libraries: e.g.

$ ldd /usr/local/bin/ruby
libdl.so.1 => /lib/libdl.so.1
libcrypt_i.so.1 => /lib/libcrypt_i.so.1
libm.so.1 => /lib/libm.so.1
libc.so.1 => /lib/libc.so.1
libgen.so.1 => /lib/libgen.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

HTH,

Brian.

I just noticed that sunfreeware.com doesn’t appear to have a 1.8 package
yet. The only one I see is a 1.6.7 (!) package for Solaris 8 and
earlier. If I knew how to build one, I’d submit it. Anyone else?

Would your admins be willing to install a package?

Regards,

Dan

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

In article 20030811165314.A56134@linnet.org, Brian Candler says…

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

Something like this ought to do the trick:

tar -czf rubydist.tar.gz \
/usr/local/lib/ruby/1.8 /usr/local/lib/ruby/site-ruby/1.8
/usr/local/bin/ruby /usr/local/bin/irb /usr/local/bin/erb
/usr/local/lib/libruby-static.a

This has the advantage that any RAA packages you added to the core will also
be in your tarball.

If you configured with --enable-dynamic then you’ll have to include
/usr/local/lib/libruby.so* as well.

Oh, that assumes you have a sensible GNU tar, if stock Solaris then
tar -cf rubydist.tar …list of files…
gzip -9 rubydist.tar

You should do ‘ldd /usr/local/bin/ruby’ to see what it’s dynamically linked
against, and make sure the target system has the same libraries: e.g.

$ ldd /usr/local/bin/ruby
libdl.so.1 => /lib/libdl.so.1
libcrypt_i.so.1 => /lib/libcrypt_i.so.1
libm.so.1 => /lib/libm.so.1
libc.so.1 => /lib/libc.so.1
libgen.so.1 => /lib/libgen.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

HTH,

Brian.

Thank you. At my work, we have a Solaris 8. Our customer has Solaris 9. Is there
a possibility of dependency issues due the version difference?

Thanks and Best Regards,
Venkat.

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

If what you want is a binary install, then Brian’s solution
does all but change the paths stored inside the ruby executable.

If you want to do a binary install, I can give you some code
that will allow you to do a binary install and then change
the internally stored paths to the correct location.

···

On Tuesday, 12 August 2003 at 0:53:30 +0900, Brian Candler wrote:

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

Something like this ought to do the trick:

tar -czf rubydist.tar.gz \
/usr/local/lib/ruby/1.8 /usr/local/lib/ruby/site-ruby/1.8
/usr/local/bin/ruby /usr/local/bin/irb /usr/local/bin/erb
/usr/local/lib/libruby-static.a


Jim Freeze

Jone’s Law:
The man who smiles when things go wrong has thought of someone
to blame it on.

In article 20030811160943.GB1314@math.umd.edu, Daniel Carrera says…

For our company’s internal use I have always used the GCC compiler and
followed the simple instructions in the README.TXT for compiling Ruby
1.8 in Solaris as well as in Linux. Now I need to run Ruby code in one
of our customer’s place and the Information Security guys there are so
paranoid they are making a big fuss about installing GCC in their
boxes. I know SunFreeware has a 1.6.7 binary but I need 1.8.

What’s the problem with installing GCC?


Daniel Carrera, Math PhD student at UMD. PGP KeyID: 9AF77A88
.-“~~~”-. Weekly Smile:
/ O O \
: s : There are 10 types of people in the world…
\ _/ / Those who understand binary - and those who don’t.
`-.
_.-’

The Information Security guys in big banks are always uncomfortable about
everything (These guys are in SE Asia). If I am next to them, it is easy to
convince them. I have to do this away in NJ as I got something to take care of
here also, it is getting difficult.

Thanks and Regards,
Venkat.

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

Hi,

If you configured with --enable-dynamic then you’ll have to include
/usr/local/lib/libruby.so* as well.

Oh, that assumes you have a sensible GNU tar, if stock Solaris then
tar -cf rubydist.tar …list of files…
gzip -9 rubydist.tar

You can install ruby into a particular place by DESTDIR,
regardless configured prefix.

$ destdir=/var/tmp/clean/install/ruby
$ make install DESTDIR=$destdir
$ cd $destdir
$ tar -cf $tmpdir/rubydist.tar usr/local/*
$ gzip -9 $tmpdir/rubydist.tar

Note that you have to untar it at the root directory.

···

At Tue, 12 Aug 2003 00:53:30 +0900, Brian Candler wrote:


Nobu Nakada

Ah, I misunderstood if you wanted a pkgadd-type package.

We just compile from source, it’s a 2-minute job (well, a 2-minute job under
FreeBSD, but a 10-minute job under Slowlaris)

B.

···

On Tue, Aug 12, 2003 at 01:07:02AM +0900, Daniel Berger wrote:

I just noticed that sunfreeware.com doesn’t appear to have a 1.8 package
yet. The only one I see is a 1.6.7 (!) package for Solaris 8 and
earlier. If I knew how to build one, I’d submit it. Anyone else?

Would your admins be willing to install a package?

Fink has an outdated Ruby (1.6.7). I don’t really know how to build a
fink package, but I hope someone who does will read this and put Ruby
1.8.0 on fink (and maybe some other Ruby things). Python has a ton of
stuff on fink, as does perl, of course.

The fink packaging manual is here:

http://fink.sourceforge.net/doc/packaging/index.php

Regards,

Mark

In article 3F37BED7.5ADDBA67@qwest.com, Daniel Berger says…

Brian Candler wrote:

Instead of fighting with them, is there any way I can compile Ruby 1.8
in our Sun boxes to create a build I can take and and install in the
customer’s Solaris box?

Something like this ought to do the trick:

tar -czf rubydist.tar.gz
/usr/local/lib/ruby/1.8 /usr/local/lib/ruby/site-ruby/1.8
/usr/local/bin/ruby /usr/local/bin/irb /usr/local/bin/erb
/usr/local/lib/libruby-static.a

This has the advantage that any RAA packages you added to the core will also
be in your tarball.

If you configured with --enable-dynamic then you’ll have to include
/usr/local/lib/libruby.so* as well.

Oh, that assumes you have a sensible GNU tar, if stock Solaris then
tar -cf rubydist.tar …list of files…
gzip -9 rubydist.tar

You should do ‘ldd /usr/local/bin/ruby’ to see what it’s dynamically linked
against, and make sure the target system has the same libraries: e.g.

$ ldd /usr/local/bin/ruby
libdl.so.1 => /lib/libdl.so.1
libcrypt_i.so.1 => /lib/libcrypt_i.so.1
libm.so.1 => /lib/libm.so.1
libc.so.1 => /lib/libc.so.1
libgen.so.1 => /lib/libgen.so.1
/usr/platform/SUNW,Ultra-80/lib/libc_psr.so.1

HTH,

Brian.

I just noticed that sunfreeware.com doesn’t appear to have a 1.8 package
yet. The only one I see is a 1.6.7 (!) package for Solaris 8 and
earlier. If I knew how to build one, I’d submit it. Anyone else?

Would your admins be willing to install a package?

Regards,

Dan

The admin guys are ok with installing a package. It is just that they are not
comfortable with compilers and stuff. I can handle them better if I am face to
face with them. I am in NJ and they are in Singapore.

Thanks and Regards,
Venkat.

···

On Tue, Aug 12, 2003 at 12:39:12AM +0900, Venkat wrote:

Ugh, I would strongly suggest you should compile on a Solaris 9 box if
you’re going to run on a Solaris 9 box, otherwise you are very likely to be
bitten by library dependency problems.

If the customer is religiously opposed to having a compiler, then this means
you need to build yourself a Solaris 9 development box. Sorry. Or else get
someone else to do it for you.

Cheers,

Brian.

···

On Tue, Aug 12, 2003 at 08:00:15AM +0900, google-venkatp@sneakemail.com wrote:

Thank you. At my work, we have a Solaris 8. Our customer has Solaris 9. Is there
a possibility of dependency issues due the version difference?