====== apt-get ======
* Objet : Utilisation de l'outil d'installation de paquet **apt-get**
* Niveau requis : {{tag>débutant avisé}}
* Commentaires : //Rechercher, installer ou mettre à jour les logiciels et autres paquets disponibles.//
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-)
* * Suivi : {{tag>doublon}}
* Création par [[user>smolski]] 09-09-2013
* Testé par [[user>smolski]] le 09-09-2013
* Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=7368 | ici]]((N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !))
===== Introduction =====
**apt-get** est un gestionnaire de paquets en [[doc:systeme:console|console]]. \\
À ce titre, c'est un outil qui permet de vous **informer**, d'**installer**, de **supprimer** et de **mettre à jour** vos paquets. \\
De façon général, il gère la mise à jour de votre [[doc:systeme:infos-systeme|système]] et s'utilise pour cela en [[:doc:systeme:superutilisateur | super-utilisateur]] alors qu'il vous //informe// sur ceux-ci en //simple utilisateur//.
**Nota important :** \\
N'hésitez pas à respecter l'usage de //simple utilisateur// lorsque cela vous est permis, quitte à ouvrir une seconde session console, bien des erreurs vous seront évitées ainsi, sûr ! 8-)
**apt-get** en ligne de commande, équivaut (//en mieux//) à [[doc:systeme:apt:synaptic:sources|Synaptic]] en graphique !
Bien sûr, les modifications apportées par l'un sont parfaitement reconnues par l'autre ainsi que par [[:doc:systeme:apt:aptitude | aptitude]] et vice et versa entre tous ces outils.
Vous pouvez utiliser la plupart des commandes décrites dans la commande ''apt-get'' avec la commande ''aptitude''. \\
* Voir aussi [[:doc:systeme:apt:aptitude | aptitude]]. Moins simple d'utilisation pour les débutants qui débutent.
===== Mettre à jour la liste des paquets disponibles (Update) =====
Cette opération a deux buts bien précis :
- Rechercher les méta-données d'une archive depuis l’archive distante.
- Reconstruire et mettre à jour les méta-données locales pour qu'elles puissent être utilisées par APT.
apt-get update
Si vous n'avez pas faites une mise à jour depuis plus de 24H, vous devez impérativement l'exécuter avant toute installation. \\
Pour mettre à jour le système, cette commande doit être suivie de la commande upgrade ou dist-upgrade dont les détails sont donnés ci-dessous
C'est une précaution indispensable dans le cas d'une [[doc:systeme:apt:sources.list|testing ou unstable]] où les mises à jour sont très fréquentes (lire quotidienne).
__Remarque :__ on a parfois besoin d'installer la version d'un paquet qui n'est plus présente dans les dépôts. On peut alors utiliser une image des dépôts prises à un moment précis : un snapshot.
==== --fix-broken ====
Voir dans le man apt-get :
man apt-get
-f, --fix-broken
Correction ; cette option demande de réparer un système où existent des dépendances défectueuses. Utilisée avec install ou remove, elle peut exclure un
paquet pour permettre de déduire une solution viable. Tout paquet spécifié doit complètement corriger le problème. Cette option est quelquefois
nécessaire lorsque l'on exécute APT pour la première fois ; APT interdit les dépendances défectueuses dans un système. Il est possible que la structure
de dépendances d'un système soit tellement corrompue qu'elle requiert une intervention manuelle (ce qui veut dire la plupart du temps utiliser
dselect(1) ou dpkg --remove pour éliminer les paquets en cause). L'utilisation de cette option conjointement avec -m peut produire une erreur dans
certaines situations. Élément de configuration : APT::Get::Fix-Broken.
== Utilisation ==
apt-get install -f
===== Installation d'un Logiciel =====
apt-get install LeNomDuLogiciel
Pour plus de précaution, vous pouvez ajouter l'option **-s** (comme simulation) pour simuler l'installation du logiciel, ainsi vous pourrez contrôler les éventuels logiciels & dépendances installées ou désinstallées.
apt-get install -s lenomdulogiciel
===== Désinstallation d'un logiciel =====
apt-get remove lenomdulogiciel
Pour une désinstallation complète (avec les fichiers de configurations) vous pouvez ajouter l'option **%%-%%-purge**
apt-get remove --purge nomdulogiciel
===== Nettoyer le cache =====
Les paquets téléchargés avant installation sont stockés dans **/var/cache/apt/archives**. Ils y restent ad vitam aeternam.
Ce dossier peut donc rapidement devenir encombrant et faire plusieurs Giga-octets. Utilisez [[doc:systeme:du|la commande du]] dans un [[:doc:systeme:terminal | terminal]] user ainsi :
du -h /var/cache/apt/archives
vous serez surpris ! ;-)
==== Faire un petit nettoyage ====
La commande ci-dessous va supprimer uniquement les paquets dont le numéro de version est obsolète par rapport à ceux des miroirs (les vieux trucs quoi)
apt-get autoclean
==== Faire le ménage de printemps ====
=== clean ===
La suivante videra entièrement le contenu du cache.
apt-get clean
=== --purge autoremove ===
Et depuis lenny, il s'est ajouté l'option ''-%%-%%purge autoremove'' qui supprime les paquets installés automatiquement mais devenus inutiles :
apt-get --purge autoremove
//D'après //**Thom1**//, merci !//
===== Se renseigner sur les paquets =====
* [[:doc:systeme:apt:apt-cache | apt-cache - se renseigner sur les paquets]]
===== Gérer son système globalement =====
Si tout se passe bien, et qu'on est en 100% stable, il ne devrait jamais y avoir de différence entre upgrade et dist-upgrade, sauf pour les mises à jour entre différentes stables (voir [[doc:migrer|la migration pas à pas]])
==== upgrade - Mise à jour de surface ====
apt-get upgrade
=== Utilisation ===
upgrade ne supprime pas les paquets qui entravent les mises à jour mais il marque quand même les dépendances inutiles comme //à supprimer// et qui seront supprimées définitivement par la commande //autoremove// et du coup, les mises à jour peuvent être partielles mais au moins, on est sûr qu'il ne vire aucun paquet qu'on utilise.
upgrade va essayer de mettre à jour ce qu'il peut sans rien casser, il est plus sûr pour les débutants qui n'ont pas le réflexe de lire la liste des paquets supprimés.
dixit le captnfab sur le forum df :
* [[https://debian-facile.org/viewtopic.php?pid=159625#p159625]]
==== dist-upgrade Mise à jour complète ====
apt-get dist-upgrade
=== Utilisation ===
Cette commande est moins conservatrice et peux causer des résultats inattendus en raison des possibilités de nouvelles installations ou de suppressions. Ne pas faire l’amalgame de « dist » avec distribution, la terminologie n’a rien n’a voir. La terminologie « full-upgrade » est maintenant plus adaptée et ne porte pas à confusion.
Le **dist-upgrade** de apt-get est très mal nommé car il signifie en fait « mettre à jour le plus important, quitte à virer ce qui gêne ». \\
Il est donc indispensable pour une migration réussie et alors vivement recommandé par debian.
Sinon, dans le cours des mises à jour d'une même stable, il faut lire attentivement ce qui s'écrit avant de valider, quitte à passer d'abord par un upgrade et finir ensuite le travail de mise à jour à la main.
Pour ce qui n'est pas la branche stable, utiliser [[doc:systeme:apt:aptitude|aptitude]] est le mieux.
===== Gestion Avancée EXPERT =====
==== Gestion des paquets "recommends" ====
**apt** a l'habitude de gérer les paquets marqués //**recommandés**// comme des paquets //**dépendants**//.
Si cela est intéressant dans certains cas, c'est parfois pénible puisque cela installe des tas de truc que l'on ne souhaite pas vraiment. \\
Voici la manière de contourner ce petit problème.
=== Ponctuellement ===
apt-get install --no-install-recommends NomDuPaquet
=== Systématiquement ===
En modifiant : [[:doc:systeme:apt:apt.conf | le fichier apt.conf]]
==== Forcer l'installation d'un paquet ====
Pour installer un paquet d'une source présente dans [[:doc:systeme:apt:pinning | Le fichier preferences]] mais non prioritaire, utiliser l'option **-t /branche//>**.
**Par exemple :**
Depuis une installation **stable** prioritaire forcer un paquet des **backports** :
apt-get -t stretch-backports install le_nom_du_paquet
==== Bloquer la mise à jour d'un paquet ====
Modifier le fichier [[doc:systeme:apt:pinning|/etc/apt/preferences]] (si le fichier n'existe pas, le créer) pour y insérer les lignes suivantes:
Package: nom_du_paquet
Pin: version du paquet à conserver
Pin-priority: 1001
La Priorité du Pin à **1001** bloque les futures mises à jour :-)
== Exemple ==
Si par exemple vous souhaitez conserver la version 0.8.8 de [[:doc:media:kaffeine|kaffeine]], vous indiquerez dans **/etc/apt/preferences**
Package: kaffeine
Pin: version 0.8.8
Pin-priority: 1001
Dans le doute, vérifier en tapant la commande **apt-cache policy nom_du_paquet**, pour l'exemple du paquet kaffeine :
apt-cache policy kaffeine
=== Une méthode plus simple ===
Toujours avec le paquet //kaffeine// pris en exemple((Voir [[doc:systeme:apt:dpkg|dpkg]] - [[doc:systeme:grep|grep]] - [[doc:programmation:shell:pipe|pipe]])) :
echo "kaffeine hold" | dpkg --set-selections
Pour vérifier que le paquet n'a plus le statut **install** mais **hold** :
dpkg --get-selections | grep kaffeine
devrait répondre :
kaffeine hold
Pour le débloquer :
echo "kaffeine install" | dpkg --set-selections
[[http://www.mail-archive.com/debian-user-french@lists.debian.org/msg92973.html|Source]]
Remplacer //kaffeine// par le paquet que vous voulez modifier. ;-)
=== Une méthode encore plus simple ===
apt-mark hold kaffeine
==== Télécharger un paquet deb sans l'installer ====
Deux possibilités s'offrent à vous :
apt-get download le_paquet
Dans ce cas le paquet seul sera téléchargé dans votre répertoire courant.
Ou :
apt-get clean
et
apt-get install -d
Ici, le paquet et toutes ses dépendances seront téléchargés dans le répertoire /var/cache/apt/archives/ et vous trouverez le tout au format deb.
==== Snapshot ====
Pour installer la version d'un paquet qui n'est plus présente dans les dépôts on utilise une image des dépôts prise à un moment précis : un **snapshot**.
* [[doc:systeme:apt:debian-snapshot | Installer un paquet depuis un dépôt Snapshot ]]
==== Installer un paquet source ====
Il faut vous assurer au préalable que votre fichier [[:doc:systeme:apt:sources.list | source.list]] soit correctement rempli avec l'adresse des **dépôts** contenant les paquets sources (classiquement les noms de ces dépôts commencent par **deb-src**).
Cette commande vous permettra de //télécharger// les sources d'un paquet debian :
apt-get source le-paquet-source
Par defaut, le paquet est décompressé une fois téléchargé. \\
Si vous souhaitez le garder en *.tar.gz, passez le paramètre **%%-%%-download-only** à la commande ainsi :
apt-get source --download-only le-paquet-source
Si vous voulez compiler directement et automatiquement le paquet après son téléchargement, passez l'option **%%-%%-compile** à la commande :
apt-get source --compile le-paquet-source
Assurez vous au préalable d'avoir installé les librairies nécessaires à la compilation du paquet. Pour ce faire, utilisez la commande :
apt-get build-dep le-paquet
Elle aura pour effet d'installer toutes les dépendances nécessaires à la compilation du paquet.
==== Choisir une image kernel ====
Pour connaître les **noyaux les plus récents** disponibles(([[:doc:systeme:apt:apt-cache]])) en user tapez :
apt-cache search linux-image
Tu copies ton choix dans la liste du (des) noyau(x) qui te convient(viennent). Puis, sous root :
apt-get install linux-image-que-t-a-choisi
* Voir : [[:doc:systeme:grub2:detail | Le grub2]]
//hop là LOL Et c'est //**freddec**// qui le dit !//
=== Exemple ===
Pour rechercher une image linux pour une version 2.6.32... tapez dans un terminal user :
apt-cache search linux-image | grep 32
linux-headers-2.6.32-5-amd64 - Header files for Linux 2.6.32-5-amd64
linux-headers-2.6.32-5-openvz-amd64 - Header files for Linux 2.6.32-5-openvz-amd64
linux-headers-2.6.32-5-vserver-amd64 - Header files for Linux 2.6.32-5-vserver-amd64
linux-headers-2.6.32-5-xen-amd64 - Header files for Linux 2.6.32-5-xen-amd64
linux-image-2.6.32-5-amd64-dbg - Debugging infos for Linux 2.6.32-5-amd64
linux-image-2.6.32-5-amd64 - Linux 2.6.32 for 64-bit PCs
linux-image-2.6.32-5-openvz-amd64-dbg - Debugging infos for Linux 2.6.32-5-openvz-amd64
linux-image-2.6.32-5-openvz-amd64 - Linux 2.6.32 for 64-bit PCs, OpenVZ support
linux-image-2.6.32-5-vserver-amd64-dbg - Debugging infos for Linux 2.6.32-5-vserver-amd64
linux-image-2.6.32-5-vserver-amd64 - Linux 2.6.32 for 64-bit PCs, Linux-VServer support
linux-image-2.6.32-5-xen-amd64-dbg - Debugging infos for Linux 2.6.32-5-xen-amd64
linux-image-2.6.32-5-xen-amd64 - Linux 2.6.32 for 64-bit PCs, Xen dom0 support
nvidia-kernel-2.6.32-5-amd64 - NVIDIA binary kernel module for Linux 2.6.32-5-amd64
nvidia-kernel-2.6.32-5-vserver-amd64 - NVIDIA binary kernel module for Linux 2.6.32-5-vserver-amd64
Ici, j'ai utilisé la commande linux [[:doc:systeme:grep | grep]] pour selectionner la version **32**. \\
Et nous installerons la version :
linux-image-2.6.32-5-amd64
//Merci à //**bestel74**// d'avoir aidé à la création de cet exemple sur le forum df ici// :
* http://debian-facile.org/forum/viewtopic.php?pid=24029#p24029