Ubuntu 12.04 – Participez à la conception du script de post-install

Date: 12/03/2012 | Catégories: Open-source,Planet-libre,Systeme | Tags: ,,,,

Dans quelques semaines, la version 12.04 (alias Precise Pangolin) de la distribution Ubuntu va sortir. C'est une version LTS ("Long Time Support") qui sera intéressante pour une utilisation aussi bien personnelle que professionnelle. L'orientation grand-public de Canonical (l'éditeur d'Ubuntu) est, je le pense, un bien pour la promotion et la diffusion des systèmes GNU/Linux.

D'un autre coté, pour nous, les geeks/hackers, il est nécessaire d'effectuer pas mal d'actions après l'installation du système ("post-installation") pour disposer d'un environnement adapté à nos besoins. Depuis la version Ubuntu 11.04, je mets à disposition sur un GitHub un script de post-installation qui va permettre d'automatiser ces actions de post-installation.

Je vous propose donc de travailler ensemble sur la conception de la prochaine version du script qui sera dédié à Ubuntu 12.04.

Structure générale du script

La prochaine version du script sera développé en langage Python (BASH pour les ancienne verison) en se basant sur un squelette commun que j'utilise pour d'autres scripts.

Ce dernier effectuera les actions suivantes:

  • ajout de certains dépôts officiels et non-officiels
  • installation d'une liste de paquets (logiciels, librairies...) non présents dans la distribution standard
  • mise à jour du système
  • configuration de l'interface graphique (Gnome Shell actuellement mais il est possible aussi d'ajouter des customs pour Unity), Conky...
  • configuration VIM (.vimrc)
  • configuration SHELL (alias, prompt...)

Liste des dépôts à ajouter

Voici la listes des dépôts que le script ajoute à votre système:

  • ppa:gstreamer-developers (le PPA officiel des développeurs de GStreamer)
  • ppa:shutter (pour avoir la dernière version de Shutter, l'outil de capture d'écran)
  • ppa:chromium-daily/dev (le daily build de Chromium, le navigateur Web libre basée sur WebKit)
  • ppa:ubuntu-wine (Wine, pour exécuter certains programme Windows sous Ubuntu)
  • ppa:tualatrix/ppa (pour une version toute fraiche d'Ubuntu Tweak)
  • ppa:gnome-terminator/ppa (le terminal ultime...)
  • ppa:nilarimogard/webupd8 (le site WebUpd8 maintient ce PPA avec pas mal de logiciels)
  • ppa:webupd8team/jupiter (si vous avez un portable, ce PPA est fortement conseillé pour augmenter l'autonomie)
  • ppa:clipgrab-team/ppa (convertisseur vidéo ClipGrab)
  • ppa:stebbins/handbrake-releases (Handbrake)
  • http://repository.spotify.com (Spotify)
  • http://archive.getdeb.net/ubuntu (GetDeb, le projet maintien à jour une liste importante de logiciels libres)

Pour Gnome 3 (Gnome Shell):

  • ppa:gnome3-team/gnome3 (le PPA officiel des développeurs de Gnome 3)
  • ppa:webupd8team/gnome3 (pas mal d'extensions en plus)
  • ppa:webupd8team/themes (des thèmes pour Gnome Shell)

Listes des paquets à installer

Les logiciels suivants sont installés.

Développement:

[cc]

build-essential

vim

subversion

git git-core

rabbitvcs-nautilus

textadept

geany

wine

ubuntu-tweak

terminator

pyjupiter

nautilus-dropbox xclip zenity dropbox-share

[/cc]

Multimédia:

[cc]

vlc

x264

ffmpeg2theora

oggvideotools

istanbul

shotwell

mplayer

hugin

nautilus-image-converter

pavucontrol

gimp

gimp-save-for-web

ogmrip

transmageddon

guvcview

wavpack

mppenc

faac

flac

vorbis-tools

faad

lame

nautilus-script-audio-convert

cheese

sound-juicer

picard

arista

nautilus-arista

milkytracker

mypaint

libdvdread4

clipgrab

handbrake-gtk handbrake-cli

spotify-client-qt

shutter

[/cc]

Réseau:

[cc]

iperf

ifstat

wireshark

tshark

arp-scan

htop

netspeed

nmap

netpipe-tcp

[/cc]

Système: 

[cc]

preload

gparted

lm-sensors

compizconfig-settings-manager

hardinfo

fortune-mod

libnotify-bin

compiz-fusion-plugins-extra

ubuntu-restricted-extras

[/cc]

Web:

[cc]

chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg-extra chromium-codecs-ffmpeg-nonfree

pidgin

pidgin-facebookchat

pidgin-plugin-pack

flashplugin-downloader

xchat

googleearth-package lsb-core ttf-mscorefonts-installer

[/cc]

Gnome 3:

[cc]

gnome-shell gnome-tweak-tool gnome-documents

conky-all ttf-ubuntu-font-family

[/cc]

Comment participer à la conception ?

Tout simplement en laissant un commentaire en bas de ce billet. Les actions à mener sont:

  • ajouter des dépôt manquants (attention, il ne faut proposer que des dépôts stables et pérennes)
  • ajout d'applications/librairies obligatoires (au sens geek du terme :))
  • autres actions à mener en post-install (merci de détailler)

Update:

Le script est disponible en version alpha (bien sur il ne faut pas le lancer sur votre machine mais seulement dans des VMs !):

Il est donc possible de le forker et de participer plus pratiquement à son évolution (par exemple en suivant ce billet).

J'attends vos idées !

  • Pour ma part, trois choses indispensables pour le terminal:
    – activer la coloration du prompt (dans le bashrc, cfr ton joli post…)
    – ignorer la case pour l’autocomplétion:
    ajouter
    set completion-ignore-case on
    dans /etc/inputrc
    – recherche et autocomplétion dans l’historique des commandes avec pageUp et pageDown (ou autre chose)
    décommenter les lignes
    « \e[5~ »: history-search-backward
    « \e[6~ »: history-search-forward
    dans /etc/inputrc

    • Après, ça doit tout de même être assez personalisé comme truc, mais pour l’utilisation complète de latex, j’utilise les pacquets suivants:
      texlive texlive-base texlive-latex-extra texlive-extra-utils texlive-lang-french texlive-fonts-extraw

      Un petit outils graphique (parmis tant d’autre) pour visualiser rapidement l’historique d’un repo git:
      giggle

      Système:
      sshfs

    • Hum, plus propre pour les 2 commande de inputrc: personnaliser à l’utilisateur.
      echo « set completion-ignore-case on » > $HOME/.inputrc
      echo « \ »\e[5~\ »: history-search-backward » >> $HOME/.inputrc
      echo « \ »\e[6~\ »: history-search-forward » >> $HOME/.inputrc

  • Gepeto

    Là, comme ça, en plus de ce que tu installes dans tes scripts (merci beaucoup au passage) j’automatise ceux d’OpenSSH, OpenVPN et sshfs pour le système. Mais c’est vrai que ce n’est pas vraiment générique (sauf pour les geeks :-).
    Ah oui ! Il y a aussi « Caffeine », un soft sympa pour désactiver l’écran de veille pendant les films.

    • Gepeto

      Bon, c’est pas grand’chose, mais après vérification, j’installe aussi ‘most’ et ‘tree’.
      Sinon, à la suite de tes scripts, je désinstalle tous ce qui est en rapport avec gstreamer-0.11 à cause de conflits pour accéder à une librairie commune à la version 0.10. Je ne sais pas si c’est un problème connu mais c’est ce que j’ai trouvé de plus rapide à faire pour le résoudre.

  • Voici ma liste.

    ppa:myunity/ppa: myunity
    ppa:tualatrix/ppa: ubuntu-tweak
    ppa:webupd8team/y-ppa-manager: y-ppa-manager
    ppa:shutter/ppa: shutter
    ppa:nilarimogard/webupd8: indicator-shutter
    ppa:atareao/atareao: my-weather-indicator calendar-indicator
    ppa:marlin-devs/marlin-daily: marlin
    ppa:scopes-packagers/ppa: unity-scope-cities
    ppa:dr3mro/nautilus-actions-extra: nautilus-actions-extra
    ppa:skype-wrapper/ppa: skype-wrapper
    ppa:rye/ubuntuone-extras: ubuntuone-indicator
    ppa:tsbarnes/indicator-keylock: indicator-keylock indicator-keylock-ubuntu-mono indicator-keylock-humanity indicator-keylock-elementary
    ppa:artfwo/ppa: indicator-cpufreq
    ppa:bikooo/glippy: glippy glippy-ubuntu-mono
    ppa:lookit/ppa: lookit
    ppa:shnatsel/flashfreeze: flashfreeze
    ppa:indicator-multiload/stable-daily: indicator-multiload
    ppa:libreoffice/ppa: libreoffice
    ppa:kokoto-java/omgubuntu-stuff: mounty

  • ss814

    Pourquoi ne pas proposer un choix entre Vim et Emacs (les deux etant tres utilises), en ajoutant a Emacs des addons utiles (Autocompletion et cie).
    Aussi, si j’ ai bien suivi, les logiciels sont tous installes, ne serait il pas interessant de choisir -via une liste au lancement du script- les logiciels que l’on souhaite avoir ? Ceci eviterait l’ajout automatique de softs non indispensables comme spotify et google earth.

    Cordialement,

    ss814

    • Je préfère garder comme philo une installation automatique sans intervention de l’utilisateur.
      Pour customiser plus finement les applications installés, il suffira d’ajouter une ligne spécifique dans le script.

  • ctl

    Salut,
    Eh oui comment vas-tu faire pour qu’on puisse déselectionner ce qui ne nous intéresse pas ?

    D’autres suggestions :

    ppa:flozz/flozz # pour nautilus-terminal
    ppa:pmjdebruijn/darktable-release # logiciel de traitement de photos (images RAW par lot)

    tree
    elinks # navigateur texte, très utile pour des alias sur wordreference par exple
    most # pas less, pas more, most -> man pages en couleur
    qiv # quick image viewer

  • mutt rkhunter nmap chkrootkit munin-node cron-apt fail2ban byoby elinks secure-delete htop bwm-ng iptraf iptstate vnstat vnstati

    Après ce que je fais, c’est que je mets une adresse email à chaque machine/VM que j’installe (http://www.systemf4ilure.fr/2012/02/exim4-et-gmail.html)

  • Salut,

    Je viens justement de publier sur GitHub les sources d’un script de post install que l’on utilise depuis un moment dans une association d’étudiants (Louvain-li-Nux) sur le campus de Louvain-la-Neuve (Belgique).
    https://github.com/matttbe/LLNux-PostInst

    Nous installons Ubuntu chaque semaine et ce script nous sert à installer des paquets et personnaliser différents points (gestion de l’énergie, options par défaut, etc.) pour différents types utilisateurs, principalement des étudiants mais pas nécessairement des utilisateurs avancés (il y a donc des choix à faire mais pour un utilisateur classique, on conseille d’utiliser les options par défaut).
    Il y a une option pour installer des paquets concernant le développement mais en ce qui concerne des outils avancés (mutt, nmap, terminator, etc.) on estime que l’utilisateur saura installer ce qu’il désire…
    Par défaut, on installe 3 types de session en plus d’Unity: Cairo-Dock (avec le thème Oneiric Panel), Gnome-Shell et Gnome-Classic.

    À noter que l’on dispose d’un miroir local des dépôts Ubuntu en 32 bits (et certains ppa) qui est utilisé par le script via une option activée par défaut mais le script peut être utilisé sans. Aussi, le code n’est pas génial mais répond à nos besoins. Cependant, on est ouvert à toutes améliorations et partages 😉

  • Bristow

    Est-ce que ce script est pensé pour être personnalisable (genre cocher des cases ou mettre des # en bout de lignes) ? En effet, cela m’intéresserait mais pour l’utiliser sur des PC familiaux, donc, les outils réseaux, on peut dire que je n’en ai pas forcément envie 😉

    Ce que propose matttbe a l’air intéressant. Une réunification des 2 semblerait intéressante 🙂

  • tshirtman
  • bardiel

    Je ne vois pas trop l’intérêt d’avoir un script en python, obligeant de l’avoir installé sur son système.

    Alors qu’en bash, c’est relativement simple de faire un menu dans la console (donc zéro utilisation d’un module graphique)

    http://forum.hardware.fr/hfr/OSAlternatifs/Codes-scripts/creer-petit-script-sujet_32544_1.htm

    Pour la partie réseau (et accessoirement web, si on utilise de la 3G) il manquerait vnStat pour l’affichage de sa « consommation » réseau.

    • Python est installé en standard sur les distribution Ubuntu.

      L’utilisation de Python permettra de faire évoluer plus simplement le script tout simplement car je connais plus ce langage que le BASH…

    • JaShuGan

      Salut à tous,

      Merci encore Nico pour le moyen d’échange qu’offre ton blog.
      Je ne veux pas faire le rabat joie mais je suis aussi de l’avis de bardiel.
      Comme toi je me suis amusé à créer des scripts python afin de me familiariser avec ce superbe langage mais en y réfléchissant ca n’avait pas beaucoup d’intérêt car je faisais souvent des appels aux commandes systèmes.
      L’utilisation de Python revêt un intérêt lorsque l’on utilise des api ou des fonctions plus avancées (difficilement réalisables en bash).

      Peut-être me trompe-je :)… Cela dépend effectivement de l’évolution envisagée

      • Le script sera un peu plus complexe qu’une simple succession d’appels systèmes (bien que la finalité soit là). Il y aura par exemple le « parsage » du fichier de configuration qui, bien que faisable en BASH, est très simple à faire en Python.

        Je souhaiterai également dans une prochaine version intégrer une librairie permettant de récupérer des informations sur les PPA que l’on va installer. Une librairie Python existe.

        Enfin et c’est pour moi le plus important. Le fait de développer ce script en Python me fera gagner du temps car je suis bcp plus à l’aise avec ce langage qu’avec un shell aussi puissant soit il que BASH…

  • Graton974

    Bonjour,
    d’abord merci pour tous les infos partagés sur ton blog.
    Ensuite, je viens de tester ton script (attention je débute dans le monde Linux)
    Y a juste un truc que je ne vois pas :
    La log ne semble pas s’alimenter au fur et a mesure de l’installation , et donc à par les messages « Running » « Ok » « warning », je ne vois pas se qui semble bloquer lors que le script reste trop longtemps en « Running » sur une étape. On ne voit pas par exemple ou en est (la commande « apt-get install ubuntu-restricted-extras » qui est restée bloqué pour moi.

    • Graton974

      Je suis parti trop vite.
      Je me répond en partie : pour la log j’avais pas vu la variable _DEBUG=0 => _DEBUG=1
      Par contre cela ne me donne pas le detail de la commande en cours
      Par exemple lorsque je fais un apt-get update et que certains serveurs ne sont pas disponibles (not found) comment le voir. Ou bien lors d’apt-get upgrade /install comment savoir s’il l’on est en téléchargement du paquet ou à l’installation.
      Merci

  • Je viens de mettre en ligne la page officielle du script à l’adresse suivante:

    http://nicolargo.github.com/ubuntupostinstall/

    Je suis preneur de vos retours 🙂

    • ss814

      Whaoo, un travail de pro ! Merci pour le partage, ca m’évitera de tout faire à la main à l’avenir !
      Je ferais tourner le lien vers cette page !

  • Atunoa

    J’ai testé tes scripts (gnome et unity) pour Pangolin et j’ai fait des découvertes de programmes que je ne connaissais pas. Merci pour ton initiative. Je te rapporte un petit problème : à l’exécution d’un .deb avec gdebi ou sous synaptic, j’ai un message d’erreur, sans conséquence, à la fin, qui me dit qu’il y a eu un problème avec textadept. A tu une idée d’où ça vient?

  • Patrice

    Bonjour Nico,

    Ton thème visible dans ton dernier billet est sympa (proche de android). S’agit il de ton portable sous Ubuntu ? Si oui, le script de ce billet le met il en place ?

  • Bigz

    J’ai testé ton script de postinstall et je le trouve super intéressant et bien évolutif en fonction de mes besoins.
    Par contre je me posais une question en ce qui concerne les commandes gsettings et gconftools que tu exécutes dans le script dans la partie gnome3. En effet, je veux changer le icon-theme, le gtk-theme ainsi que cursor-theme comme toi. Mais comme le script est exécuté en root (via le sudo) j’ai l’impression que ces commandes (gsettings set org.gnome.desktop.interface…) ne sont pas prises en compte dans l’environnement de l’utilisateur qui exécute le script.
    j’ai donc dû modifier le script avec des commandes de postaction dans l’esprit suivant : su -c \ »gsettings set org.gnome.desktop.interface icon-theme Faenza\ » mathieu
    est ce que tu avais identifié le problème à ce sujet ?
    merci

  • D’abord merci pour tous les infos partagés sur ton blog. Ensuite, je viens de tester ton script (attention je débute dans le monde Linux) Y a juste un truc que je ne vois pas : La log ne semble pas s’alimenter au fur et a mesure de l’installation , et donc à par les messages « Running » « Ok » « warning », je ne vois pas se qui semble bloquer lors que le script reste trop longtemps en « Running » sur une étape.

  • vincent

    Bonjour,
    Ne peux tu pas nous donner la possibilité d’uploader nos scripts de configuration en précisant la config graphique qu’on utilise (cinnamon, unity ou gnome) et ce pourquoi on l’utilise (dev, multimédia, …) + compteur de téléchargement. Ca donnera la possibilité aux autres qui sont moins inspirés (comme moi) de faire une post install sympa.

  • fredoud

    Novice demande confirmation : J’ai télécharge le script pour Quantal (http://blog.nicolargo.com/2012/12/ubuntu-12-10-quantal-script-de-post-install.html) et je ne vois pas la possibilité de désinstaller des logiciels ou autres du genre unity-lens-shopping, brasero, etc.
    Dans la partie « The packages section » j’ai rajoute des programmes au scripts initial genre K3B, etc. mais l’exécution du script fonctionne pas correctement, tous les programmes de The packages section ne sont pas installé. Merci pour vos conseils. Fred