J'ai créé ce sujet, il y a peu sur le forum d'un club de réseau (les Tontons Fraggeurs) dont certains membres étaient intéressé par GNU/Linux et en particuliers Ubuntu, distribution que j'utilise également.
Il s'adresse à des débutants Linux venant de Windows et visent à expliquer sommairement les systèmes de paquets et leurs intérêts.
Les parallèles avec le système de Microsoft ne sont pas là dans le but de troller, mais d';expliquer les différences de philosophies dans la gestion des logiciels.
- Introduction:
Un petit post (gros finalement) pour expliquer une des GROSSEs différences de la majorité des distributions linux par rapport à un système Windows: les systèmes de packages (ou paquet en français).Il en existe un certain nombre mais il y en a 2 très courants:- Aptitude: vient de Debian et est utilisé par toutes les distributions qui en découlent comme Ubuntu (Synaptique est une interface graphique du système aptitude). Les paquets sont des fichiers .deb (comme Debian
) - RPM: Redhat Package Manager (fichier .rpm) utilisé par les ditributions Red Hat, Fedora Core, Mandriva, SuSE... via différentes interfaces graphiques ou non (rpm, urpmi, yum ...)
- D'autres distributions peuvent avoir d'autres systèmes de packages mais fonctionnent globalement sur le même principe comme Gentoo et son système Portage.
- Aptitude: vient de Debian et est utilisé par toutes les distributions qui en découlent comme Ubuntu (Synaptique est une interface graphique du système aptitude). Les paquets sont des fichiers .deb (comme Debian
- Un système de "packages" c'est quoi?
C'est le système qui gère les logiciels et leurs dépendances. C'est-à-dire qui va gérer proprement les installations, mises à jour et désinstallations.Par exemple, pour installer Firefox en passant par Synaptic sur Ubuntu, permet d'installer la dernière version compatible et les dépendances (par exemple les librairies de gestions des jpg ou du gif...) dans leurs bonnes versions. Alors que l'installation à la main à partir des fichiers .tar.gz ou .tar.bz2 risque de demander pas mal d'efforts avant d'arriver à un Firefox fonctionnel (et aboutir à un système bien bordelique) - Les avantages des systèmes de paquets:
- installations/désinstallations de n'importe quel logiciel de façon propre et standardisée pour une distribution (executables, raccourcis et fichiers de configuration aux bons endroits)
- gestions avancées des dépendances, ce qui évite les mauvaises surprises
- mises à jour facilitées de l'ensemble du système: là où WindowsUpdate ne s'occupe QUE de Windows/IE/Outlook Express, un système de packages va mettre à jour tous les logiciels installés du noyau GNU/Linux, au lecteur multimedia en passant par la suite bureautique et les outils systèmes. Un contrôle sur les mises à jour est cepedant possible pour éviter l'installation
de n'importe quelle mise à jour.
- Les inconvénients:
- connection internet haut débit quasi obligatoire
- parfois des décalages temporels entre la sortie d'une nouvelle version d'un logiciel et sa disponibilité pour un système de paquet donné (varie de quelques heures à quelques semaines suivant la popularité et/ou l'importance de la mise à jour)
Exemple: Firefox 1.0.7, il a fallu attendre 1~2 jours entre sa sortie et sa disponibilité sur les dépôt officiels d'Ubuntu 5.04 (moins d'une demi-journée sur 5.10) car il a été testé et compilé pour s'ajuster eu mieux avec le reste de la distribution.
- Le bon réflexe:
On y arrive donc:Sous Windows, le réflexe pour installer un logiciel est soit de l'acheter ou de télécharger sur internet un installeur à executer. Cet installeur décompresse puis copie des fichiers dans un ou plusieurs répertoires cibles et modifie souvent la base de registre, sans se soucier de la présence ou non d'autres programmes.
Sous Linux, le bon réflexe pour installer un logiciel est de passer systématiquement par le gestionnaire de paquet et de faire une recherche dans la base de logiciel.
En effet, le principal mauvais réflexe qui perd les débutant sous Linux, est de chercher à télécharger le logiciel sur le site du projet. En général, on y trouve les sources (fichier .tar.gz ou .tar.bz2) qui nécessitent plusieurs manipulations en ligne de commande ( ./configure, make, make install) et souvent donnent des erreurs de dépendance qui entraînent dans un cercle vicieux de téléchargement/compilation/problème de dépendance fastidieux et qui abouti à un système bordelique au possible.
Sous GNU/Linux, les dépendances peuvent être nombreuses en raison de la grande modularité: dépendances à une bibliothèque graphique comme GTK sous Gnome ou Qt pour KDE, la gestion des types de fichiers (codec jpeg, tiff, png, video, compression, encodage ...) ou des emprunts à d'autre programmes pour certaines fonctions.Exemple de dépendance de firefox (non-exhaustif):- libgtk2.0-0 : pour l'interface graphique (boutons, menus...)
- libjpeg62 : pour le rendu des image jpg
- libpng12-0 : pour le rendu des image png
- ...
Exemple de dépendance sous Windows: DirectX 9.0 pour Battelfied 2, codec DivX pour MediaPlayer Classic ...
NOTA: les drivers 3D nVidia et ATI bien que propriétaires sont souvent disponibles sur des dépôts alternatifs.
- Comment ça fonctionne:
Dans le cas d'une installation:En fait, c'est assez simple à partir du moment où on sait se que l'on veut installer (fonctions de recherche du gestionnaire de paquets, forums, google...).- Téléchargement d'une liste de logiciels disponibles
- Construction d'un arbre des dépendances
- Recherche dans la liste du logiciel demandé
- Proposition de logiciels conseillés qui peuevnt apporter un plus, au logiciel demandés (dépendances optionnelles, logiciel complémentaire mais non-dépendant...)
- Recherche des dépendances installées sur le système, si elle sont suffisantes, le gestionnaire télécharge et installe le(s) logiciel(s) demandé(s) => fin
- Propose l'installation des dépendances nécessaires au bon fonctionnement du logiciel demandé => si validation par l'utilisateur, téléchargement et installation puis fin.
Dans le cas d'une mise à jour, le procédé est presque le même:
- Téléchargement d'une liste de logiciel disponible
- Construction d'un arbre des dépendances
- Recherche des différences de version
- Propose la mise à jour de tous les paquets ayant une version supérieure disponible et de leurs éventuelles dépendances.
- Proposition de logiciels conseillés qui peuvent apporter un plus, au logiciel demandés (dépendances optionnelles, logiciel complémentaire mais non-dépendant...)
- Si validation par l'utilisateur => téléchargement et application des modifications
- Le gestionnaire demande souvent quoi faire dans le cas des fichiers de configuration lors qu'ils ont été modifiés depuis l'installation.
Les serveurs mettant à disposition ces listes et les logiciels sont appelés "dépôts" ou "repositories". Ils ont pour la plupart des utilités différents: dépôts de mise à jour officiel, dépôts officieux, dépôts de mise à jour de sécurité, dépôts de "backport" (port de logiciels récents sur des version précédentes des distributions)....
Pour informations, les serveurs Ubuntu que j'utlise proposent 17689 paquets. Il y a de quoi faire.
- Les exceptions:
Il y a quand même quelques exceptions.- Ce sont essentiellement des logiciels propriétaires comme les jeux 3D. Par exemple, UT2004 ou Neverwinter Night qui utilisent leurs propres installeur. Cependant, ils ne mettent pas spécialement le foutoir: un répertoire avec les données et executables + un fichier ou un répertoire caché dans le répertoire utilisateur pour la configuration personnelle et les sauvegardes.
Plus généralement, les logiciels dont la licence d'utilisation ne permet pas de les diffuser par le système de dépôts. - Les logiciels expérimentaux/en cours de développement dont l'avancement ne permet pas une stabilité suffisante pour les proposer dans les listes de logiciels. Ces logiciels sont, de toutes façons, réservés aux utilisateurs confirmés et aux développeurs capables de jongler avec les bugs.
- Certains logiciels que les mainteneurs des dépôts n'ont pas jugés utiles de mettre à disposition. Ils sont très rares et soit disposent d'alternatives de meilleure qualité, soit sont très spécifiques à un usage ou encore ne sont plus maintenus à jour par leurs développeurs et le projet est considéré comme abandonné et/ou obsolète.
- Ce sont essentiellement des logiciels propriétaires comme les jeux 3D. Par exemple, UT2004 ou Neverwinter Night qui utilisent leurs propres installeur. Cependant, ils ne mettent pas spécialement le foutoir: un répertoire avec les données et executables + un fichier ou un répertoire caché dans le répertoire utilisateur pour la configuration personnelle et les sauvegardes.
- Ajouts:
- Mise à jour de tout le système:
Avec le système Aptitude de Debian, il est possible de mettre à jour entièrement le système avec très peu de manipulations. Par exemple, passer de Ubuntu "Hoary Hedgedog" 5.04 à Ubuntu "Breezy Badger" 5.10 en moins de 5 minutes de configuration. Ensuite le plus long consiste à attendre le téléchargement des paquets et leurs installation. Un reboot est voilà un système complètement à jour sans perte des anciennes configurations, sans avoir besoin de réinstaller les logiciels rajoutés après la première installation. - Il est possible d'installer des logiciels en respectant le système de packages sans passer par Synaptic, à partir du moment où on dispose d'un fichier .deb. En fait, il faut utilisés la commande
à l'origine du système: dpkgdpkg --install nom fichier.debPour plus d'info: man est aussi ton ami:
man dpkg"man" permet d'avoir le manuel de la fonction. la commande man marche pour 95% des logiciels.
- Convertir des fichiers d'installation pour tel ou tel système de package ou de sources compressées (.tar.gz ou .tar.bz2): la commande alien.
- Extrait du man alien:
EXAMPLES
Here are some examples of the use of alien:
alien --to-deb package.rpm
Convert the package.rpm into a package.deb
alien --to-rpm package.deb
Convert the package.deb into a package.rpm
alien -i package.rpm
Convert the package.rpm into a package.deb (converting to a .deb package is default, so you need not specify --to-deb), and install the generated package.
alien --to-deb --to-rpm --to-tgz --to-slp foo.deb bar.rpm baz.tgz
Creates 9 new packages. When it is done, foo bar and baz are available in all 4 package formats.Les frontières entre systèmes de packages tombent! (par contre attention aux dépendances...)Pour plus d'information sur alien:
man alienIl existe aussi le logiciel checkinstall qui permet de faire des paquets (RMP, .deb, tgz):
- décompresser les sources dans un répertoire nommé selon le paquet à créer et sa version
- faire les deux premières étapes d'une installations à la main:
./configure
make - lancer en root
checkinstallqui va générer le paquet et l'installer
- Les dépôt et leurs mirroirs:Les dépôts configurés par défaut sont les serveurs principaux de la distribution. En cas de grosse mise à jour, ils peuvent parfois être saturés. Il existe cependant plein de serveurs mirroirs dont le contenu est identique et mis à jour simultanément.Il y a peut être des mirroirs près de chez vous: Par exemple pour Fedora Core/Red Hat un gros mirroir est hébergé par le CIRIL à Nancy, et pour Ubuntu et Debian, il a un mirroir à l'université de Strasbourg.
Ces miroirs sont moins saturés et possèdent des bandes passantes très larges (fibre optique, connection x Gbit ....).
Un outils permet de choisir les meilleurs dépôts:
netselect
- Mise à jour de tout le système:
Merci à Duke98, TuXXX, Scaramouche, theocrite et noobietux pour leurs contributions (corrections, ajouts, remarques...)
EDIT 1: ajout de la seconde partie du post
EDIT 2: ajout des "Petits ajouts" et correction de quelques fautes d'ortographes, petites modifications divers, ajout de la notes sur les drivers ATI et nVidia.
EDIT 3: remarque de Duke98 et corrections de quelques fautes de plus
EDIT 4: ajout des liens vers les tutoriaux dédiés aux distributions
EDIT 5: corrections et ajouts selon les remarques (nombreuses) de TuXXX, Scaramouche, theocrite et noobietux.
Pingback: Aroblog 2.0 » Blog Archive » Nouveau (vieil) articles