# Gestionnaire de paquets

Un gestionnaire de paquets est un ou plusieurs outils automatisant le processus d'installation, désinstallation, mise à jour de logiciels installés sur un système informatique. Le terme est surtout utilisé pour les systèmes d'exploitation basés sur Unix, tels GNU/Linux. Ces derniers utilisent dans leur majorité un gestionnaire de paquets, souvent fourni en standard. Ils permettent de mettre à disposition simplement des milliers de paquetages lors d'une installation standard.

## Définitions

Un paquet est une archive comprenant les fichiers informatiques, les informations et procédures nécessaires à l'installation d'un logiciel sur un système d'exploitation au sein d'un agrégat logiciel, en s'assurant de la cohérence fonctionnelle du système ainsi modifié.
Le gestionnaire de paquets permet d'effectuer différentes opérations sur les paquets disponibles :
* Installation, mise à jour, et désinstallation ;
* Utilisation des paquets provenant de supports variés (CD d'installation, dépôts sur internet, partage réseau…) ;
* Vérification des sommes de contrôle de chaque paquet récupéré pour en vérifier l'intégrité ;
* Vérification des dépendances logicielles afin d'obtenir une version fonctionnelle d'un paquetage ;

## Exemples

Sur les systèmes d'exploitation GNU/Linux, BSD, macOS et autres UNIX, il existe de nombreux logiciels gestionnaires de paquets.
On peut citer notamment :
* Homebrew, pkg (macOS) ;
* dpkg (Debian, Ubuntu et autres dérivées) ;
* RPM (Red Hat, Fedora, Mageia et openSUSE, etc.) ;
* Pacman (Arch Linux, Manjaro, etc.) ;
* yarn (alternative open source à npm).

### Gestionnaires de téléchargement et de résolution de dépendances

Il existe également de nombreux gestionnaires de téléchargement et de résolution de dépendances de paquetages tels que APT pour Debian et Ubuntu, urpmi de Mageia, DNF de Yellow Dog et Fedora, ZYpp d'openSUSE.

### Interfaces graphiques

Synaptic est l'outil graphique de APT, GURPMI est l'outil graphique de urpmi.

### Gestionnaires hybrides

Le système de ports BSD permet d'installer des logiciels à partir d'une collection sous forme de sources.
L'outil emerge de la distribution Linux Gentoo est un gestionnaire de paquetages, de téléchargement, de résolution de dépendances et de compilation permettant d'installer des logiciels à partir des sources. Il repose sur portage, inspiré des ports de FreeBSD.

## Schéma

Gestionnaire de paquets des principales distributions GNU/Linux et BSD :
| Distribution GNU/Linux | Debian/ Ubuntu | OpenMandriva Lx/ Mageia/ ROSA Linux | Fedora | Arch Linux | OpenSUSE | Gentoo | FreeBSD/ OpenBSD/ NetBSD |
| Interface graphique par défaut | GNOME Logiciels/ Aptitude/ Synaptic | GURPMI/ rpmdrake | GNOME Logiciels | pamac, octopi | YaST | Portage | pkgfe/ portsman/ portbrowser/ bpm/ barry/ kports/ (FreeBSD) |
| Gestionnaire de téléchargements et résolveur de dépendances | APT | urpmi/ urpme/urpmq | DNF | Pacman | ZYpp | emerge | ports |
| Installeur | dpkg | RPM | RPM | Pacman | RPM | emerge | ports |
| Format de paquet | .deb | .rpm | .rpm | .tar.xx | .rpm | ebuild | .tar.xx |

## PackageKit ou la volonté d'unifier GNU/Linux

Il y a une forte diversité dans les gestionnaires de paquets, les gestionnaires de téléchargement, et les interfaces qui en résultent. C'est la raison pour laquelle PackageKit a été créé. Celui-ci a pour objectif de proposer une interface graphique unifiée aux différents gestionnaires de paquets, afin de disposer d'une interface commune à toutes les distributions GNU/Linux. Il est déjà disponible sous Fedora, openSUSE ou encore Mandriva. Ubuntu ne compte pas l'intégrer prochainement.

## Gestionnaires de paquets sous Windows

Depuis la version Windows 8, Microsoft a inclus dans son système d'exploitation le Microsoft Store qui permet de télécharger et d'installer des paquets logiciels de type APPX.
Sur le système d'exploitation Microsoft Windows, il est possible d'utiliser le gestionnaire de paquets Package Manager (inclus), appelé également pkgmgr.exe (déprécié, utiliser DISM.exe). Des logiciels libres existent également, tels que Chocolatey (en) ou WAPT.

## Gestionnaire universel de paquets

L'industrie du logiciel est en perpétuelle évolution. Les gestionnaires d'objets binaires n'échappent pas à la règle et se dirigent petit à petit vers des gestionnaires universel de paquets. Ces gestionnaires de paquets visent à standardiser la façon qu'ont les entreprises d'accéder et d'utiliser tous les paquets dont elles ont besoin dans leur processus de développement. Ils fournissent des outils de sécurité et d'analyse de compatibilité des types d'artéfacts. Les gestionnaires universels de paquets ont une position centrale dans la chaîne d'outils de développement (systèmes de compilation, empaqueteurs, outils de documentation, d'analyse de code, de livraison...) exploitée par les organisations.
Quelques gestionnaires universels de paquets connus :
* Apache Archiva
* Jfrog Artifactory
* Inedo, ProGet
* Sonatype Nexus

## Gestionnaire de paquets de langage de programmation

Les gestionnaires de paquets de langage de programmation permettent d’installer des paquets pour le langage pour du développement logiciel ou pour un usage final.
Liste de langages de programmation et leurs gestionnaires de paquets respectifs :
* C, C++ : Conan
* D : dub
* C#, F#, Visual Basic .NET : NuGet
* Fortran : fpm (Fortran Package Manager)
* Go : get, dep
* Haskell : Cabal
* Java : Maven, Gradle
* Lua : LuaRocks (en)
* Node.js, Deno, JavaScript, TypeScript : npm, yarn, ied, pnpm, npmd, Deno
* Perl : Perl package manager (en)
* PHP : Composer, PEAR
* Python : pip, Conda (en), poetry, pipenv, uv
* Ruby : RubyGems, bundler
* Rust : Cargo