De EDOS a Mancoosi Les defis des distributions de logiciels libres Professeur d Informatique Université Paris Diderot
Introduction Le Logiciel Libre n est pas un logiciel comme les autres, il pose des problèmes nouveaux: pas d architecte unique, dévéloppement rapide et distribué, interdependences fortes, grandes masses de code librement accessibles... Focus sur les distributions GNU/Linux: origine, rôle, problématiques Les résultats d EDOS Les enjeux de Mancoosi
Avant l arrivée des distributions, le seul moyen d installer des logiciel libres sur les postes clients était: Mais: pas de version standard du poste client besoin de recompiler,... et reconfigurer assez souvent trop long, trop compliqué, trop fragile!
Cela a fait naître les distributions comme intermédiaires entre les projets et les utilisateurs
Un certain succès...
Le role d un éditeur de distribution: upstream tracking : suivre l évolution des sources en général, developer =/= packager! integration : offrir une collection coherente de paquets Pour cela, on doit traiter correctement des dependances testing : à tous les niveaux distribution : diffusion rapide sans casser l éxistant Ce n est pas facile! Les cycles de 6 et 12 mois qu on voit nécéssitent des dizaines d années-homme. Parmi les notions centrales: paquet, avec des outils d administration...
Paquets, métadonnéees, et installation { des fichiers Paquet = quelques scripts des metadonnées: Identification Inter-package relationships Dependencies Conflicts. Feature declarations Other Package maintainer Original author Textual descriptions... Example Package: aterm Version: 0.4.2-11 Section: x11 Installed-Size: 280 Maintainer: Göran Weinholt... Architecture: i386 Depends: libc6 (>= 2.3.2.ds1-4), libice6 xlibs (>> 4.1.0),... Conflicts: suidmanager (<< 0.50) Provides: x-terminal-emulator Filename: pool/main/a/aterm/......
Les paquets, suite Remarques: le composant élémentaire des distributions modernes un système est construit avec l installation d un ensemble de paquets (plusieurs centaines, voir des milliers) Quelques problèmatiques: cohérence des composants (distribution) SE, solveurs... évolution graduelle des installations algo, contraintes,... séléctionner le système voulu dans l espace des possibles SE visualiser l état du système IHM,... maîtriser l évolution du système: installer/désinstaller les composantes, solveurs,... gêrer les interdépendences solveurs, langages repliquer, reproduire un état du système SE, sémantique,..... Chaque ligne est une porte ouverte sur un domaine de recherche!
Exemple d installation Phase Trace Commande utilisateur apt-get install aterm 8Reading package lists... Done Building dependency tree... Done The following extra packages will be installed: libafterimage0 >< The following NEW packages will be installed Resolution contraintes aterm libafterimage0 0 upgraded, 2 newly installed, 0 to remove and 1786 not upgraded. Need to get 386kB of archives. >: After unpacking 807kB of additional disk space will be used. ( Do you want to continue [Y/n]? Y Get: 1 http://debian.ens-cachan.fr testing/main libafterimage0 2.2.8-2 [301kB] Recuperation archives Get: 2 http://debian.ens-cachan.fr testing/main aterm 1.0.1-4 [84.4kB] Fetched 386kB in 0s (410kB/s) Pré-configuration { 8 Selecting previously deselected package libafterimage0. >< (Reading database... 294774 files and directories currently installed.) Depaquetage Unpacking libafterimage0 (from.../libafterimage0_2.2.8-2_i386.deb)... >: Selecting previously deselected package aterm. Unpacking aterm (from.../aterm_1.0.1-4_i386.deb)... j Setting up libafterimage0 (2.2.8-2)... Setting up aterm (1.0.1-4)... Chacune de ces phases peut échouer... (cela arrive souvent) Configuration il faut identifier et prévenir les erreurs le plus tôt possible
Quelques repères Dans les distributions actuelles: savoir si le processus d installation termine sans erreur est un problème indécidable 1 il arrive souvent de recevoir des CD/DVD contenant des paquets qui ne sont pas installables un grand nombre d erreurs rencontrées par les utilisateurs sont dans la résolution de dependances plus de 19.000 paquets (et 10.000 sources) dans Debian; plus de 200.000 relations de dependances 1 Ex: les scripts pre/post-install
Les interdépendances sont complexes... Package: gnubg Version: 0.14.3+20060923-4 Depends: gnubg-data, ttf-bitstream-vera, libartsc0 (>= 1.5.0-1),..., libgl1-mesa-glx libgl1,... Conflicts:... Et cela change tous les jours! Comment s y retrouver? Les projets EDOS et MANCOOSI s attaquent aux erreurs de la phase de resolution des dependences, en utilisant des méthodes formelles.
Projet: Strep FP6 (de 2005 à 2007) Focus du WP2: cohérence globale d une distribution F/OSS (point de vue de l éditeur): Identifier tous les paquets d une distribution qui ne sont pas (individuellement) installables, et en expliquer la raison. 2 Résultats: formalisation des dépendences des paquets, et outils pour les éditeurs de distributions (aucun outils pre-existant était satisfaisant) Théorème: le problème de l installabilité d un paquet (restreint aux dependences) est NP-complet. 2 Par rapport aux dependences.
Installation et SAT solving Installer libc6 dans: Package: libc6 Version: 2.2.5-11.8 Package: libc6 Version: 2.3.5-3 Package: libc6 Version: 2.3.2.ds1-22 Depends: libdb1-compat Package: libdb1-compat Version: 2.1.3-8 Depends: libc6 (>= 2.3.5-1) Package: libdb1-compat Version: 2.1.3-7 Depends: libc6 (>= 2.2.5-13) peut devenir I 2.3.2.ds1 22 libc6 (I 2.3.2.ds1 22 libc6 I 2.2.5 11.8 libc6 ) (I 2.3.2.ds1 22 libc6 I 2.3.5 3 libc6 ) (I 2.3.5 3 libc6 I 2.2.5 11.8 libc6 ) (I 2.1.3 7 libdb1-compat I 2.1.3 8 libdb1-compat ) I 2.3.2.ds1 22 libc6 (I 2.1.3 7 libdb1-compat I 2.1.3 8 libdb1-compat ) I 2.1.3 7 libdb1-compat (I 2.3.2.ds1 22 I 2.3.5 3 libc6 ) libc6 I 2.1.3 8 libdb1-compat I 2.3.5 3 libc6 Attention Tout n est pas si simple: pre-depends, optimisations, explication des échecs, etc.
Timeline 2005-08 premières version de ceve et EDOSlib dans subversion 2005-09 WP2D1: analyse des systèmes de paquets, reduction aux contraintes booleennes, NP-completude 2005-11 première version de edos-debcheck, avec un SAT-solver intégré, dans subversion 2006-02 EDOS suit Debian via anla, avec rapports journaliers 2006-03 WP2D2: codages booléen et Constraint Programming, comparaison des package managers 2006-09 Première version de tart, un allocateur optimisant qui repartit une distribution sur plusieurs media, dans subversion. 2006-12 EDOS WP2 presente les outils à Debian QA in Extremadura; edos.debian.net est né. 2007-06 Fin d EDOS; environ 100.000 lignes d OCaml. Team: Jaap Boender, Berke Durak, Xavier Leroy, Fabio Mancinelli, Ralf Treinen, Jerôme Vouillon
Les outils EDOS Et aussi tart, anla, etc. fournissent un socle solide pour le travail invisible mais indispensable des éditeurs de distribution. Tout est sous licence libre. Mais... cela ne resout pas le problème de l utilisateur final!
Un example de problème d upgrade sudo apt-get install debhelper Reading Package Lists... Done Building Dependency Tree... Done The following extra packages will be installed: armagetron armagetron-common autoconf bonobo-activation codebreaker debconf debconf-i18n debconf-utils dialog esound-common fb-music-high fontconfig frozen-bubble-data grepmail gv intltool-debian libaiksaurus-data libaiksaurus0c102 libatk1.0-0 libatk1.0-dev libbonobo-activation4 libbonobo2-0 libbonobo2-common libdb3 libdbd-mysql-perl libdbi-perl libeel2-data libesd0... The following packages will be REMOVED: autoconf2.13 frozen-bubble frozen-bubble-lib gconf2 gnomemeeting itk3.1-dev libbonoboui2-0 libbonoboui2-common libdigest-md5-perl libforms0.89 libgconf2-4 libgnome2-0 libgnome2-common libgnomeui-0 libgnomevfs2-0 libgnomevfs2-common libgtk1.2-dev libgtk2.0-0png3 libgtk2.0-dev libmime-base64-perl libpango1.0-dev libsdl-mixer1.2-dev libsdl-perl libsdl-ttf1.2-dev libsdl1.2-dev libsmpeg-dev libstorable-perl nautilus tk8.3-dev tktable-dev x-window-system x-window-system-core xaw3dg-dev xlib6g xlib6g-dev xlibmesa-dev xlibmesa3 xlibosmesa3 xlibs-dev xlibs-pic xpdf xpdf-reader The following NEW packages will be installed: armagetron-common debconf-i18n fb-music-high fontconfig intltool-debian libaiksaurus-data libaiksaurus0c102 libeel2-data libfilehandle-unget-perl libfontconfig1 libforms1 libgdbm3 libgnutls7 libgsf-1 libice-dev libice6 libidl0 liblzo1 libmagick5.5.7 libmail-mbox-messageparser-perl libmysqlclient12 libncursesw5 libnet-daemon-perl libnewt0.51 libpaper1 libplrpc-perl libsdl-console... 75 packages upgraded, 80 newly installed, 42 to remove and 858 not upgraded. Need to get 67.1MB of archives. After unpacking 26.9MB will be used. Do you want to continue? [Y/n] Abort.
MANaging the COmplexity of the Open Source Infrastracture Projet: Strep FP7 (de 2008 à 2011) Focus: cohérence et maintenance d une installation F/OSS (point de vue de l utilisateur): Outils pour la gestion des paquets installés installation desinstallation upgrade downgrade
Project overview Transactional updates WP2 formaliser les effets de l installation/desinstallation d un paquet sur le système WP3 construire des outils qui permettent à ce processus de devenir transactionnel
Project overview Upgradeability WP4 conception d algorithmes optimisés pour les mises à jour. WP5 construction d une base de problèmes, pour fédérer les chercheurs dans une compétition internationale.
Project Partners
L e quipe
Offspring/related works Les idées crées dans EDOS, et à l origine de Mancoosi sont désormais largement reconnues: Opium : gestionnaire utilisant un SAT solver pour Linspire Zypp : idem pour OpenSuse Eclipse : idem pour les plugins Eclipse
Conclusions Une nouvelle phase de collaboration entre recherche, Logiciel Libre et industrie: grande complexité du système F/OSS limite des outils ad-hoc préfigure les systèmes complexes de demain rendez-vous dans 3 ans pour les résultats. Plus d info: http://www.mancoosi.org