[[raspberrypi:linux:raspilinux|{{ :iconemaison.jpg?nolink&25|Sommaire Raspberry Pi sous Linux}}]]
===== Raspberry Pi - La gestion de paquets avec apt =====
[Mise à jour le 5/8/2020]
* **Sources**
* Site raspberri.org : APT
* Wiki ubuntu-fr : Gestionnaire de paquets
----
==== 1. Généralités ====
Le gestionnaire de paquets est un système qui permet d'installer des logiciels, de les maintenir à jour et de les désinstaller. Son travail est de n'utiliser que des éléments compatibles entre eux, les installations sans utiliser de gestionnaire de paquets sont donc déconseillées.
Un paquet est un fichier contenant un ou plusieurs programmes, des fichiers de données complémentaires, des exemples, des documentations ou des scripts. Il embarque également des informations importantes pour la distribution comme la plateforme concernée, la liste d'autres paquets nécessaires à son fonctionnement, un journal des changements faits, etc.
La **gestion de paquets** est le coeur et la raison d'être d'une distribution GNU/Linux.Dans le cas de Raspbian, les paquets se trouvent sur raspbian.org et plus précisément ici.
==== 2. APT ====
{{ :raspberrypi:linux:aptget.jpg?nolink&150|}}
Sous Debian (Raspbian), le moyen le plus simple de gérer l’**installation**, la **mise à niveau** et la **suppression de logiciels** consiste à utiliser APT (**Advanced Packaging Tool**). APT est un projet relativement vaste, qui prévoyait à l'origine une interface graphique. Il repose sur une bibliothèque contenant le cœur de l'application. apt-get est la première interface, en ligne de commande, développée dans le cadre du projet.
**apt** est une deuxième interface en ligne de commande fournie par APT qui corrige quelques erreurs de conception de **apt-get**.
Pour installer ou supprimer des paquets (logiciels), vous devez disposer d'autorisations d'utilisateur **root**. En savoir plus sur les utilisateurs et root.
Pour installer de nouveaux paquets ou mettre à jour des paquets existants, vous avez besoin d'une connexion Internet.
Notez que l'installation d'un paquet peut utiliser beaucoup d'espace sur une carte SD. Il faut donc **surveiller de près** l'utilisation du disque et utiliser une carte SD de taille appropriée.
Notez également qu'un verrou est appliqué lors de l'installation du logiciel, **on ne peut donc pas installer plusieurs paquets en même temps**.
===2.1 Les sources des paquets ===
APT conserve une liste des sources de paquets sur le Raspberry Pi dans un fichier **/etc/apt/sources.list**. Avant d'installer le paquet, il est nécessaire de mettre à jour le fichier //sources.list// avec la commande **update** puis de mettre à jour les paquets avec la commande **upgrade**.
===2.2 Mettre à jour la liste des paquets ===
sudo apt update
sudo apt list --upgradable # pour voir la liste des paquets à mettre à jour
===2.3 Mettre à jour les paquets ===
sudo apt upgrade
Il existe aussi la commande **dist-upgrade** qui se différencie de upgrade par le fait que, si nécessaire, le système peut retirer des paquets présents et en installer des nouveaux. Ceci arrive en cas de changement de dépendance ou de nom de paquet.
sudo apt dist-upgrade
Pour maintenir son système à jour de façon équilibré, on enchaîne généralement **update**, **upgrade** et **dist-upgrade**.
===2.4 Rechercher un paquet sur le web ===
Il est possible de rechercher, dans les archives, un paquet avec un mot clé donné :
apt-cache search
===2.5 Authentifier les paquets ===
Les paquets sont authentifiés avec des clés. **apt-key** est l'utilitaire de gestion des clés d'APT. Il gère les clés dont se sert apt pour authentifier les paquets. Les paquets authentifiés par ces clés seront réputés fiables.
# Exemple : Avant de pouvoir installer InfluxDB sur Raspbian, il est nécessaire d’indiquer
# au système ou se trouvent les clés du dépôts du projet InfluxDB
curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add
===2.6 Installer un paquet ===
sudo apt install
En tapant cette commande, l'utilisateur est informé de la quantité d'espace disque occupée par le paquet et une demande de confirmation de son installation lui est proposée. Entrer O (ou appuyer simplement sur Entrée, car oui est l’action par défaut) autorisera l’installation. Cela peut être contourné en ajoutant le drapeau -y à la commande :
sudo apt install -y
===2.7 Utiliser un paquet préalablement installé===
//Exemple// : le paquet **tree** (outil en ligne de commande qui permet de visualiser la structure du répertoire en cours et tout son contenu)
tree
..
├── hello.py
├── games
│ ├── asteroids.py
│ ├── pacman.py
│ ├── README.txt
│ └── tetris.py
Note : **man** tree donne des informations sur la commande tree. **whereis** tree indique la position de tree
===2.8 Obtenir des informations sur un paquet ===
On peut afficher plus d'informations sur un paquet avant de l'installer avec :
apt-cache show
===2.9 Afficher la liste des paquets installés ===
La liste des "nombreux" paquets installés (plus de mille) se fait avec la commande dpkg.
dpkg -l
Pour limiter l'affichage aux lignes contenant un texte spécifié, on redirigera les données avec **|** vers le filtre grep.
dpkg -l | grep # | est le pipe
===2.10 Mettre à jour des paquets ===
* **Tous les paquets**
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
* **Un seul paquet**
sudo apt install
===2.11 Désinstaller un paquet ===
* **Retirer**
Un paquet peut être désinstallé avec l'opération **remove**. Cependant, ses fichiers de configuration sont conservés afin d'accélérer une éventuelle réinstallation.
sudo apt remove
L'utilisateur est invité à confirmer la suppression. Encore une fois, le drapeau **-y** confirmera automatiquement.
* **Purger**
On peut également choisir de **supprimer complètement** le paquet et ses fichiers de configuration avec **apt purge**.
sudo apt purge