Ce billet est une actualisation d'un billet consacré au même thème Linux Ubuntu 10.4 Lucid Lynx : script de sauvegarde et script d'installation idempotent. L'effort a porté sur la simplification et l'épuration des scripts dont les nouvelles versions sont proposées au téléchargement.

Concernant Ubuntu, il semble que cette distribution ait hissé Linux à un certain niveau de maturité dans le confort d'utilisation. La qualité a fortement augmenté mais augmente moins vite. Si des évolutions dans les logiciels présent par défaut et pleins de petites améliorations accompagne cette distribution, rien de révolutionnaire.

Le premier contact avec le processus d'installation est une expérience utilisateur encore plus fluide. C'est très simple.

install_ubuntu_maverick_meerckat_1.jpg

Le partitionnement/formatage se fait en tache de fond pendant que l'on fini d'indiquer le fuseau horaire, le type de clavier et l'identification.

Voir la barre de progression sous la partie principal des écrans ci dessous.

install_ubuntu_maverick_meerckat_2.jpg install_ubuntu_maverick_meerckat_3.jpg

On ne sait toujours pas qui (combien) utilise Ubuntu. Mais c'est sans doute très sous-estimé !

Mise à jour ou instalation ?

On a déjà présenté la méthode précédemment, il est toutefois bon d'apporter une précision: Faut-il mettre /home sur une partition à part ? Finalement, la réponse à cette question conditionne grandement le choix entre la mise à jour ou l'installation.

Le pour :
  • On peut formater le système sans bouger les données.
  • On récupère plus facilement en cas de crash

Le contre :
  • Toutes les préférences applicatives sont conservées dans /home/ (dans des répertoires cachés). L'intérêt d'une réinstallation complète s'est aussi de faire le ménage.
  • Une partition est figée. Déterminer l'espace précis nécessaire aux programmes à installer versus les données n'est jamais facile. Cela engendre nécessairement une marge d'espace inutilisé sur la partition système et donc perdu inutilement
  • En cas de crash, on récupère tout aussi bien à partir d'un autre OS ou d'un live cd/usb

La sauvegarde des données avec rsync

Le script initiale continuera de satisfaire ses utilisateurs. Pour ceux qui font du développement web, une sauvegarde de toutes les bases sql est un complément nécessaire :
for i in `mysqlshow -h localhost --user=${USERDB} --password=$mysql_pwd | awk -F "^| " '{print $2}' | grep -v '^$'`
do
mysqldump -h localhost --user=${USERDB} --password=${PASSDB} --add-locks --add-drop-table $i | gzip > ${CHEMIN}"/sql/"$i.sql.gz | grep '^$'
done;

Le mysqlshow permet de récupérer la liste des bases sur le serveur. le awk retire les | (pipe) et le grep supprime les lignes vides.
Ensuite on fait un dump de chacune des bases.

Installation automatisée

Dans cette nouvelle version du script, un soin particulier a été apporté à la séparation des paquets du dépôt officiel des paquets issus d'autres dépôts.
En tête du script on trouve la fonction addifabsent qui permet d'ajouter une ligne dans le fichier de dépôt sans créer de doublon.
#!/bin/sh

# Usage : addifabsent 'line' 'file'
addifabsent() {
  if ! grep -qFx "$1" "$2" 2>/dev/null
  then
      echo "$1" >>"$2"
  fi
}
Ensuite, on recueille le nom de la distribution:
while [ ! $DISTRIBUTION ] do    echo "Entrez le nom de la distribution dans les depots (lucid, maverick, natty...) : "     read DISTRIBUTION done Les paquets standards se trouvent dans les dépôts officiels. En théorie, pas besoin de les ajouter. Pour rappel (ou par sécurité) :
# Ajout des dépôts standards (normalement pas besoin)
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security main restricted" /etc/apt/sources.list
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security universe" /etc/apt/sources.list
addifabsent "deb http://security.ubuntu.com/ubuntu ${DISTRIBUTION}-security multiverse" /etc/apt/sources.list
Pour que
les nouveaux dépôts (ou ceux retirer) soient pris ne compte, il faut rafraîchir:

echo "- Mise a jour des depots"
aptitude update

Aptitude est absent dans l'installation d'Ubuntu depuis Maverick. On l'installe donc avec apt-get:
sudo apt-get install aptitude -y

Pourquoi aptitude ?
Bien qu'aptitude et apt-get aient la même syntaxe, ils ne font pas les choses de la même façon.
Par exemple, aptitude permet l'installation d'une version spécifique d'un paquet, log son activité. Il est communément admis qu'il gère mieux les dépendances et les conflits. Ainsi, lors de la désinstallation d'un paquet aptitude supprimera les paquets inutiles.


# admin
aptitude install -yq emacs rsync  nfs-common bzip2 less ssh manpages-fr 
aptitude install -yq  ttf-mscorefonts-installer ffmpeg unrar unace compizconfig-settings-manager compiz-fusion-plugins-extra  gmountiso
aptitude install -yq  thunderbird enigmail filezilla flashplugin-nonfree
aptitude install -yq ntfs-config ntfsprogs gparted
# Image son video
aptitude install -yq gimp gimp-help-fr imagemagick  inkscape cups-pdf  audacity  mplayer smplayer gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg gtk-recordMyDesktop vlc kdenlive subtitleeditor avidemux

# Depot Ubuntu commercial/partenaire : nécessaire pour le plug-in java sun,  Skype
addifabsent "deb http://archive.canonical.com/ubuntu ${DISTRIBUTION} partner" /etc/apt/sources.list
# pidgin avec les updates (pidgin n'est pas updaté dans les depots ubuntu):
apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 67265eb522bdd6b1c69e66ed7fb8bee0a1f196a8
addifabsent "deb http://ppa.launchpad.net/pidgin-developers/ppa/ubuntu `lsb_release --short --codename` main" /etc/apt/sources.list.d/pidgin-ppa.list
# Opera
wget -O - http://deb.opera.com/archive.key | sudo apt-key add -
 addifabsent "deb http://deb.opera.com/opera/ stable non-free" /etc/apt/sources.list

echo "- Mise a jour des depots"
aptitude update
# Java demandera l'acceptation de la licence (dans un ecran tout bleu)
aptitude install -yq sun-java6-plugin pidgin skype opera chromium-browser chromium-browser-l10n
aptitude clean


Pour cups-dpf, il faut aller dans Système->Administration->Impression pour ajouter une imprimante de type "Generic-CPS-PDF-Printer".

Pour les développeurs Web, voici un ajout optionnel qui installe un serveur LAMP:
# lamp
aptitude install -yq apache2 mysql-server-5.0 php5-mysql php5-cgi php5-cli php5-xdebug  php5-dev php5-curl php5-gd php-pear phpmyadmin phpunit libmysqlclient15-dev libapache2-mod-php5  
a2enmod php5
a2enmod rewrite
/etc/init.d/apache2 force-reload
chgrp www-data /var/www/
chown www-data /var/www/
chmod -R 777 /var/www
pear install PHP_CodeSniffer


Les scripts sont disponibles en téléchargement (à vos risques et périls, ... ) dans les ressources de ce blog.
Vous êtes encouragés à employer le principe décrit dans ce billet pour adapter à vos propres besoins.