À 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.

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) :
- enregistrer postinstall.sh
- clic droit -> propriétés -> permissions -> « autoriser l’exécution du fichier comme un programme »
- 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).
Merci! J’avais commencé le même type de script, mais sans jamais le terminer.
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 😉
@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).
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 »
@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.
J’aimebien, c’est beau, propre, bref du beau travail, félicitations
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é?
@Beware
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).
@jernst
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 🙂 )
Bonjour,
le script est sympathique, mais il n’est fait nulle part mention de la licence de ce script. Tous droits réservés ? GNU/GPL ? BSD ? Autre ?
@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+
Je viens de voir la nouvelle version du script…
C’est super 😀
Merci pour ce script qui est vraiment très pratique.
Il correspond à peut prêt a ce que j’installe à chaque fois :p
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 😀
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 ???
@loke
En principe aptitude (à l’inverse de apt-get) ne fait pas d’erreur lorsqu’un paquet n’existe pas et installe quand même les autres.
merci
au faite « apt-key add – » n’est pas de la famille des apt-get ?
@loke : oui et non. apt-get fait partie de l’outil APT de gestion de paquet debian comme l’est apt-key.
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 😉
@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 :
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.
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 😉
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
@TheHappFerret et @loke
Merci, j’ai intégré la suppression du bip système dans la nouvelle version du script.
magnifique !
deux remarques…
1. ligne 89, serait-il approprié de remplacer
deb http://archive.canonical.com/ubuntu jaunty partner # partner
par
deb http://archive.canonical.com/ubuntu `lsb_release -c | awk ‘{print$2}’` partner # partner
comme juste au-dessus ?
2. ligne 226, il manque un « t » à « nettoyage » :o)
@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 »
il faudrait aussi exécuté
modprobe -r pcspkr
pour décharger le module et pas besoin de redémarrer la machine
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! 🙁
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
@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.
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 ?)
@Jcderchain
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.
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
@Beware
Merci pour ton commentaire, néanmoins pour medibuntu, cela existait déjà dans la première version du script.
J’ai corrigé cela dans la version postée ce matin, n’hésite pas à me dire si cela ne fonctionne toujours pas.
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 ! )
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 »
Salut
juste pour savoir se que tu pense de mes suggestion.
Bonne journée.
@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.
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
@TheHappyFerret
Salut,
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.
à+
@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é.
Salut
rien a redire sur la nouvelle version les com sont très claire.
Une modif sympa qui pourrai êtres ajouté c’est le téléchargement est la décompression d’archive contenant:
~/Modèles
~/.gnome2/nautilus-scripts
une modif du scripte pour crée une entré Desktop dans le menu pourrai êtres sympa (a voir comme exemple http://forum.ubuntu-fr.org/viewtopic.php?id=259077&p=1)
@loke
Merci !
Une suggesion de paquet ?
Tu peux préciser exactement ? Il y a déjà une entrée Bureau dans Raccourcis. Parles-tu de « Desktop effects » ?
À bientôt
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
@Beware
Salut,
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.
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.
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.
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 !
non non 😉
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 ;-).
Je pense que cela ne change rien, non ?
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 !
@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…
@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)
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
@loke
Parce que c’est moins risqué et que ça nécessite moins de lignes dans mon script.
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.
@jernst
~/Modèles
~/.gnome2/nautilus-scripts
Une suggesion de paquet ?
@loke
—> http://rapidshare.com/files/230974776/nautilus-scripts.tar.html
les miens si tu en a de plus adapté je suis preneur
tu en pense quoi ??
@loke
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.
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.
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
cet autre article m’a aussi été très utile : http://enli.co.cc/ubuntu/how-to-get-rid-of-annoyances-of-ubuntu-9-04-jaunty-jackalope/
je recommande en particulier les manipulations décrites sous les points 1, 4 et 6
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….
Merci pour ce script bien pratique !!
Y’a-t-il des grands changements pour Karmic Koala ?
Penses-tu faire une mise à jour ?
Merci
@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).
Fais gaffe, on va commencer à moins t’appeler avec ce genre de programmes… 😉
A quand la mise a jour Lucid Lynx ?
Un autre script de post-installation pour Ubuntu en ligne de commande: infondlinux https://code.google.com/p/infondlinux/ . Comme il est opensource, il peut servir de base pour personnaliser sa propre installation.
Il ajoute automatiquement des programmes (en l’occurence de sécurité et d’audit) au menu GNOME.
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.
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 🙂