Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/04/2011, à 10:42

Lad

Script post-installation ubuntu

Bonjour

J'ai écris le petit script suivant pour installer rapidement les programmes que j'utilise après une installation nouvelle d'ubuntu.

Le script fonctionne mais j'aimerais avoir votre avis car j'aimerais qu'il soit assez robuste. Par ailleurs, lors de l'installation de paquets, apt-get suggère d'installer d'autres paquets. Je voulais savoir s'il est recommandé de les installer et sur qu'elle base apt-get les propose ?

Merci pour votre aide

Voici les étapes du script :

       1) Active le dépot canonical partner
       2) Active le dépot medibuntu
       3) Si $codecs == "oui" installe non-free-codecs et libdvdcss2
       4) Installe successivement tous les paquets contenu dans les variables de la
       section "liste des paquets par catégories"
       5) Ajoute le dépot de virtualbox et installe virtualbox

#!/bin/bash

# Lancer le script en tant que root (faire sudo -s avant)
#
# Des erreurs peuvent survenir car certains paquets n'ont pas été téléchargés, le script
# peut être lancer plusieurs fois si nécessaire.
#

# ----------------------------------------------------------------------------------------
# liste des paquets par catégories
# ----------------------------------------------------------------------------------------

# attribuer oui ou non à la variable codecs. si $codecs == oui les paquets non-free-codecs
# et libdvdcss2 seront installé, si $codecs == non rien de spécila n'est fait
codecs="oui"

# donner une liste de paquets dans chaque variable. Si vous rajouter une variable ajouter
# les lignes correspondantes dans la section "installation des paquets par catégories".
compilateur="build-essential gcc gfortran"

python="ipython python-qt4 python-numpy python-scipy python-matplotlib pymol"

editeur="vim-gnome"

sciences="grace gnuplot gperiodic gchempaint openmpi-bin"

media="vlc mozilla-plugin-vlc gimp inkscape blender povray jokosher cheese"

latex="texlive texlive-lang-french texlive-latex-extra kbibtex aspell-fr"

divers="acroread filezilla gnome-do compizconfig-settings-manager chromium-browser wine"

# ----------------------------------------------------------------------------------------
# initialisation
# ----------------------------------------------------------------------------------------
echo -e "\n\t * * *\e[0;94m Complète l'installation d'ubuntu \e[0m * * * \n"

# fichier log
log="install.log"
if [[ -f $log ]]
then
    rm -iv $log
else
    touch $log
fi

# ----------------------------------------------------------------------------------------
# quelques fonctions
# ----------------------------------------------------------------------------------------

function message {
    # affiche un message sur stdout et dans le log
    echo -e "\n# --------------------------------------------------"   | tee -a $log
    echo      "# $1"                                                   | tee -a $log
    echo -e   "# --------------------------------------------------\n" | tee -a $log
}

function myecho {
    # affiche une ligne écrite en bleu
    echo -e "\n\t * * *\e[0;94m  $1 \e[0m * * * \n"
    echo -e "\n\t * * * $1 * * * \n" >> $log
}

function myechovert {
    # affiche une ligne écrite en vert
    echo -e "\n\t * * *\e[0;32m  $1 \e[0m * * * \n"
    echo -e "\n\t * * * $1 * * * \n" >> $log
}

function myechored {
    # affiche une ligne écrite en rouge
    echo -e "\n\t * * *\e[0;91m  $1 \e[0m * * * \n"
    echo -e "\n\t * * * $1 * * * \n" >> $log
}

installe=""
nonInstalle=""

function section_install {
    # attend comme arguments une liste de paquets
    for paquet in $*
    do
        # install package if package not already installed 
        myecho "installation de $paquet"
        apt-get --auto-remove --yes -q install $paquet | tee -a $log
        # test if package well installed
        if [[ $? == 0 && -n "$(dpkg --status $1 | grep "Status" | grep "install ok installed")" ]]
        then
            myechovert "$paquet installé"
            installe="$installe $paquet"
        else
            myechored "Erreur lors de l'installation de $paquet"
            nonInstalle="$nonInstalle $paquet"
        fi
    done
}

# ----------------------------------------------------------------------------------------
# active le depot canonical partners
# ----------------------------------------------------------------------------------------
message "active le depot canonical partners"

cp -v /etc/apt/sources.list /etc/apt/sources.list.bak | tee -a $log
echo "sed \"s/# deb http\:\/\/archive.canonical.com/deb http\:\/\/archive.canonical.com/\" /etc/apt/sources.list > sources.list.new" | tee -a $log
sed "s/# deb http\:\/\/archive.canonical.com/deb http\:\/\/archive.canonical.com/" /etc/apt/sources.list > sources.list.new
cp -v sources.list.new /etc/apt/sources.list | tee -a $log

# ----------------------------------------------------------------------------------------
# ajout du depot medibuntu
# http://doc.ubuntu-fr.org/medibuntu#ajouter_le_depot_medibuntu
# ----------------------------------------------------------------------------------------
message "Ajout de medibuntu"

echo "wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list" | tee -a $log
wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list | tee -a $log

echo "apt-get -q update" | tee -a $log
apt-get -q update >> $log

echo "apt-get --yes -q --allow-unauthenticated install medibuntu-keyring" | tee -a $log
apt-get --yes -q --allow-unauthenticated install medibuntu-keyring  | tee -a $log

if [[ $? == 0 ]]
then
    myechovert "medibuntu-keyring installé"
else
    myechored "medibuntu non ajouté, relancer le script devrait suffire"
    exit 1
fi

# ----------------------------------------------------------------------------------------
# mise à jour des sources de logiciels
# ----------------------------------------------------------------------------------------
message "mise à jour des paquets"

myecho "apt-get -q clean"
apt-get -q clean >> $log
myecho "apt-get -q update"
apt-get -q update >> $log
myecho "apt-get -q --yes upgrade"
apt-get -q --yes upgrade | tee -a $log

# ----------------------------------------------------------------------------------------
# installation des paquets non-free-codecs et libdvdcss2
# necessite un traitement particulier pour être sur que non-free-codecs est installé avant
# libdvdcss2 sinon ça peut poser problème
# ----------------------------------------------------------------------------------------

if [[ $codecs == "oui" ]]
then
    message "codecs multimédia propriétaires"
    myecho "installation de non-free-codecs"
    apt-get --auto-remove --yes -q install non-free-codecs | tee -a $log
    # test if package well installed
    if [[ $? == 0 && -n "$(dpkg --status non-free-codecs | grep "Status" | grep "install ok installed")" ]]
    then
        myechovert "non-free-codecs installé"
        installe="$installe non-free-codecs"
        myecho "installation de libdvdcss2"
        apt-get --auto-remove --yes -q install libdvdcss2 | tee -a $log
        if [[ $? == 0 && -n "$(dpkg --status libdvdcss2 | grep "Status" | grep "install ok installed")" ]]
        then
            myechovert "libdvdcss2 installé"
            installe="$installe libdvdcss2"
        else
            myechored "Erreur lors de l'installation de libdvdcss2 - relancer le script"
            exit 1
        fi
    else
        myechored "Erreur lors de l'installation de non-free-codecs - relancer le script devrait être suffisant"
        exit 1
    fi
fi

# ----------------------------------------------------------------------------------------
# installation des paquets par catégories
# ----------------------------------------------------------------------------------------

message "compilateur et developpement"
section_install $compilateur

message "python"
section_install $python

message "editeurs"
section_install $editeur

message "sciences"
section_install $sciences

message "media : son, graphisme et video"
section_install $media

message "latex"
section_install $latex

message "divers"
section_install $divers

# ----------------------------------------------------------------------------------------
# installation de virtual box 4.0
# ----------------------------------------------------------------------------------------
message "installation de virtual box 4.0"

grep virtualbox /etc/apt/sources.list 
if [[ ! $? == 0 ]] 
then
    echo "deb http://download.virtualbox.org/virtualbox/debian `lsb_release -sc` contrib" | sudo tee -a /etc/apt/sources.list
    apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 98AB5139 
    apt-get update >> $log
else
    myecho "depot virtualbox déjà présent"
fi

paquet="virtualbox"
myecho "installation de $paquet"
apt-get --auto-remove --yes -q install $paquet | tee -a $log
# test if package well installed
if [[ $? == 0 ]]
then
    myechovert "$paquet installé"
    installe="$installe $paquet"
else
    myechored "Erreur lors de l'installation de $paquet"
    nonInstalle="$nonInstalle $paquet"
fi

echo -e "\nvoir http://doc.ubuntu-fr.org/virtualbox\n"

# ----------------------------------------------------------------------------------------
# nettoyage
# ----------------------------------------------------------------------------------------
message "nettoyage"
echo "apt-get -q --yes autoremove" | tee -a $log
apt-get -q --yes autoremove | tee -a $log

# ----------------------------------------------------------------------------------------
# bilan
# ----------------------------------------------------------------------------------------
message "bilan installation"
for paquet in $installe
do
    printf "%40s  : \t \e[0;32m installé\e[0m \n" "$paquet" 
    echo -e "$paquet \t\t installé" >> $log
done

declare -i i=0
for paquet in $nonInstalle
do
    ((i=$i+1))
    printf "%40s  : \t \e[0;91m non installé\e[0m \n" "$paquet"
    echo -e "$paquet \t\t non installé !!" >> $log
done

# ----------------------------------------------------------------------------------------
# fin du script, suppléments :
# ----------------------------------------------------------------------------------------

if [[ ! $i == 0 ]]
then
    myechored "nombre d'erreur : $i"
fi
exit $i

Hors ligne

#2 Le 20/04/2011, à 11:35

beware

Re : Script post-installation ubuntu

Gcc n'est pas déjà compris dans build-essential?

Après pour le reste, du peu que je connaisse c'est pas trop mal. Le problème de ce genre de script (et j'en avais fait 1 pour moi) c'est qu'il sont en général personnel, ciblé pour un type de personne.

Par exemple, si je prends mon cas, l'installation des paquets python ne m'est pas utile.

Hors ligne