J'ai créé un script shell pour installer rbenv sur une nouvelle machine virtuelle, tout le monde semble bien fonctionner, cependant, il semble que rbenv ne parvienne pas à s'installer. Je voudrais ajouter quelques vérifications d'erreur supplémentaires tout au long du processus pour m'assurer que l'installation a bien lieu, et si quelque chose a échoué, redémarrer l'installation.Installation de rbenv via le script shell
Quelques notes:
- Ceci est une petite partie d'un script plus
- Cela se fait par le biais
whiptail
dialogue - Je redirigeant la sortie vers un fichier events.log
>&$log_fd...
C'est ce que j'ai actuellement:
set_rbenv(){
# install rbenv
RUBY_VERSION="2.1.4"
RBENV_ROOT="/root/.rbenv"
PROFILE="/root/.bashrc"
# check if rbenv is installed
if [[ ! `which rbenv` ]]; then
if [[ ! -d "$RBENV_ROOT" ]]; then
echo "Cloning rbenv..." >&$log_fd 2>&1
git clone https://github.com/rbenv/rbenv.git $RBENV_ROOT >&$log_fd 2>&1
fi
if [[ ! -d "$RBENV_ROOT/plugins/ruby-build" ]]; then
git clone https://github.com/rbenv/ruby-build.git $RBENV_ROOT/plugins/ruby-build >&$log_fd 2>&1
fi
if [[ ! `grep -e '/.rbenv\/bin' $PROFILE` ]]; then
echo "rbenv not in PATH ... adding..." >&$log_fd 2>&1
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> $PROFILE 2>&1
fi
if [[ ! `grep -e '^\eval "$(rbenv init -)"' $PROFILE` ]]; then
echo "rbenv init not in .bashrc... adding..." >&$log_fd 2>&1
echo 'eval "$(rbenv init -)"' >> $PROFILE 2>&1
fi
. $PROFILE
echo "Finished Installing rbenv..." >&$log_fd 2>&1
else
echo "rbenv already installed... skipping!" >&$log_fd 2>&1
fi
if [ ! -d "$RBENV_ROOT/versions" ]; then
echo "$RBENV_ROOT/versions doesn't exist ... creating..."
mkdir $RBENV_ROOT/versions >&$log_fd 2>&1
fi
if [ ! -d "$RBENV_ROOT/versions/$RUBY_VERSION" ]; then
echo "$RBENV_ROOT/versions/$RUBY_VERSION doesn't exist ... creating..." >&$log_fd 2>&1
mkdir $RBENV_ROOT/versions/$RBENV_VERSION >&$log_fd 2>&1
fi
# check if ruby version is installed
if [[ ! `rbenv version | grep $RUBY_VERSION` ]]; then
echo "installing ruby 2.1.4" >&$log_fd 2>&1
rbenv install $RUBY_VERSION >&$log_fd 2>&1
rbenv global $RUBY_VERSION >&$log_fd 2>&1
if [ ! -d "$RBENV_ROOT/versions/$RUBY_VERSION/etc" ]; then
echo "$RBENV_ROOT/versions/$RUBY_VERSION/etc doesn't exist ... creating..." >&$log_fd 2>&1
mkdir $RBENV_ROOT/versions/$RUBY_VERSION/etc >&$log_fd 2>&1
fi
else
echo "ruby $RUBY_VERSION already exists... skipping!" >&$log_fd 2>&1
fi
((STATUS += 35))
echo $STATUS
}
Alors que l'installation elle-même peut échouer à tout moment sur la nouvelle machine virtuelle, je suis foutue si rbenv installe, mais rien d'autre ne (comme Ruby-build) ou $ PATH, etc.
Ne serait-il plus de sens pour encapsuler chaque commande dans sa propre instruction if
en dehors de la if which rbenv
initiale, ou existe-t-il un moyen plus robuste de s'assurer que l'installation se termine avec succès?