Bem, para começar, você não precisaria escrever um aplicativo em C - um simples bash ditty faria você bem.
Acho que a solução mais limpa possível envolveria o sistema update-alternatives
. É assim que, por exemplo, o Ubuntu consegue manter várias máquinas virtuais Java separadas enquanto instaladas lado a lado. O problema é que você precisa configurá-lo sozinho.
Acabei de encontrar uma postagem de uma lista de discussão que não parece fazer a maior parte do trabalho pesado para você. Você pode precisar alterar os números de versão um pouco, mas além disso, você deve ter a idéia.
Para a posteridade (no caso do Google mexer no URL ou no tópico), vou copiar no final do negócio agora, mas não tenho nenhum crédito por escrevê-lo.
If any of you are using Ubuntu this is a pretty nice way to manage multiple
ruby interpreters.
It has the advantage of managing the manpages, ri, and irb as "slaves", so
they change when a new interpreter is selected.
here's the code:
# become root
su
# make sure the packages are installed for 1.8 & 1.9
aptitude install -s ~n^ruby1.[89]$ ~n^irb1.[89]$ ~n^ri1.[89]
# install ruby1.8 & friends with priority 500
# so this will be the default "auto" choice
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.8 500 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby.1.8.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.8 \
--slave /usr/bin/irb irb /usr/bin/irb1.8
# install ruby1.9 & friends with priority 400
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby1.9 400 \
--slave /usr/share/man/man1/ruby.1.gz ruby.1.gz \
/usr/share/man/man1/ruby.1.9.gz \
--slave /usr/bin/ri ri /usr/bin/ri1.9 \
--slave /usr/bin/irb irb /usr/bin/irb1.9
# choose your interpreter
# changes symlinks for /usr/bin/ruby ,
# /usr/bin/irb, /usr/bin/ri and man (1) ruby
update-alternatives --config ruby
for those with additional interpreters in say /usr/local/bin, other Debian
variants, or managing other tools, vary as required.
% man update-alternatives
hope wrapping didn't mangle it too much, and that someone finds this useful
...
--
cheers,
David Lee