LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


debian:debian_gestion_paquets

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

debian:debian_gestion_paquets [2018/11/17 13:52] (Version actuelle)
Ligne 1: Ligne 1:
 +======La gestion des paquets sous Debian======
  
 +Après avoir installé votre système [[debian|Debian]] il vous faudra le faire vivre : mises à jour et installation/​désinstallation de logiciels sont des tâches courantes. Les programmes se présentent sous la forme de "​**paquets**"​ qui portent l'​extension "​**.deb**"​. Pour les utiliser Debian dispose d'​outils très efficaces au premier rang desquels vient "​**apt**"​.
 +
 +<WRAP info>Un signe $ précède les commandes qui ne nécessitent pas des droits administrateurs,​ un signe # celles qui nécessitent des droits administrateurs. Ces signes ne font PAS partie de la commande. Les lignes qui ne commencent pas par un signe $ ou # correspondent au résultat de la commande précédente.</​WRAP>​
 +
 +<WRAP info> Le système de gestion de paquets "​.deb"​ est commun à de nombreuses distributions dérivées de Debian, parmi lesquelles la famille des *buntu ([[ubuntu:​ubuntu|Ubuntu]],​ Kubuntu, Xubuntu...). En dehors des lignes de dépôts de logiciels qui sont spécifiques à chaque distribution/​version,​ les outils présentés ici sont utilisables de la même façon sur la plupart des distributions dérivées de Debian.</​WRAP>​
 +
 +
 +===="​apt"​ : Les fichiers de configuration importants====
 +
 +
 +===sources.list===
 +
 +Le fichier central concernant la gestion de paquets sous Debian est **/​etc/​apt/​sources.list** car c'est dans ce fichier que sont inscrites les sources de téléchargement,​ on parle de "​dépôts de paquets",​ que "​apt"​ va utiliser. Ces sources se présentent sous la forme :\\
 +
 +{{ debian:​structure_ligne_sourcelist.png?​580 }}
 +
 +Concrètement cela donne pour une Debian "​squeeze"​ sur laquelle on veut avoir accès à toutes les catégories de logiciels :\\
 +
 +<​file>​deb http://​ftp.fr.debian.org/​debian/​ squeeze main contrib non-free
 +deb-src http://​ftp.fr.debian.org/​debian/​ squeeze main contrib non-free</​file>​
 +
 +Les catégories ("​sections"​ en Anglais) correspondent au statut des paquets par rapport à la charte du logiciel libre selon Debian, connu sous le nom de [[http://​www.debian.org/​social_contract.fr.html|"​Contrat Social"​ Debian]]. Les paquets de "​main"​ étant totalement gérés par les développeurs de debian et libres selon les critères de Debian, "​contrib"​ regroupe des paquets libres mais dont certaines dépendances ne le sont pas, et "​non-free"​ s'​applique aux paquets soumis à des licences restrictives (commercial,​ copyright, illégal dans certains pays...). Une dernière catégorie "​restricted"​ peut apparaître sur certaines sources pour signifier des paquets propriétaires soumis à des conditions particulières (payant ...etc).\\
 +
 +Il est également possible d'​ajouter le contenu d'un cdrom à la base de paquet pour faire des installations hors-ligne, il vous sera demandé de l'​insérer en cas de besoin. La commande pour ajouter un cdrom est :\\ 
 +
 +<​code>#​ apt-cdrom add</​code>​
 +
 +avec le cd dans le lecteur.\\
 +
 +
 +Les sources indispensables sont ajoutées dès l'​installation,​ en particulier les sources qui concernent les mises à jour de sécurité. Vous pouvez prendre modèle sur la syntaxe de ces sources. À noter qu'un caractère "​**#​**"​ (dièse) au début d'une ligne désactive la ligne, on dit alors qu'​elle est "​commentée"​.\\
 +
 +Un exemple de fichier "​sources.list"​ :\\
 +
 +<​file>###​ Debian 6 "​squeeze"​ ###
 +
 +## securité squeeze
 +
 +deb http://​security.debian.org/​ squeeze/​updates main contrib non-free ​
 +deb-src http://​security.debian.org/​ squeeze/​updates main contrib non-free ​
 +
 +## squeeze-updates (ancien "​volatile"​ + mises à jour) 
 +
 +deb http://​ftp.fr.debian.org/​debian/​ squeeze-updates main contrib non-free
 +deb-src http://​ftp.fr.debian.org/​debian/​ squeeze-updates main contrib non-free
 +
 +## squeeze-proposed-updates (mises à jour de pré-version)
 +
 +deb http://​ftp.fr.debian.org/​debian squeeze-proposed-updates main contrib non-free
 +deb-src http://​ftp.fr.debian.org/​debian squeeze-proposed-updates main contrib non-free
 +
 +## Depots principaux squeeze
 +
 +deb http://​ftp.fr.debian.org/​debian/​ squeeze main contrib non-free ​   ​
 +deb-src http://​ftp.fr.debian.org/​debian/​ squeeze main contrib non-free ​
 +
 +###########​Fin des dépôts officiels############​
 +
 +## Debian-multimedia - paquets multimedia non officiels
 +deb http://​mirror.home-dn.net/​debian-multimedia/​ squeeze main non-free
 +deb-src http://​mirror.home-dn.net/​debian-multimedia/​ squeeze main non-free
 +
 +## Wine HQ - squeeze (non officiel)
 +## signing key "wget -O - http://​www.lamaresh.net/​apt/​key.gpg | apt-key add -"
 +#deb http://​www.lamaresh.net/​apt squeeze main
 +#deb-src http://​www.lamaresh.net/​apt/​ squeeze main
 +
 +## Google software repository
 +#deb http://​dl.google.com/​linux/​deb/​ squeeze non-free
 + 
 +
 +## SOGo (groupware, "​lightning"​ avec support ldap)
 +#deb http://​inverse.ca/​debian/​ squeeze main
 +
 +
 +## Oracle VirtualBox
 +#deb http://​download.virtualbox.org/​virtualbox/​debian squeeze contrib
 +
 +
 +####Miroir Debian alternatif####​
 +
 +## Miroir squeeze
 +#deb http://​mirrors.eu.kernel.org/​debian/​ squeeze main contrib non-free ​
 +#deb-src http://​mirrors.eu.kernel.org/​debian/​ squeeze main contrib non-free
 +</​file>​
 +
 +Consultez le manuel pour plus de détails :\\
 +
 +<​code>​$ man sources.list</​code>​
 +
 +===/​etc/​apt/​preferences et /​etc/​apt/​apt.conf===
 +
 +<wrap info>Ces fichiers peuvent ne pas exister par défaut, il suffit alors de les créer.</​wrap>​
 +
 +Dans ces fichiers vous pouvez assigner un degré de priorité à un niveau donné de stabilité pour l'​ensemble de vos paquets ou certains seulement. On parle de "​package pinning"​ en Anglais, ou "​marquage de version"​. Le fichier de préférences est simple par sa syntaxe mais complexe dans les conséquences qu'il peut entraîner, à utiliser avec prudence et documentation !\\
 +Un exemple de blocage du paquet "​gimp"​ à sa version 2.6* :\\
 +
 +<​file>​Package:​ gimp
 +Pin: 2.6*
 +Pin-Priority:​ 1001</​file>​
 +
 +Pour utiliser des paquets de l'​archive (a=) "​experimental",​ et suivre leurs mises à jour :\\
 +
 +<​file>​Package:​ *
 +Pin: release a=experimental
 +Pin-Priority:​ 101</​file>​
 +
 +Pour donner la priorité 990 aux paquets de la distribution de nom (n=) "​squeeze"​ :\\
 +
 +<​file>​Package:​ *
 +Pin: release n=squeeze
 +Pin-Priority:​ 990</​file>​
 +
 +Un exemple en prenant l'​origine du dépôt comme critère (information renvoyé par la commande "​apt-cache policy"​) :\\
 +
 +<​file>​Package:​ *
 +Pin: origin kernel-archive.buildserver.net
 +Pin-Priority:​ 101</​file>​
 +
 +
 +:!: Attention à ne pas trop "​jouer"​ avec des priorités de paquets car on peut entraîner de sérieux problèmes de dépendances...\\
 +Pour en savoir plus, voyez les liens en fin de page, et utilisez la commande\\
 +<​code>​$ man apt_preferences</​code>​
 +
 +Un extrait du manuel au sujet des priorités :\\
 +
 +<​file>​Comment APT interprète-t-il les priorités ?
 +Les priorités (P) indiquées dans le fichier des préférences doivent être des entiers positifs ou négatifs.
 +Ils sont interprétés à peu près comme suit :
 +
 +      P > 1000  Cette priorité entraîne l´installation du paquet même s´il s´agit d´un retour en arrière.
 +
 +990 < P <​=1000 ​ La version sera installée, même si elle n´appartient pas à la distribution par défaut ;
 +                mais elle ne sera pas installée si la version installée est plus récente.
 +
 +500 < P <​=990 ​  La version sera installée, sauf s´il existe une version appartenant à la distribution par
 +                défaut ou si la version installée est plus récente.
 +
 +100 < P <​=500 ​  La version sera installée, sauf s´il existe une version appartenant à une autre distribution
 +                ou si la version installée est plus récente.
 +
 +  0 < P <​=100 ​  La version sera installée si aucune version du paquet n´est installée.
 +
 +      P < 0     Cette priorité empêche l´installation de la version.</​file>​
 +\\
 +
 +Pour donner globalement la préférence à un niveau de stabilité sur l'​ensemble du système il faut créer un fichier **apt.conf** dans /etc/apt , ou /​etc/​apt/​apt.conf.d/​local qui aura le contenu suivant pour un système privilégiant "​testing"​ :\\ 
 +
 +<​file>​APT::​Default-Release "​testing";</​file> ​
 +
 +Cette façon de faire évite de se retrouver au fil des mises à jour avec un système en "​unstable"​ juste parce qu'on a ajouté une source "​unstable"​ dans le fichier "​sources.list",​ cela n'​empêche pas d'​installer des paquets "​unstable"​ avec la commande :\\
 +
 +<​code>#​ apt-get -t unstable install nom_du_paquet</​code>​
 +
 +====apt en ligne de commande====
 +
 +Une fois votre sources.list mis  en ordre, vous pouvez rafraîchir la base de donnée des paquets avec la commande :\\
 +
 +<​code>#​ apt-get update</​code>​
 +
 +Pour installer les mises à jour disponibles c'est :\\
 +
 +<​code>#​ apt-get upgrade</​code>​
 +
 +Pour (dés)installer un paquet particulier c'est :\\
 +
 +<​code>#​ apt-get install nom_du_paquet
 +# apt-get remove --purge nom_du_paquet</​code>​
 +
 +où l'​option facultative "​%%--%%purge"​ indique d'​enlever également les fichiers de configurations du logiciel à désinstaller. À noter que l'​extension des paquets .deb n'est pas nécessaire.\\
 +
 +L'​installation de plusieurs paquets est possible en indiquant leurs noms à la suite séparés par un espace, et l'​installation et désinstallation en une seule commande également avec :\\
 +
 +<​code>#​ apt-get install gimp scribus-</​code>​
 +
 +qui installera gimp et désinstallera scribus (notez le "​**-**"​ (signe moins) après "​scribus"​).\\
 +
 +Il est à noter que "​apt-get"​ se charge de gérer les dépendances et vous indiquera les paquets supplémentaires qui seront automatiquement installés pour les satisfaire. En revanche il ne prend pas en charge les paquets "​recommandés"​ et "​suggérés"​ par défaut.\\
 +
 +
 +Vous voilà maître des commandes de base, il vous reste à savoir **rechercher un paquet** avec :\\
 +
 +<​code>​$ apt-cache search nom_du_paquet</​code>​
 +
 +Grâce à des "​additifs"​ vous pouvez étendre les fonctions de apt, si vous installez par exemple le paquet "​**apt-show-versions**"​ vous aurez accès à la commande:\\
 +
 +<​code>​$ apt-show-versions -u</​code>​
 +
 +qui listera tout les paquets disponibles pour mise à jour.\\
 +
 +À utiliser avec prudence et discernement,​ la commande :\\
 +
 +<​code>#​ apt-get dist-upgrade</​code>​
 +
 +fera passer l'​ensemble de votre système à la version directement supérieure ("​stable"​ > "​testing"​ ou "​testing"​ > "​unstable"​ ...etc), si vous avez bien entendu modifié votre sources.list pour pointer vers le nouveau niveaux.\\
 +Il est maintenant conseillé d'​utiliser "​Aptitude"​ (voir plus bas) pour cette usage.\\
 +Sauvegarde indispensable avant l'​exécution de ce genre de mise à niveau !
 +
 +
 +Pour connaître l'​ensemble des usages possibles de apt-get référez vous au manuel en tapant **man apt-get** dans une console. Ou bien lisez le [[http://​www.debian.org/​doc/​manuals/​apt-howto/​index.fr.html|apt how-to]]. Vous découvrirez que apt sait réparer des paquets dont les dépendances sont "​brisées"​ ou lister et désinstaller des dépendances laissées orphelines et inutiles lors d'une désinstallation précédente.\\
 +
 +Enfin un dernier avantage de "​apt"​ est sa gestion de la signature des paquets, à chaque source correspond une signature numérique garantissant l'​authenticité des paquets. Si cette clé d'​identification est absente de votre système vous en avertira par la mention "The following packages cannot be authenticated!"​ ou "​aucune clé publique n'est disponible..."​. Dans ce cas il vous faut installer la clé d'​identification de la source d'​installation soit via le paquet "​debian-archive-keyring"​ qui contient les clés des dépôts officiels et "​debian-multimedia-keyring"​ pour les paquet de %%http://​www.debian-multimedia.org%% , soit en important la clé manuellement pour des sources plus "​exotiques"​. L'​exemple de la source Google©® :\\
 +
 +Une fois ajouté au sources.list
 +
 +<​file>​deb http://​dl.google.com/​linux/​deb/​ stable non-free</​file>​
 +
 +il faut taper dans une console en root:​\\ ​
 +
 +<​code>#​ wget -q http://​dl.google.com/​linux/​linux_signing_key.pub -O- | sudo apt-key add -</​code>​
 +
 +en faisant bien attention aux tirets, ensuite un "​apt-get update"​ rendra les paquets de cette source disponibles à l'​installation.\\
 +
 +:!: __Attention__ :!: car en ajoutant un dépôt de logiciels à votre sources.list et surtout en ajoutant sa clé vous accordez totale confiance à tous les paquets qui s'y trouvent ! Donc prudence avec les fichiers sources.list récupérés sur des blogs ou sites perso !
 +
 +L'​outil [[http://​www1.apt-get.org/​search.php|Unofficial Apt Repository]] vous permettra de trouver des sources de manière plus sûr, en plus la syntaxe est déjà prête à l'​emploi. À garder en marque-page donc ;-) .\\
 +
 +Un mémo des commandes utiles. Si la commande n'est pas disponible sur votre système, l'​installation du paquet correspondent est nécessaire (exemple : "​apt-file"​) :\\
 +
 +^Commande ​  ​^Fonction ​  ^
 +|#   ​**apt-get update** ​  ​|mettre à jour la liste des paquets disponibles dans les dépôts ​  |
 +|#   ​**apt-get upgrade** ​  ​|mettre à jour les paquets installés ​  |
 +|#   ​**apt-get dist-upgrade** ​  |mise à niveau de distribution,​ par exemple pour passer de "​testing"​ à "​unstable" ​  |
 +|#   ​**apt-get dist-upgrade -s**   ​|simuler une action, affiche les actions nécessaires sans les effectuer réellement ​  ​| ​
 +|#   ​**apt-get check** ​  |met à jour l'​arbre des dépendances et cherche les conflits/​paquets cassés ​  |
 +|#   ​**apt-get install** //​paquet// ​  |pour installer le(s) paquet(s) dont le(s) nom(s) sui(ven)t la commande ​  |
 +|#   ​**apt-get remove** ​ //​paquet// ​  |pour désinstaller le(s) paquet(s) dont le(s) nom(s) sui(ven)t la commande ​  |
 +|#   ​**apt-get remove %%--%%purge** //​paquet// ​  ​|l'​option "​%%--purge%%"​ indique d'​effacer également les fichiers de configuration ​  |
 +|#   ​**apt-get autoremove** ​  ​|supprimer les dépendances orphelines issues de paquets désinstallés ​  |
 +|#   ​**apt-get clean** ​  ​|efface les paquets téléchargés conservés en cache (/​var/​cache/​apt/​archives) ​  |
 +|#   ​**apt-get autoclean** ​  ​|efface les paquets téléchargés,​ seulement s'ils ne sont plus disponibles sur les dépôts ​  |
 +|$   ​**apt-cache search** //​paquet// ​  ​|recherche d'un paquet dont le nom suit la commande ​  |
 +|$   ​**apt-cache policy** //​paquet// ​  ​|donne la disponibilité d'un paquet, sa version, le dépôt d'​origine et la priorité ​ |
 +|$   ​**apt-cache policy** ​  |sans nom de paquet, affichage la priorité de tous les dépôts présent dans le sources.list ​  |
 +|$   ​**apt-cache madison** //​paquet// ​  ​|donne les versions d'un paquet installé ou disponible ​  |
 +|$   ​**apt-cache show** //​paquet// ​  ​|affiche les propriétés d'un paquet qu'il soit installé ou non   |
 +|$   ​**apt-cache depends** //​paquet// ​  ​|affiche les dépendances d'un paquet en incluant les conflits et paquets suggérés ​  |
 +|$   ​**apt-file search** //​fichier// ​  ​|recherche quel paquet fourni un fichier ​  |
 +|$   ​**apt-file update** ​  |met à jour la liste du contenu des paquets, à effectuer régulièrement ​  |
 +|$   ​**apt-file list** //​paquet// ​  ​|liste les fichiers contenus dans un paquet (installé ou non)   |
 +|$   ​**apt-show-versions** ​  ​|liste tous les paquets installés, leurs distributions,​ versions actuelles, versions plus récentes ​  |
 +|$   ​**apt-show-versions -i**   |met à jour le cache de "​apt-show-versions" ​  |
 +|$   ​**apt-show-versions -u**   ​|liste les paquets dont une version plus récente est disponible ​  |
 +|$   ​**apt-rdepends** //​paquet// ​  ​|donne l'​arbre des dépendances d'un paquet de manière récursive ​  |
 +|$   ​**apt-rdepends -r** //​paquet// ​  ​|liste les paquets qui dépendent du paquet donné en argument ​  |
 +
 +
 +
 +
 +====apt en mode graphique====
 +
 +La ligne de commande c'est rapide et efficace, mais une belle interface graphique c'est plus confortable ! Apt en possède plusieurs dont les plus courantes sont "​[[util:​synaptic|Synaptic]]"​ (lié à [[gnome:​gnome|Gnome]]) et "​[[util:​packagekit|KPaquagekit]]"​ (dans [[kde:​kde4|KDE4]]). On trouve également une interface simplifiée "​**gnome-app-install**"​ dans l'​environnement de bureau Gnome.\\
 +Plusieurs interfaces graphiques peuvent être installées sur le même système à condition de ne pas être utilisé simultanément. En revanche aucun problème à désintaller dans "​KPackagekit"​ un paquet installé avec "​Synaptic"​ : c'est toujours Apt qui fait le boulot ! "​Synaptic"​ dispose d'un applet Gnome d'​avertissement de mises à jour disponible, de même que "​KPackagekit"​ pour KDE4. Il existe également des interfaces graphiques pour installer un paquet "​.deb"​ isolé (téléchargé),​ comme "​Gdebi"​ ou "​KPackage"​.\\
 +S'ils ne sont pas déjà présent sur le système, ces programmes s'​intallent avec "​apt-get"​ (mettre le nom du logiciel désiré) :\\
 +
 +<​code>#​ apt-get install synaptic</​code>​
 +
 +Ces programmes permettent d'​accéder à beaucoup des fonctions de "​apt",​ je vous laisse explorer les interfaces ;-) .
 +
 +"​Synaptic",​ lié à l'​environnement de bureau [[gnome:​gnome|"​Gnome"​]] :\\
 +
 +{{ debian:​synaptic.png?​580 }}
 +\\
 +
 +"​gdebi"​ (ici en version "​kde",​ disponible pour "​Gnome"​),​ installe des paquets isolés en gérant les dépendances :\\
 +
 +{{ debian:​gdebi-kde.png?​580 }}
 +\\
 +
 +"​KPackagekit",​ lié à l'​environnement de bureau [[kde:​kde4|"​KDE4"​]] :\\
 +
 +{{ debian:​kpackagekit.png?​580 }}
 +\\
 +
 +"​Kpackage"​ lié à "​KDE"​ :\\
 +
 +{{ debian:​kpackage.png?​580 }}
 +
 +
 +====Aptitude,​ la relève====
 +
 +
 +Apt est un outils puissant, souple et... ancien. La relève est déjà en ordre de marche sous le nom de [[http://​www.debian.org/​doc/​manuals/​reference/​ch-package.fr.html|Aptitude]]. Il s'agit d'une interface en mode texte ou en ligne de commande basée sur apt, mais qui ajoute une dose de finesse supplémentaire dans la gestion des dépendances et des paquets "​recommandés"​ et "​suggérés"​ lors d'une installation.\\
 +D'un emanière shématique on peut dire que "​apt"​ est adapté à la gestion d'une Debian "​stable",​ sans mélange de versions et "​pinning"​. Dans les autres cas "​aptitude"​ donnera souvent de meilleurs résultats.\\
 +"​Aptitude"​ garde en mémoire les paquets installés manuellement et sait purger les dépendances orphelines, permet de choisir le niveau de stabilité auquel un paquet est installé et propose des solutions pour résoudre des conflits de dépendances :\\
 +
 +<​code>#​ aptitude install gimp/​unstable</​code>​
 +
 +installera gimp depuis une source "​unstable"​ (présente dans le sources.list bien sûr).\\
 +
 +"​aptitude"​ s'​intalle avec "​apt-get"​ s'il n'est pas déjà présent sur le système :\\
 +
 +<​code>#​ apt-get install aptitude</​code>​
 +
 +"​aptitude"​ s'​utilise avec une syntaxe similaire à "​apt-get"​ (install, remove, purge, update, upgrade, full-upgrade ...etc voir **man aptitude** pour la liste exhaustive des commandes et /​usr/​share/​doc/​aptitude/​README).\\
 +
 +===aptitude en mode "​graphique"​===
 +
 +Aptitude peut s'​utiliser via une interface "​semi-graphique"​ "​ncurse",​ il suffit de taper la commande :\\
 +
 +<​code>#​ aptitude</​code>​
 +
 +L'​écran principal commenté en rouge :\\
 +
 +{{ debian:​aptitude_ncurse1.png?​580 ​ }}
 +\\
 +
 +L'​écran d'​informations détaillées sur un paquet :\\
 +
 +{{ debian:​aptitude_ncurse2.png?​580 ​ }}
 +\\
 +
 +L'​écran de résumé des actions en attente :\\
 +
 +{{ debian:​aptitude_ncurse3.png?​580 ​ }}
 +\\
 +
 +Les raccourcis de l'​interface "​ncurse"​ sont :\\
 +
 +^**Touches** ​ ^  **Actions** ​ ^^^
 +|**?​** ​  ​|Affiche l'​aide ​  |
 +|**F10** ​  |Menu > point de départ de toutes les actions, à explorer absolument ;-)   |
 +|**u** ​  |Mise à jour des informations de l'​archive de paquets ​  |
 +|**+** ​  ​|Marque un paquet pour mise-à-jour ou installation ​  |
 +|**-** ​  ​|Marque un paquet pour suppression (garde la configuration) ​  |
 +|**_** ​  ​|Marque un paquet pour purge (supprime la configuration) ​  |
 +|**=** ​  ​|"​Gèle"​ la version d'un paquet, il ne sera pas mis à jour   |
 +|**U** ​  ​|Marque tous les paquets qui peuvent être mis à jour   |
 +|**g** ​  ​|Téléchargement et installation des paquets sélectionnés ​  |
 +|**q** ​  ​|Sortie de l'​écran courant et sauvegarde des changements ​  |
 +|**x** ​  ​|Sortie de l'​écran courant sans sauvegarde ​  |
 +|**Enter** ​  ​|Visualisation des informations sur un paquet ​  |
 +|**i** ​  ​|Circule parmi les informations sur le paquet (panneau bas de l'​interface) ​  |
 +|**C** ​  ​|Visualisation des changements d'un paquet ​  |
 +|**/​** ​  ​|Recherche la première occurrence ​  |
 +|**n** ​  ​|Répète la dernière recherche ​  |
 +|**\** ​  ​|Recherche en arrière ​  |
 +
 +On peut utiliser des motifs de recherche, par exemple écrire dans le champ de recherche "​**~dsamba**"​ effectuera une recherche de "​samba"​ sur la description des paquets ("​~d"​),​ et pas seulement sur leurs noms. Voir "​aptitude en ligne de commande"​ pour plus de détails sur les motifs de recherche.\\
 +
 +<WRAP tip>Si vous utilisez des motifs de recherche complexes en ligne de commande vous devrez échapper les caractères spéciaux pour éviter que le shell ne les interprètes,​ mais si vous utilisez le même motif de recherche dans la fenêtre de recherche intégrée d'​Aptitude vous ne devez pas utiliser les caractères d'​échappement. Un exemple : avec la recherche des paquets installés depuis le niveau "​testing"​ et dont il existe une version plus récente en "​unstable"​ :\\
 +En ligne de commande : **aptitude search ~S~i\(~Atesting\!~Aunstable\)**\\
 +Fonction de recherche d'​Aptitude : **~S~i(~Atesting!~Aunstable)**\\
 +Notez que les "​**\**"​ ont disparu.</​WRAP>​
 +
 +La gestion fine des dépendances peut être modifiée dans Menu([F10])-->​ Options --> Gestion des dépendances\\
 +
 +{{ debian:​aptitude_pref.png?​580 }}
 +\\
 +
 +<WRAP info>Une interface graphique basée sur "​GTK"​ est en cours de développement,​ nommée "​aptitude-gtk"​ elle est déjà disponible sur les dépôts Debian "​experimental",​ mais son utilisation reste réservée à un public averti sur un système dédié aux tests. Pour suivre l'​évolution du projet vous pouvez vous référer à [[http://​algebraicthunk.net/​~dburrows/​blog/​entry/​aptitude-gtk-status-a-visual-tour/​|ce blog]].</​WRAP>​
 +
 +===aptitude en ligne de commande===
 +
 +Des exemples de commandes avancées en console:
 +
 +  * **aptitude why //paquet1// //​paquet2//​** : Permet de visualiser les relations de dépendances entre deux paquets\\
 +  * **aptitude why-not //​paquet//​** : Permet de savoir pourquoi l'​installation d'un paquet échoue ou est impossible\\
 +  * **aptitude search ~dmozilla** : Effectue une recherche sur la description des paquets plutôt que leurs noms\\
 +  * **aptitude search '?​depends(//​paquet//​)'​** : Liste tous les paquets dépendant de "​(paquet)"​\\
 +  * **aptitude search '​~S~i~Aexperimental'​** : Liste tous les paquets installés depuis l'​archive experimental\\
 +  * **aptitude search '?​installed~dflash'​** : Liste les paquets installés dont la description contient le mot "​flash"​\\
 +  * **aptitude search ~S~i~dflash** : Exactement pareil que précédemment,​ forme courte\\
 +  * **aptitude remove ~nopenoffice** : Supprime tous les paquets dont le nom contient "​openoffice"​\\
 +  * **aptitude install vlc=0.9.8a-3** : Installe le paquet "​vlc"​ en version "​0.9.8a-3",​ si elle est disponible\\
 +  * **aptitude forbid-version vlc=0.8.6** : Empêche l'​installation par mise à jour de "​vlc"​ en version "​0.8.6"​\\
 +  * **aptitude hold vlc** : Empêche toute mise à jour du paquet "​vlc"​ ("​gèle"​ du paquet, contraire "​unhold"​)\\
 +  * **aptitude markauto '?​section(libs)'​** : Marque toutes les librairies comme installées automatiquement. Si des librairies sont "​orphelines"​ (aucun paquet ne dépend d'​elles),​ elles seront désinstallées\\
 +
 +Motifs de recherche courants :\\
 +
 +^Motif ​  ​^Forme longue ​  ​^Fonction ​ ^Exemple ​  ^^^
 +|**~n** ​ |?​name ​ |Recherche par nom  |**~nmozilla** = paquets dont le nom contient "​mozilla" ​ |
 +|**~A** ​ |?​archive ​ |Recherche par dépôt ​  ​|**'?​archive(experimental)'​** = paquets du dépôt "​experimental" ​ |
 +|**~i** ​ |?​installed ​ |Paquets actuellement installés ​ |**~i** = paquets installés ​ |
 +|**~S** ​ |?​narrow ​ |Opérateur logique "​et" ​ |**~S~i~nmozilla** = paquets installés ET dont le nom contient "​mozilla" ​ |
 +|**!** ​ |?not  |Opérateur logique de négation ​ |**'​!~nmozilla'​** = paquets dont le nom ne contient pas "​mozilla" ​ |
 +|**~O** ​ |?​origin ​ |Recherche par origine ​ |**'​~S~i!~Odebian'​** = paquets installés et n'​ayant pas pour origine "​debian" ​ |
 +|**~s** ​ |?​section ​ |Recherche par catégorie (voir note **1** ci-dessous) ​ |**~snon-free** = paquets de la catégorie "​non-free" ​ |
 +|**%%|%%** ​ |?or  |Opérateur logique "​ou" ​ |**'​~S~i(~Atesting|~Aunstable)'​** = paquets installés depuis "​testing"​ ou "​unstable" ​ |
 +|**~m** ​ |?​maintainer ​ |mainteneur du paquet ​ |**~mmarillat** = paquets maintenus par "​marillat"​ (Christian Marillat, debian-multimedia.org) ​ |
 +|**~o** ​ |?​obsolete ​ |Paquets obsolètes ou locaux ​ |**~S~o~sdev** = paquets locaux ou obsolètes de la section "​dev"​ (développement) ​ |
 +|**~G** ​ |?tag  |Recherche par "​Debtags"​ (étiquettes) ​ |**~S~i~Gpython** = paquets installés ayant le "​tag"​ "​python" ​ |
 +
 +<Wrap info> **__1__** : Le terme anglais "​section"​ regroupe les catégories de paquets comme "​main",​ "​contrib"​ et "​non-free",​ mais également les familles de paquets comme "​dev",​ "​lib",​ "​video",​ "​admin"​ ...etc. Les deux sont utilisables avec le motif de recherche "​~s"​ ("?​section"​).\\
 +Les motifs incluant les signes "​**?​**"​ (formes longues), "​**!**",​ "​**|**"​ ou des parenthèses "​**()**"​ doivent être protégées de l'​interprétation du shell par des guillemets simple **'** .</​WRAP>​
 +
 +Pour une liste complète vous pouvez vous référez à la documentation de "​aptitude",​ chapitre "​motifs de recherche",​ ou à sa [[http://​algebraicthunk.net/​~dburrows/​projects/​aptitude/​doc/​en/​ch02s03s05.html|version en ligne]] (eng).\\
 +
 +Les commandes courantes de "​aptitude"​ :\\
 +
 +^Commande ​  ​^Fonction ​  ^^^
 +|**search** //​motif// ​ |Recherche un nom ou un motif parmi les paquets disponibles,​ installé ou non   |
 +|**show** //​paquet(s)// ​ |Donne le descriptif détaillé d'un (ou plusieurs) paquet(s), installé(s) ou non   |
 +|**install** //​paquet(s)// ​ |Installe le(s) paquet(s) dont le nom est donnée en argument ​  |
 +|**remove** //​paquet(s)// ​ |Désinstalle le(s) paquet(s) dont le nom est donnée en argument ​ |
 +|**purge** //​paquet(s)// ​ |Désinstalle le(s) paquet(s) dont le nom est donnée en argument, et efface les fichiers de configuration ​ |
 +|**reinstall** //​paquet(s)// ​ |Réinstalle un paquet déjà présent sur le système ​ |
 +|**update** ​ |Met à jour la listes des paquets disponibles sur les dépôts ​  |
 +|**safe-upgrade** ​  |Met à jour le système de manière sûre, sans désinstaller de paquets (pour mise à jour de routine) ​  |
 +|**full-upgrade** ​  |Met à jour le système même si des paquets doivent-être désinstallé (anciennement "​dist-upgrade"​) ​  |
 +|**clean** ​ |Efface les paquets téléchargés du cache (/​var/​cache/​apt/​archives) ​  |
 +|**autoclean** ​  ​|Efface les paquets téléchargés du cache, seulement s'ils ne sont plus disponibles dans les dépôts ​ |
 +|**hold** //​paquet(s)// ​ |Maintien le paquet dans sa version actuelle, il ne sera pas mis à jour  |
 +|**unhold** //​paquet(s)// ​ |Annule le maintien dans la version actuelle, le paquet pourra être mis à jour  |
 +|**forbid-version** //​paquet//​=version ​ |Empêche l'​installation d'une version (exp. //​paquet//​=0.8.6) d'un paquet ​ |
 +|**forbid-version** //​paquet(s)// ​ |Empêche l'​installation de la version vers laquelle le paquet aurait dû être mis à jour  |
 +|**build-dep** //​paquet(s)-src// ​ |Installe un paquet-source avec toutes les dépendances nécessaires à sa compilation ​ |
 +|**markauto** //​paquet(s)// ​ |Marque les paquets comme installés automatiquement,​ si aucun paquet ne dépend plus d'eux ils seront désinstallés ​ |
 +|**unmarkauto** //​paquet(s)// ​ |Marque le paquet comme installé manuellement,​ il ne sera pas désinstallé automatiquement si "​orphelin" ​ |
 +
 +
 +Bien d'​autres exemple sont disponibles dans le [[http://​algebraicthunk.net/​~dburrows/​projects/​aptitude/​doc/​en/​index.html|manuel détaillé]] (eng).\\
 +
 +Un mémo des options courantes en ligne de commande pour "​aptitude"​ :\\
 +
 +^Options courtes ​  ​^Options longues ​   ^Description ​  ^^^
 +|**-D** ​  ​|%%--%%show-deps ​  ​|Affiche un bref résumé sur la raison pour laquelle des paquets vont être automatiquement installés ou supprimés ​  |
 +|**-d** ​  ​|%%--%%download-only ​  ​|N'​installe ni ne supprime aucun paquet. Télécharge simplement les paquets nécessaires dans le cache   |
 +|**-f** ​  ​|aucune ​  ​|Essaye de forcer la résolution des dépendances des paquets cassés (résultat aléatoire) ​  |
 +|**-h** ​  ​|%%--%%help ​  ​|Affiche un court message d'​aide ​  ​| ​
 +|aucune ​  ​|%%--%%purge-unused ​  ​|Purge les paquets dont aucun autre paquet installé ne dépend ​  |
 +|**-R** ​  ​|%%--%%without-recommends ​    ​|N'​installe pas les paquets "​recommandés"​ ou "​suggérés" ​  |
 +|**-r** ​  ​|%%--%%with-recommends ​  ​|Installe les paquets suggérés ou recommandés comme des dépendances ​  |
 +|**-s** ​  ​|%%--%%simulate ​  ​|Simule l'​exécution d'une commande, sans réellement effectuer les opérations demandées ​  |
 +|aucune ​  ​|%%--%%schedule-only ​  ​|Différer les actions demandées ​  |
 +|**-t** //​version// ​  ​|%%--%%target-release ​  ​|Installer le(s) paquet(s) dans une version particulière (exp. "​testing"​) ​  |
 +|**-V** ​  ​|%%--%%show-versions ​  ​|Indique quelle version du paquet sera installée ​  |
 +|**-v** ​  ​|%%--%%verbose ​  ​|Force quelques actions (**show** par exemple) à afficher des informations supplémentaires ​  |
 +|**-y** ​  ​|%%--%%assume-yes ​  ​|Répond « oui » à toute question sauf dans le cas de questions considérées dangereuses ​  |
 +|**-P** ​  ​|%%--prompt%% ​  ​|Demande confirmation systématiquement pour toutes les actions, même demandées explicitement ​  |
 +
 +__Aptitude enregistre toutes ses actions__ dans **/​var/​log/​aptitude** ce qui rend le suivit et l'​analyse facile. Ci-dessous un exemple de contenu de ce fichier, lu avec le "​pager"​ "​less"​ :\\
 +
 +<​code>​$ less /​var/​log/​aptitude
 +
 +Aptitude 0.4.11.11: journal
 +mar, mai 12 2009 08:54:19 +0100
 +
 +IMPORTANT :​ ce journal ne contient que les actions demandées ;​ certaines actions qui
 +échouent à cause d'​erreurs de dpkg peuvent donc ne pas être réalisées.
 +
 +11 paquets vont être installés, et 1 retirés.
 +2281ko d'​espace disque vont être utilisés
 +===============================================================================
 +[SUPPRIMÉ, NON UTILISÉ] libclamav5
 +[INSTALLÉ, DÉPENDANCES] libclamav6
 +[INSTALLÉ, DÉPENDANCES] libtommath0
 +[INSTALLÉ] libclamunrar6
 +[MIS A JOUR] clamav 0.94.dfsg.2-1 -> 0.95.1+dfsg-2
 +[MIS A JOUR] clamav-base 0.94.dfsg.2-1 -> 0.95.1+dfsg-2
 +[MIS A JOUR] clamav-freshclam 0.94.dfsg.2-1 -> 0.95.1+dfsg-2
 +[MIS A JOUR] klamav 0.44-3 -> 0.46-2+b1
 +[MIS A JOUR] libboost-filesystem1.37.0 1.37.0-8 -> 1.37.0-9
 +[MIS A JOUR] libboost-iostreams1.37.0 1.37.0-8 -> 1.37.0-9
 +[MIS A JOUR] libboost-regex1.37.0 1.37.0-8 -> 1.37.0-9
 +[MIS A JOUR] libboost-system1.37.0 1.37.0-8 -> 1.37.0-9
 +===============================================================================
 +
 +Enregistrement terminé.</​code>​
 +
 +
 +
 +Apt et Aptitude utilisent la même base de données, ils peuvent être considérés comme des alternatives,​ __depuis "​Lenny"​ Aptitude est considéré comme le gestionnaire de paquets recommandé par Debian__.\\
 +
 +La documentation de "​aptitude"​ est accessible dans /​usr/​share/​doc/​aptitude/​html/​fr/​index.html.\\
 +
 +
 +
 +====DPKG : la gestion de bas niveau====
 +
 +Lorsque l'on utilise "​apt"​ ou "​aptitude"​ ceux-ci font appel à une commande plus élémentaire : "​**dpkg**"​. Vous aurez besoin d'​invoquer cette commande si vous voulez installer un ou plusieurs paquets téléchargé sur Internet :\\
 +
 +<​code>#​ dpkg -i chemin_vers_le_paquet_.deb</​code>​
 +
 +Pour résoudre des cas épineux de paquet "qui veut pas" en raison de dépendances cassées, on peut utiliser les options ​ "​**%%--%%ignore-depends**",​ "​**%%--force-depends%%**",​ "​**%%--%%force-overwrite**"​ qui sont les derniers recours. :!: <color red>Ces commandes relèvent du cas désespéré,​ pas de l'​usage normal, il est __nécessaire__ de résoudre les problèmes de dépendances !</​color>​
 +
 +Des exemples d'​utilisation simple de dpkg:
 +
 +  * **dpkg -s** //paquet// : Montre la description d'un paquet\\
 +  * **dpkg -S** //motif// : Cherche un motif dans la liste des paquets (exp. "dpkg -S glx" )\\
 +  * **dpkg -l** : Liste tous les paquets installés, et donne leur état (cassé,​...). L'​option est un "​L"​ minuscule.\\
 +  * **dpkg -L** //paquet// : Liste tous les fichiers contenus dans un paquet\\
 +
 +Dpkg a un autre intérêt qui est de permettre la configuration des paquets qui utilisent "​debconf"​ (l'​outil de configuration de Debian). Si par exemple vous avez un problème d'​affichage et une console au démarrage au lieu de l'​interface graphique (suite à une mise à jour des pilotes de carte graphique...) la commande :\\
 +
 +<​code>#​ dpkg-reconfigure -phigh xserver-xorg</​code>​
 +
 +pourrait vous sauver la vue ;-) . Avec les version récentes de "​xserver-xorg"​ ("​lenny"​) et ses fonctions d'​auto-configuration cette commande est cependant devenue quasiment obsolète.\\
 +
 +De même en cas de changement de périphériques d'​entrée/​sortie/​affichage un\\
 +
 +<​code>#​ dpkg-reconfigure xserver-xorg</​code>​
 +
 +lancera un dialogue vous permettant de choisir des options pour l'​ensemble de vos périphériques gérés par xorg (le dialogue est réduit dans les dernière versions de Debian (>​Lenny),​ car Xorg dispose de nouvelles fonctions d'​auto-configuration.)\\
 +
 +De la même façon\\
 +
 +<​code>#​ dpkg-reconfigure debconf</​code>​
 +
 +permet de choisir les options du mode de dialogue de "​debconf"​.
 +
 +{{ debian:​debconf.png?​580 }}
 +\\
 +
 +"​dpkg"​ est donc un outils pratique, qui permet d'​installer des paquets isolés, de les configurer, et parfois d'​effectuer des manœuvres de la "​dernière chance"​ (y compris installer des paquets sur un système qui ne démarre plus depuis un live cd !). Il sait également gérer les sources avec "​dpkg-source"​ et assister la création de paquet avec "​dpkg-buildpackage"​.\\
 +Un exemple d'​utilisation de "​dpkg-buildpackage"​ pour créer un paquet Debian à partir de sources :\\
 +
 +<​code>​$ dpkg-buildpackage -rfakeroot -us -uc</​code>​
 +
 +( À taper en se plaçant dans le répertoire des sources décompressées. Les dépendances du paquet doivent être installées,​ ainsi que "​build-essential",​ "​fakeroot",​ "​gcc",​ "​cdbs"​ et les "​sources"​ ou "​headers"​ du noyau courant.)
 +
 +Dpkg est utilisé en arrière plan par "​apt-get"​ et "​aptitude",​ en revanche il n'est pas conseillé de l'​utiliser pour la gestion normale des paquets, les outils de plus haut niveau "​apt-get"​ et "​aptitude"​ sont fait pour ça.
 +
 +
 +==== Réinstaller un ensemble de paquets à l'​identique ====
 +
 +Imaginez que vous ayez un système aux petits oignons, avec tous les logiciels qu'il vous faut, et un beau jour vous devez réinstaller (pour changer de matériel, [[expert:​systeme_conversion_raid1:​|passer sur du raid]], [[debian:​passer_sa_debian_32bits_en_64_bits:​|passer de 32 à 64 bits]], etc...), ou installer un système sur une seconde machine, et vous voudriez retrouver exactement la même sélection de logiciels.\\
 +
 +==Avec "​dpkg"​==
 +
 +Avec la commande "dpkg %%--get-selections%%"​ nous pouvons créer un listing de tous les programmes installés :\\
 +
 +<WRAP info>La méthode utilisant "​dpkg"​ est la plus ancienne, elle devrait maintenant être abandonnée au profit de "​aptitude",​ qui permet de conserver le statut d'​installation des paquets (automatique,​ manuel, dépendance). Voir plus bas pour la méthode recommandée avec "​aptitude"​.</​WRAP>​
 +
 +<​code>​$ dpkg --get-selections | grep install$ > mes_logiciels.txt</​code>​
 +
 +Nous limitons le résultat au paquets proprement installés (ça exclu ceux qui sont cassés, ou dans un état incertain) avec "​[[commande:​grep_egrep:​|grep]]"​ en ciblant les lignes qui se terminent (le signe "​$"​ à la fin) par "​install"​. Enfin nous dirigeons le résultat vers un fichier texte "​mes_logiciels.txt"​. Voici un extrait de ce fichier :\\
 +
 +<​file>​wicd ​                                           install ​                                
 +winbind ​                                        ​install ​                                
 +wine                                            install ​                                
 +wireless-tools ​                                 install ​                                
 +wodim                                           ​install ​                                
 +wordnet ​                                        ​install ​                                
 +wordnet-base ​                                   install ​                                
 +wpagui ​                                         install ​                                
 +wpasupplicant ​                                  ​install ​                                
 +wwwconfig-common ​                               install ​                                
 +x-ttcidfont-conf ​                               install ​                                
 +x11-apps ​                                       install</​file>​
 +
 +C'est une simple suite de noms de paquets, chaque ligne se terminant par la directive "​install"​.\\
 +
 +Sur le nouveau système, après avoir configuré votre fichier sources.list comme sur l'​ancien système, il suffira de copier ce fichier texte, et d'​injecter cette liste dans le système de gestion de paquets avec :\\
 +
 +<​code>#​ dpkg --set-selections < mes_lociciels.txt</​code>​
 +
 +C'est déjà presque fini, pour la dernière étape vous avez deux options, soit utiliser la méthode "​historique"​ avec "​apt-get"​ ou être "​tendance"​ et utiliser "​aptitude"​. Je donne les deux possibilités,​ vous ne devez en utiliser qu'une seule :\\
 +
 +<​code>#​ apt-get dselect-upgrade</​code>​
 +
 +== Avec "​aptitude"​ (méthode recommandée)==
 +
 +Pour créer un listing des applications installées on utilise :\\
 +
 +<​code>​$ aptitude -F "​%p"​ search '​~i!~M'​ > liste_paquets.txt</​code>​
 +
 +L'​option "-F "​%p""​ permet de déterminer le format de sortie, ici on conserve uniquement le nom des paquets ("​%p"​) mais il est possible de conserver également la version installée avec "​%V"​ ("​V"​ majuscule), on écrira alors "​%p%V"​ . Il est __déconseillé__ de conserver un numéro de version particulier sauf cas très particuliers.\\
 +Avec la commande précédente vous avez créé un fichier texte "​liste_paquets.txt",​ il suffit de le copier sur le nouveau système et de "​l'​injecter"​ dans aptitude (il faut que le fichier "/​etc/​apt/​sources.list"​ contienne les même dépôts que le système d'​origine,​ même s'il n'est pas obligatoire qu'il s'​agisse de la même version). L'​option "​-s"​ permet de simuler l'​action,​ retirer la quant vous pensez que tout est conforme à vos attentes :\\
 +
 +<​code>#​ aptitude install -s $(cat liste_paquets.txt)</​code>​
 +
 +**ou** avec "​[[commande:​su_sudo:​|sudo]]"​ :\\
 +
 +<​code>​$ cat liste_paquets.txt | sudo aptitude install -s</​code>​
 +
 +
 +Cette manipulation marche même si vous passez d'une système 32bits à un 64bits, il faudra simplement adapter quelques noms de paquets pour lesquels "​aptitude"​ ou "​apt-get"​ renverrons une erreur (par exemple "​w32codecs"​ devient "​w64codecs"​ en 64bits, les paquets de compatibilité "​ia32-libs"​ n'​existent que sur 64bits, ces cas sont rares).\\
 +Avec la méthode "​aptitude",​ il est également possible de réinstaller une liste de paquets d'un système "​Sid"​ sur un système "​Testing"​ par exemple, bien sûr il peut y avoir quelques cas particuliers pour lesquels le paquet a changé de nom, mais cela devrait être rare et compensé par la présence d'un paquet de transition de nom correspondant ("​dummy package"​).\\
 +
 +
 +====Liens====
 +==Apt==
 +  * le [[http://​www.debian.org/​doc/​manuals/​apt-howto/​ch-apt-get.fr.html#​s-pin|guide du "​package pinning"​]] (fr)\\
 +  * une [[http://​www.howtoforge.com/​a-short-introduction-to-apt-pinning|courte introduction au "​package pinning"​]] (eng)\\
 +  * le [[http://​www.debian.org/​doc/​manuals/​apt-howto/​index.fr.html|manuel de "​apt"​]] (fr)\\
 +  * [[http://​www1.apt-get.org/​search.php|Moteur de recherche de dépôts, non officiel]]\\
 +  * Un fichier [[http://​forum.debian-fr.org/​viewtopic.php?​f=8&​t=5659|"​sources.list au carré"​]],​ et de bons conseils sur debian-fr.org.\\
 +
 +==Aptitude==
 +  * le [[http://​algebraicthunk.net/​~dburrows/​projects/​aptitude/​doc/​en/​index.html|manuel détaillé de "​aptitude"​]]\\
 +
 +==Interfaces graphiques==
 +  * [[util:​packagekit|Le système "​Packagekit"​]]\\
 +  * Site officiel de [[http://​www.kde-apps.org/​content/​show.php/​show.php?​content=84745|"​KPackagekit"​]] (eng)\\
 +  * Site officiel de [[http://​www.packagekit.org/​pk-intro.html|"​packagekit"​]]\\
 +--------------------------------------------------------------------------------------------------------------
 +
 +[[http://​www.linuxpedia.fr/​forum/​index.php?​action=pm;​sa=send;​u=15|Envoyer un message au mainteneur]]
 +
 +[[debian:​debian:​|Retour à la page "​Debian"​]]
debian/debian_gestion_paquets.txt · Dernière modification: 2018/11/17 13:52 (modification externe)