Script de post-installation pour Ubuntu

À force d’installer Ubuntu pour des gens, je me retrouve souvent à refaire un certain nombre d’opérations identiques sur chacune de ces machines. Cela faisait longtemps que je souhaitais écrire un petit script pour automatiser une bonne partie de ces étapes une fois le système d’exploitation installé afin de gagner du temps.

Le script en action
Le script en action

Fonctionnement

Ce script pose quelques questions à l’utilisateur en début d’exécution, puis installe toute une série de logiciels libres, de polices de caractères, de codecs audio et vidéo, de plugins de navigateur et, si l’utilisateur ne peut s’en passer et le décide, de logiciels propriétaires connus. Pendant l’opération quelques dépôts de logiciels sont ajoutés et une ou deux optimisations sont apportées et toutes les mises à jour disponibles sont finalement installées. Il est facile de modifier le script selon vos besoins personnels en l’éditant avec votre éditeur de texte préféré.

Instructions

Je met à disposition ici ce script pour ceux que cela intéresse (teste sur Ubuntu Jaunty 32 et 64 bits, mais devrait fonctionner avec d’autres versions également) :

  1. enregistrer postinstall.sh
  2. clic droit -> propriétés -> permissions -> « autoriser l’exécution du fichier comme un programme »
  3. double clic sur le fichier et choisir « lancer »

N’hésitez pas à proposer des améliorations !

Mise à jour 3 mai 2009 : J’ai publié ici une nouvelle version de ce script qui tient compte de certains de vos commentaires. Merci !

Mise à jour 4 mai 2009 : J’ai encore publié une nouvelle version de ce script qui corrige certains problèmes et tient compte des nouveaux commentaires.

Mise à jour 5 mai 2009 : Décidément, les commentaires pleuvent ! La nouvelle version du script vérifie désormais si une nouvelle version est disponible et tiens compte de certaines de vos remarques dont je vous remercie. Il est en outre maintenant possible d’exécuter plusieurs fois le script de suite sans avoir des entrées à double dans les fichiers de configuration.

Mise à jour 7 mai 2009 : Encore une nouvelle version. Pour cette version et les prochaines, reportez-vous au changelog (il apparaît automatiquement en cas de mise  à jour automatique).

68 pensées sur “Script de post-installation pour Ubuntu”

  1. Salut,

    Déjà bravo pour le script. Il fonctionne très bien ! 😀

    Proposition d’améliorations
    – Mettre des cases à cocher au début à la place des popups (pour choisir les logiciels à installer).
    – Afficher une barre de progression au lieu de la barre qui glisse de gauche à droite (parce qu’on ne sait pas où l’installation en est).
    – Afficher une petite flèche détails et lorsqu’on clique dessus un terminal s’affiche dans la fenêtre sous la barre de progression (comme pour les mises à jours du système en gros).

    Voilà. J’ai dis tout ce qu’il me passais par la tête, mais je ne sais pas à quel point c’est réalisable 😉

    1. @Jonas
      Merci pour tes propositions, Zenity qui est utilisé pour la partie graphique permet de faire presque tout ce que tu dis (pour la barre de progression c’est plus compliqué parce qu’il n’y a pas vraiment de moyen de savoir combien de temps prend l’installation individuelle des paquets).

  2. très bonne idée mais une ligne ton script n’est-elle pas adapter en fonction du login ?

    # Clés SSH autorisées pour le login sur le compte utilisateur et root
    KEYS= »ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAnVpCCorOaFElA58YjxUTVSznweLIYAN0omPfJV8a/6xk/t44jNcNaoDOInrc/369LS7LIvaChGnv8KXQ0e0dF0bxFyTJyWDTzwrxu5Tl+v5Par7SJ04MnYeHlqlRhKv57jyCq52Prcbra8H032wu1IuvSjkj9Ctxtw5T2lbBy3H/+KFsNzv1zcB0h2ST1JRREXBZLWG5Do8AazViWGBtniPMyMHKmdby/v9WEXhz3xf0yuRoZg0R1wceBcNP2kKefA5/UCltT/pq8+VbnS14Bq3SAjZwTKrvg3oUGW0Qsio5vsxdMHr0jUH5ZL063qXmBVcKuIgP15Vf1ayW/ycC/Q== jernst@jernst-desktop »

    1. @benoit
      Il s’agit de ma clé SSH publique et oui, il faut la remplacer (par rien si on a pas envie/besoin de se logguer à distance sur la machine) ou par sa propre clé ssh qui se trouve dans ~/.ssh/id_rsa.pub (si elle n’existe pas, il est possible d’en générer une avec ssh-keygen). J’ai placé la clé SSH et la liste des paquets dans des variables au début du script pour qu’il soit facile de le personnaliser.

  3. Bonjour,

    J’avais également fait un script dans le genre du tien mais en moins evolué et moins bien en géneral. Donc merci pour les idées et bravo.

    Cependant, j’ai une petite question :
    Quand tu installes SSH, tu utilises la clé référencé au début du script ou tu calcules une nouvelle clé?

    1. @Beware

      Quand tu installes SSH, tu utilises la clé référencé au début du script ou tu calcules une nouvelle clé?

      Je met la (ou les) clé spécifiée au début du fichier dans authorized_keys de la machine à installer (pour l’utilisateur qui exécute le script et pour root). Cela signifie que le propriétaire de la clé privée correspondante peut s’identifier sans mot de passe sur la machine en question (j’utilise cela pour gérer les machines que j’installe).

  4. @jernst

    pour la barre de progression c’est plus compliqué parce qu’il n’y a pas vraiment de moyen de savoir combien de temps prend l’installation individuelle des paquets

    Il y aurait aussi la possibilité d’afficher quel paquet est en cours d’installation sous la barre qui se balance de droite à gauche 😉
    Ou du moins mieux détaillé ce qui se passe (même si c’est déjà très bien 🙂 )

    1. @Brndn
      J’ai corrigé ce manque de précision dans la nouvelle version du script que je viens de publier à la place de l’ancienne version. J’ai mis ça sous GPL v.3+

  5. Wow! merci tu viens réellement de me simplifier la vie! Je m’étais fait un fichier avec toutes mes commandes, mais pour aller chercher certain logiciel propriétaire il fallait que je navigue. Bref, maintenant je peux finir d’installer Ubuntu sans que ça me prenne 2 heures.

    Merci encore 😀

  6. Comment s’assurait que l’installation ne s’arrêterait pas si un logicielle de la liste n’est pas présent dans les dépôt de cette version ???

  7. Bonjour,

    ce script a l’air interessant..par contre je voudrai bien savoir à quoi correspond les dépots supplémentaires (j’imagine qu’il y a medibuntu..quoi d’autres ? Les optimisations..quelles sont-elles ? logiciels libres…lesquels ?

    Merci pour tous ces renseignements 😉

    1. @bouhhh
      Il s’agit des dépôts medibuntu, wine et google.
      Pour la liste des logiciels, il suffit de regarder les premières lignes du script (il est possible de modifier la liste selon les préférences de chacun)

      Par exemple, pour les logiciels libres :

      # Logiciels libres à installer
      FREESOFTWARE= »adblock-plus nmap iotop python-coherence wine pidgin-plugin-pack pidgin-facebookchat language-support-fr cheese simple-ccsm compizconfig-settings-manager p7zip-full vim »

      Quant aux « optimisations », il s’agit pour l’instant de l’installation de prelink et preload, de la configuration automatique de prelink, du lancement initial de prelink et du remplacement de relatime par noatime dans fstab.

  8. Merci pour tes précisions ^^

    Je me sens vraiment con lool…j’ai même pas pensé à regarder à l’intérieur du script…désolé lol

    Bonne continuation 😉

  9. Toujours dans l’optique d’améliorer ton script, il n’y aurait pas moyen d’enlever les beap systèmes, ce son strident qui fait grincher mes dents parce que j’ai trop pesé sur le bouton « backspace »?

    J’ai la commande, mais je ne sais pas où et comment l’intégrer dans le script pour que cela fonctionne.

    sudo gedit /etc/modprobe.d/blacklist.conf

    # disable the system bip at the shutdown
    blacklist pcspkr

  10. @TheHappyFerret
    quelque chose comme ça…

    FALSE N « Mettez hors de service le bip système »

    case « ${choice} » in
    * »N »* )
    echo « # Ajout de dépôts… »
    gksudo -m « Merci de saisir votre mot de passe pour poursuivre… » — bash -c  »
    cat >> /etc/modprobe.d/blacklist.conf <<EOF

    # disable the system bip at the shutdown
    blacklist pcspkr
    EOF »

  11. Attention!!!
    il faudrait ajouter un copie de sauvegarde du fstab…
    Je ne sais pas encore pourquoi ni comment je vais reparer tout ca, mais mon fstab est quasi vide, et mes 2 partitions « separees » (/home + /data) ne sont pas montees… donc je ne peux meme pas demarrer de session X!

    je vous en dis plus quand jaurais trouve (j’espere) une solution! 🙁

  12. Attention!!! La partie « Optimisation » qui touche le fichier /etc/fstab n’a pas l’air de fonctionner a 100%.
    Dans mon cas mon fstab s’est retrouve vide, donc impossible de lancer de session X ni meme de monter mes differentes partitions. Il serait bon de faire une copie de sauvegarde au cas ou!

    merci

    1. @kbsali
      Il y avait effectivement un bug sur une des premières versions (désolé). Si tu n’as pas redémarré, tu devrais trouver ton fstab intacte dans /tmp/fstab.

  13. Bonjour,

    Super ton script,
    As-tu une methode simple pour ajouter d’autre programme ?
    Ou bien pour supprimer des programmes installés par défault (les jeux par exemple ?)

    1. @Jcderchain

      As-tu une methode simple pour ajouter d’autre programme ?

      Il suffit d’ajouter les paquets en début de script à la liste « FREESOFTWARE= » par exemple.
      Pour la suppression d’autres paquets, rien n’est prévu pour l’instant, mais ça devrait pouvoir se rajouter facilement.

  14. Bonjour,

    j’ai ajouté quelques modifications personnel au script, si ca peut aider :
    – ajout de `lsb_release -c | awk ‘{pint$2}’` pour remplacer toutes les occurences « jaunty » dans la liste des depots
    – ajout du depot et de la clé medibuntu
    – ajout d’une nouvelle fenetre pour l’ajout de nouveaux logiciels en plus de ceux proposé de base :
    #Ajout de nouveaux logiciels
    case « ${choice} » in
    * »B »* )
    echo « # Installation de logiciels libres… »
    killall update-manager
    FREESOFTWARE= »$(zenity –width=500 –height=130 –title= »Options » –entry
    –entry-text= »$FREESOFTWARE » –text= »Logiciels a installer ») »
    gksudo « aptitude install -y $FREESOFTWARE » >> $0.log 2>&1
    echo « 30 »
    ;;
    esac

    Par contre, je sais pas pourquoi, mais le script se bloque a l’installation de java. Dans le log je peut voir qu’il attend la reponse à la licence Sun, et donc il ne peut continuer.
    – Ajout d’un menu pour l’installation des drivers NVIDIA ou ATI

    1. @Beware
      Merci pour ton commentaire, néanmoins pour medibuntu, cela existait déjà dans la première version du script.

      Par contre, je sais pas pourquoi, mais le script se bloque a l’installation de java. Dans le log je peut voir qu’il attend la reponse à la licence Sun, et donc il ne peut continuer.

      J’ai corrigé cela dans la version postée ce matin, n’hésite pas à me dire si cela ne fonctionne toujours pas.

  15. Proposition d’améliorations/etc/wgetrc
    – Donner la possibilité de déclarer un proxy … (dans /etc/bash.bashrc /etc/profil /etc/wgetrc Menu préférences/Serveur mandataire de Gnome (fichier ???) ou synaptics ! )

  16. Merci pour la nouvelle version

    Quelle que suggestion …

    une amélioration des commentaire des commande du scripte pour facilité la modification par un néophyte serai appréciable… surtout pour  « # Optimisations et ajustements… »

    indiqué les commande a n’utilisai qu’une fois vu que « – n’ajoute pas les dépôts à double (permet d’exécuter le script plusieurs fois) »

    comme « # Désactive les bips système, ajouté par postinstall.sh $CURRENTVERSION
    blacklist pcspkr
    EOF »

    1. @loke
      Je crois que j’ai implémenté toutes tes suggestions dans la dernière version. Je te remercie pour celles-ci et n’hésite pas à me dire s’il manque quelque chose.

  17. Salut Jernst

    J’ai une autre proposition pour améliorer ton script. OpenOffice.Org vient tout juste de sortir sa version 3.1. Je te propose d’ajouter le ppa pour que l’installation se fasse automatique

    deb http://ppa.launchpad.net/openoffice-pkgs/ppa/ubuntu jaunty main
    wget -q ‘http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x60D11217247D1CFF’ -O- | sudo apt-key add –

    Cya

    1. @TheHappyFerret

      Salut,

      J’ai une autre proposition pour améliorer ton script. OpenOffice.Org vient tout juste de sortir sa version 3.1. Je te propose d’ajouter le ppa pour que l’installation se fasse automatique

      Merci pour la proposition, je vais y réfléchir, mais le but n’est pas non plus d’installer plein de paquets qui existent dans main sous prétexte qu’une version plus récente existe dans un PPA (sauf très bonnes raison). Il faut que je prenne le temps de tester un peu cette nouvelle version d’OpenOffice pour voir si le risque en vaut la peine. Une autre chose à laquelle j’ai pensé serait d’ajouter LanguageTool pour la correction grammaticale.

      à+

      1. @TheHappyFerret
        J’ai fait quelques tests pour intégrer l’installation d’OpenOffice 3.1 (et aussi de LanguageTool pour la correction grammatical). Mais pour l’instant je me heurte aux problèmes suivants :

        OpenOffice.org 3.1 n’est pas en français, son installation désinstalle language-support-fr et je n’arrive pas à faire marcher LanguageTool. Si quelqu’un a une expérience différente ou des astuces, je suis preneur. En attendant je ne vais pas activer cette possibilité.

    1. @loke

      rien a redire sur la nouvelle version les com sont très claire.

      Merci !

      ~/Modèles
      ~/.gnome2/nautilus-scripts

      Une suggesion de paquet ?

      une modif du scripte pour crée une entré Desktop dans le menu pourrai êtres sympa

      Tu peux préciser exactement ? Il y a déjà une entrée Bureau dans Raccourcis. Parles-tu de « Desktop effects » ?

      À bientôt

  18. Bonjour,

    Je n’ai pas encore eu l’occasion de retester le script chez moi, mais vu les commentaires depuis, j’imagine que ca marche.

    Mais j’aurais quelques commentaires, plus sur la forme que le fond :

    – Pourquoi ne pas ajouter la clé medibuntu au lieu de forcer son utilisation?
    – Pourquoi ajouter le depot testing de google? Sur un système stable c’est pas conseillé.
    – Pourquoi ne pas proposer a l’utilisateur de changer de mirroir pour les depots ubuntu? (comme free, jussieu …)?
    – Pourquoi ne pas proposer a l’utilisateur d’ajouter ces propres logiciels dans FREESOFTWARE au lieu de le modifier dans le script?
    – (je commence a etre chiant, non?) Modifier le script pour le plugin flash. La raison est simple, l’installation pour un systéme 64bits ne se fait pas par les depôts comme sur un systéme 32bits (cf. doc.ubuntu-fr.org)
    – N’est-il pas préferable de faire une mise a jour du systéme aprés l’ajout des depôts au lieu de le faire à la fin du script?
    – Au lieu de faire ‘killall update-manager’, pourquoi ne pas vérifier s’il est lancé et si c’est le cas alors on kill l’application sinon on continue. Petite info si tu as besoin d’aide pour recupere le PID du programme :
    PID = ps -U $USER | grep sshd | awk ‘{print $1}’
    kill -9 PID

    Au revoir

    1. @Beware

      Salut,

      – Pourquoi ne pas ajouter la clé medibuntu au lieu de forcer son utilisation?

      Je force une seule fois apt-get justement pour installer cette clé (paquet medibuntu-keyring) ; mais tu as raison, cela serait peut-être plus cohérent (et rapide) d’installer la clé de la même façon que pour les autres paquets ; je changerai ça dans la prochaine version.

      – Pourquoi ajouter le depot testing de google? Sur un système stable c’est pas conseillé.

      Pour Picasa 3 essentiellement (Picasa 2 n’étant à ma connaissance plus maintenu) ; mais c’est clair que c’est discutable (d’autant plus que Picasa 3 n’existe pas encore en français). Je pense enlever cette ligne une fois que Picasa 3 sera passé de testing à stable.

      – Pourquoi ne pas proposer a l’utilisateur de changer de mirroir pour les depots ubuntu? (comme free, jussieu …)?

      Le miroir est déjà choisi en fonction du pays à l’installation ; c’est pas mal je trouve. Gérer les mirroirs en fonction de l’ISP de l’utilisateur est un peu hors du « scope » de ce script.

      – Pourquoi ne pas proposer a l’utilisateur d’ajouter ces propres logiciels dans FREESOFTWARE au lieu de le modifier dans le script?

      Je pourrai le faire effectivement, quelqu’un à même proposé un bout de code pour le faire précédemment. Néanmoins, j’aimerai que le script reste simple à utiliser et ne pause pas 12 questions à l’utilisateur. Et, à mon avis, si quelqu’un est assez expérimenté pour connaître le nom des paquets par cœur, il peut aussi modifier une ligne de code dans le script. Mais j’y réfléchirais quand même !

      – (je commence a etre chiant, non?)

      non non 😉

      Modifier le script pour le plugin flash. La raison est simple, l’installation pour un systéme 64bits ne se fait pas par les depôts comme sur un systéme 32bits (cf. doc.ubuntu-fr.org)

      L’installaiton du pluginflash est identique sur 32 et 64 bits (j’ai plusieurs PCs avec Ubuntu 64 bits). Je crois même qu’à partir de Jaunty, ndiswrapper est également utilisé sur la version 32 bits. Si tu parles de la vraie version 64 bits, celle-ci n’est effectivement pas dans les dépôts car elle est encore en version alpha. J’imagine que si tu penses que ce n’est pas une bonne idée d’ajouter les dépôts testing de google, tu seras d’accord pour convenir avec moi que ce n’est pas une bonne idée d’installer une version alpha de flash ;-).

      – N’est-il pas préferable de faire une mise a jour du systéme aprés l’ajout des depôts au lieu de le faire à la fin du script?

      Je pense que cela ne change rien, non ?

      – Au lieu de faire ‘killall update-manager’, pourquoi ne pas vérifier s’il est lancé et si c’est le cas alors on kill l’application sinon on continue.

      Ce que j’aimerai surtout faire, c’est désactiver temporairement update-manager et les apt-get update lancés par le système ; car dans certaines (rares) conditions mon script ne peut pas installer certains paquets si par malchance un apt-get update est lancé par le système juste avant l’exécution de l’installation de paquets. Si quelqu’un à une idée pour faire cela correctement, n’hésitez pas !

      Merci pour les commentaires !

  19. @Beware « – Pourquoi ne pas proposer a l’utilisateur d’ajouter ces propres logiciels dans FREESOFTWARE au lieu de le modifier dans le script? »

    Pourquoi ? Je ne comprend pas la démarche quelle avantage peut on tiré a ne pas édité directement le script ? Je ne vois pas le gain de temps que l’on pourrai en tiré ? Modifié la liste de logicielle directement dans le scripte permet de lancé directement le scripte partir prendre un café (ou autre…) revenir est lancé une autre install.

    « – Pourquoi ne pas ajouter la clé medibuntu au lieu de forcer son utilisation? »

    sa doit être du au erreur de reconnaissance de la clef medibuntu qui se produit de temps en temps…

  20. @jernst
    ~/Modèles
    ~/.gnome2/nautilus-scripts
    Une suggesion de paquet ?

    —> http://rapidshare.com/files/230974776/nautilus-scripts.tar.html
    les miens si tu en a de plus adapté je suis preneur

    @jernst
    une modif du scripte pour crée une entré Desktop dans le menu pourrai êtres sympa
    Tu peux préciser exactement ? Il y a déjà une entrée Bureau dans Raccourcis. Parles-tu de « Desktop effects » ?

    une entré dans Applications → Outils système
    permettant de mètre a jour ton scripte au lancement et de l’exécute (sympa si un dépôt a était changé est qu’ont modifie le scripte pour réglé le problème pour tous les utilisateur qui l’utilise)

  21. Je vient de remarquer

    case « ${choice} » in
    * »M »* )
    echo « # Optimisations et ajustements (réactivation de CTRL+ALT+RETOUR pour tuer X)… »
    gksudo « dontzap -d »
    echo « 75 »
    ;;
    esac

    pourquoi ne pas édité /etc/X11/xorg.conf a la place ?

    Section « ServerFlags »
    Option « DontZap » « false »
    EndSection

    1. @loke

      pourquoi ne pas édité /etc/X11/xorg.conf a la place ?

      Parce que c’est moins risqué et que ça nécessite moins de lignes dans mon script.

      une entré dans Applications → Outils système

      Le but à la base était d’avoir un script à lancer une seule fois après l’installation, mais c’est vrai que maintenant qu’il peut être exécuté plusieurs fois sans problème, pourquoi pas.

    1. @loke

      tu en pense quoi ??

      Que ça pourrait être pas mal, mais il faut gérer les dépendances, etc. Je vais aussi voir ce qu’il y a dans les collections disponibles directement depuis les dépôts.

  22. Sur le site de language tool ils disent de désinstaller la version 0.9.5 pour installer 0.9.8 http://www.languagetool.org/ Pour ma part, l’installation ne se fait pas correctement… C’est la première fois que j’entends parler de ce projet. Est-ce que c’est un bon correcteur grammatical? Pour ma part, j’utilise Antidote RX qui fonctionne très bien sous Jaunty.

    Pour ce qui en est du support en français, tu as raison par le dépôt, il désinstalle language-support-fr sur le blog de profnoel il recommande trois choses. http://blog.profnoel.com/index.php/openoffice-31-dans-jaunty-lenny-et-cie

    «* Il semble que dans l’installation via les dépôts il y ait une difficulté concernant la francisation. Soyons patient.
    * Dans l’installation via l’archive, la francisation semble correcte.
    * Si vous obtenez un plantage systémaique à l’ouverture dOpenOffice, effacez le répertoire .openoffice.org dans votre dossier perssonel.»

    Il vaut mieux attendre avant de mettre la nouvelle version d’Ooo dans ton script, d’autant plus qu’il est dans le dépôt à sa deuxième RC.

  23. si tu est tenté par de l’hébergement plutôt que des dépôt
    pour les dossiers nautilus-scripts & Modèles sa devrait donnée quelque chose comme sa si exécuté de ~/

    wget http:/www.???.com/nautilus-scripts.tar.gz
    tar -xvf nautilus-scripts.tar.gz
    mv nautilus-scripts ~/.gnome2/

    wget http:/www.???.com/Modèles.tar.gz
    tar -xvf Modèles.tar.gz

  24. Super, bravo pour cet excellent travail +++++++
    Petite suggestion :
    J’utilise « fslint » pour rechercher les doublons, serait-il possible d’intégrer son installation dans le script ?

    J’y pense, moi qui n’y connait rien en script, cela serait une bonne motivation pour s’y mettre….

    1. @Vinços
      Pas de grands changements, mais j’ai remarqué quelques problèmes avec CONCURRENCY=shell que je vais donc désactiver. J’essaierai de faire une mise à jour d’ici la fin de la semaine (il y a également un ou deux autres détails à changer).

  25. Votre programme est génial. J’aurais aimer que vous créer un tuto pour expliquer chaque fonction. Ca me serait d’une grande aide pour installer des logiciels avec ou sans dépôt.

  26. Désolé de déterrer ce post de 2009 (5ans) mais simplement M E R C I à toi Jonathan
    J’avais moi même fait un script de post install et je ne savais pas faire des trucs un peu « graphique » (j’avais fait un peu de zenity mais partant de zéro c’était un peu chaud pour moi). Je pense modifier un peu ton script pour coller à mes besoins mais il semble excellent.
    Encore une fois Bravo pour ton travail et Merci de le partager 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *