2
\$\begingroup\$

Is this bad practice? Also, how can it be improved?

#!/usr/bin/env bash

RUBY_VERSION=2.1.0
printf "Installing Ruby $RUBY_VERSION\\n"

if [ -d ruby_build ]; then
    rm -Rf ruby_build
fi

if [[ `command -v ruby` && `ruby --version | colrm 11` == "ruby $RUBY_VERSION" ]] ; then
    echo "You already have this version of Ruby: $RUBY_VERSION"
    exit 113
fi

sudo apt-get build-dep -y ruby1.9.1

mkdir ruby_build && cd ruby_build
curl -O "http://ftp.ruby-lang.org/pub/ruby/2.1/ruby-$RUBY_VERSION.tar.gz"
tar xf "ruby-$RUBY_VERSION.tar.gz"
cd "ruby-$RUBY_VERSION"

./configure
make

sudo checkinstall -y --pkgversion "$RUBY_VERSION" --provides "ruby-interpreter" --replaces="ruby-1.9.2"
cd ../.. && rm -Rf ruby_build
\$\endgroup\$
  • \$\begingroup\$ It really seems like this is a job for rvm unless there is some other logic you can't show us. It can be set to build from source. \$\endgroup\$ – Josh Rumbut Oct 28 '15 at 18:01
2
\$\begingroup\$

First,I would like to point out that not all .deb-based distributions are as fond of sudo as Ubuntu is. For example, Debian doesn't use sudo out of the box.

It appears that you're trying to build a newer version of Ruby than is available in the stock package repository. In that case, why not make a proper .deb package with its .dsc and publish it in a private APT repository? Then, everything integrates properly into the distribution the way package management is supposed to work, including the build process and subsequent updates. Everyone will have a better experience when you work with the system instead of against it.

\$\endgroup\$
  • \$\begingroup\$ Hmm, actually setting up my own PPA might not be too bad a solution. Can even make most of it public (such as NodeJS, Ruby, CouchDB &etc); just keeping the internal components private. \$\endgroup\$ – A T Feb 16 '14 at 5:45
  • \$\begingroup\$ Agreed, setting up a private PPA is the best approach, however that option was dismissed as something to be done later down the track. Well it is over 1.5 years later, so I suppose this is down the track! \$\endgroup\$ – A T Oct 29 '15 at 13:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.