Attention : Une nouvelle version est disponible : Linux Ubuntu 10.10 Maverick Meerkat

Après les pc Windows et les Mac d'Apple, le système d'exploitation le plus répandu sur ordinateur est Ubuntu (environ 12 millions d'utilisateurs), basé sur le noyau linux, c'est un système d'exploitation open-source.

Ubuntu est une distribution linux. Pour faire simple, une distribution est une sélection d'applications linux emballées (dans des paquets) pour faciliter l'installation. Le but est de proposer aux utilisateurs un ensemble stable et cohérent. Ce système de paquet rend la distribution et le téléchargement d'application simple. Ubuntu hérite du système de paquet Debian (Ubuntu est une déclinaison de la distribution Debian). Le principe des "market place" en est une extension. On cherche dans un catalogue, on déclenche le téléchargement et l'application s'installe. A la différence des "market place", sous Ubuntu, on est dans un environnement ouvert :

  • les sources qui alimentent le catalogue sont personnalisables
  • chacun peut distribuer ces propres applications. 
  • on peut télécharger sans installer

On verra techniquement comment cela se concrétise.

Tout ça est séduisant, mais refaire plusieurs dizaine de recherche/téléchargement/installation pour installer les dernières versions des logiciels qu'on utilise ... un peu lourd comme opération. De nombreuses raisons justifient l'automatisation d'un script d'installation:

  • gagner du temps
  • installer les dernières versions pour plus de fonctionnalités et de sécurité
  • ne rien oublier

La sauvegarde des données avec rsync

Rsync (remote synchronization) est un logiciel libre créé en 1996 par Andrew Tridgell. Andrew a mis au point un algorithme de compression longue distance capable de repérer les redondances dans des fichiers volumineux. Rsync est basé sur cet algorithme ce qui en fait un outil extrêmement efficace pour les opérations de sauvegarde ou de synchronisation. Il est donc tout à fait indiqué pour réaliser une sauvegarde de données avant un formatage ou (conseil) périodiquement.
Le but du script est de sauvegarde des répertoires précis vers un volume de stockage externe (disque externe, ordinateur en réseau, ...)
Que sauvegarder ?
  • le bureau : sur lequel a tendances à s'accumuler tout un bazar ...
  • le profil du navigateur (favoris, mots de passe, historiques ...
  • les mails
  • gnupg pour ne pas perdre les clefs
  • les répertoires documents, images, ...
  • profil de messagerie instantanée
Ensuite, tout dépend de l'utilisation de chacun.
Le script suivant récupère en paramètre le chemin de destination de la sauvegarde, puis synchronise chacun des répertoires avec la cible.
Le paramètre "-- delete" est utilisé pour effacer de la destination ce qui n'est pas dans la source. Cela arrive quand on fait plusieurs sauvegardes espacées dans le temps. Des fichiers peuvent être supprimés suite à un nettoyage. Pour ne pas perdre le bénéfice de ce nettoyage, on supprime les fichiers de la sauvegarde ne se trouvant plus dans la source.
# utiliser -e pour un shell distant (pour une sauvegarde via réseau

#!/bin/sh
echo " -- Script a lancer sur l'ordinateur contenant les donnees -- "
while [ ! $CHEMIN ]
do
echo "Entrez le chemin de destination : "
echo "(exemple: user@ip:/home/user ou /media/disk-externe/save) "
echo "sans / final"
read CHEMIN
done

rsync -va --progress --stats --delete ~/Bureau/ ${CHEMIN}/Bureau/
rsync -va --progress --stats --delete ~/.mozilla-thunderbird ${CHEMIN}/.mozilla-thunderbird
rsync -va --progress --stats --delete ~/.gnupg/ ${CHEMIN}/.gnupg/
rsync -va --progress --stats --delete ~/.mozilla/ ${CHEMIN}/.mozilla/
rsync -va --progress --stats --delete ~/Documents/ ${CHEMIN}/Documents/
rsync -va --progress --stats --delete ~/Images/ ${CHEMIN}/Images/
rsync -va --progress --stats --delete ~/.purple/ ${CHEMIN}/.purple/

Le script peut-être réexécuté plusieurs fois. Rsync effectuant une synchronisation, la réexécution sera plus rapide. Le résultat est inchangé. Ce script est idempotent. Ce script est téléchargeable sur la page ressource.

Installation automatisée

Après avoir installé la dernière version d'Ubuntu, on peut maintenant se pencher sur la réinstallation.
Si l'essentiel des paquets est présent dans les dépôts de Canonical, il reste néanmoins des applicatifs intéressants distribués sur d'autres dépôts. Il faut donc les ajouter. Problèmes, ajouter des lignes dans un fichier va créer des doublons si on exécute le script plusieurs fois. Or, on souhaite un script idempotent qui permette d'arriver à un résultat quelque soit la situation initiale. Il faut donc tester la présence d'un dépôt avant de l'ajouter. C'est le rôle de la fonction addifabsent. (Remerciement à Benjamin pour ce coup de main).

#!/bin/sh

# Usage : addifabsent 'line' 'file'
addifabsent() {
  if ! grep -qFx "$1" "$2" 2>/dev/null
  then
      echo "$1" >>"$2"
  fi
}

Pour donner une certaine pérennité au script, il convient de variabiliser le nom de la distribution. De cette manière, on pourra utiliser le script sur Karmic, sur Lucid puis sur Maverick. Cette variable est utilisée pour sélectionner  les dépôts appropriés. Installer des applications à partir d'un dépôt d'une autre version donne généralement des comportements erratiques.


while [ ! $DISTRIBUTION ]
do
    echo "Entrez le nom de la distribution dans les dépôts (karmic, lucid,...) : "
    read DISTRIBUTION
done

Ensuite, on ajoute les dépôts :

# Pour 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
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} main restricted" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION}-updates main restricted multiverse" /etc/apt/sources.list
addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} universe" /etc/apt/sources.list addifabsent "deb http://ftp.crihan.fr/ubuntu/ ${DISTRIBUTION} multiverse" /etc/apt/sources.list 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

# Medibuntu

wget -q http://fr.packages.medibuntu.org/medibuntu-key.gpg -O- | sudo apt-key add -
 addifabsent "deb http://fr.packages.medibuntu.org/ ${DISTRIBUTION} free non-free" /etc/apt/sources.list


# pidgin avec les updates (pidgin n'est pas update 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

Il faut ensuite, rafraichir la liste des paquets disponibles:

aptitude update

On peut ensuite installer:

echo "- Installation des autres packages:"

Notamment, pour la sauvegarde :


aptitude install -yq  rsync

Il est intéressant de regrouper les installations en un nombre de commande minimum, on gagne le temps d'initialisation d'aptitude. Ce qui n'est pas négligeable. Sans tomber dans un catalogue d'applications recommandées, voici des exemples de packages à installer.

# libc++ pour thunderbird, les 2 ntfs pour gparted
aptitude install -yq python-gnome2-extras libstdc++5 ntfs-config ntfsprogs
# (avant thunderbird)


# desktop
aptitude install -yq language-pack-kde-fr ttf-mscorefonts-installer freemind krdc
ffmpeg unrar unace  sunbird-locale-fr  sunbird compizconfig-settings-manager


# internet reseau communication
aptitude install -yq firefox thunderbird lightning-extension lightning-extension-locale-fr
mozilla-firefox-locale-fr thunderbird-locale-fr enigmail enigmail-locale-fr pidgin filezilla
flashplugin-nonfree skype kopete opera


# Image son video
aptitude install -yq gimp gimp-help-fr imagemagick  inkscape cups-pdf audacity  mplayer
smplayer inkscape gstreamer0.10-plugins-ugly gstreamer0.10-ffmpeg gtk-recordMyDesktop
vlc kdenlive xsane sound-juicer avidemux
(au passage, on notera que l'installation explicite de Gimp n'est pas un hasard. Gimp n'est plus un paquet installé par défaut)
Pour cups-dpf, il faut aller dans Système->Administration->Impression pour ajouter une imprimante de type "Generic-CPS-PDF-Printer".

Ce script est à adapter par chacun en fonction de ses usages. Ce script est téléchargeable sur la page ressource.