# Pkgsrc

pkgsrc est un gestionnaire de paquets portable pour les systèmes d'exploitation de type Unix. C'est le gestionnaire de paquets par défaut pour NetBSD, SmartOS et Minix 3.

## Présentation

Une des particularités de pkgsrc est d'être portable et de permettre de créer des paquets binaires pour 23 systèmes d'exploitation différents dont la liste est donnée dans #Plateformes supportées.
pkgsrc contient actuellement plus de 26 000 paquets qui permettent de fournir des logiciels open source parmi les plus populaires.
pkgsrc est principalement basé sur l'utilisation d'un dérivé de NetBSD make et utilise un ensemble de fichiers appelés makefile pour construire de manière portable un paquet binaire à partir des sources téléchargés.

### Installation de paquets

Il existe plusieurs façons d'installer des programmes à l'aide de pkgsrc :
* Un utilitaire bootstrap contient un ensemble de paquets qui sont construits pour permettre de compiler les logiciels à partir des sources.
* Des paquets binaires peuvent être installés depuis une source locale ou distante via les outils pkg_add et pkg_delete.
* Un utilitaire de haut niveau nommé pkgin existe également et est conçu pour automatiser l'installation, la suppression et la mise à jour des paquets binaires d'une manière similaire à l'Advanced Packaging Tool de Debian.

### Structuration d'un paquet

Un paquet est structuré avec un ensemble de fichiers dont notamment :
* DESCR qui est un fichier texte décrivant le logiciel
* distinfo qui contient les sommes de contrôle des fichiers source nécessaires à la construction du paquet
* PLIST qui contient la liste des fichiers installés par le paquet
* Makefile qui définit les variables nécessaires à la construction et l'installation du paquet

## Plateformes supportées

| Plateforme | Date d'ajout |
| NetBSD | octobre 1997 |
| Solaris | mars 1999 |
| Linux | juin 1999 |
| Darwin et macOS | octobre 2001 |
| FreeBSD | novembre 2002 |
| OpenBSD | novembre 2002 |
| IRIX | décembre 2002 |
| BSD/OS | décembre 2003 |
| AIX | décembre 2003 |
| Interix (pour Windows NT) | mars 2004 |
| DragonFly BSD | octobre 2004 |
| OSF/1 | novembre 2004 |
| HP-UX | avril 2007 |
| QNX | octobre 2007 |
| Haïku | janvier 2010 |
| MINIX3 | août 2010 |
| MirBSD | janvier 2011 |
| illumos et SmartOS | février 2011 |
| Cygwin | mai 2013 |
| GNU/kFreeBSD | juillet 2013 |
| Bitrig | juin 2015 |

## Histoire

Le 3 octobre 1997, les développeurs Alistair Crooks et Hubert Feyrer créent pkgsrc en se basant sur le catalogue de logiciels portés de FreeBSD. Leur objectif était de proposer un gestionnaire de paquets pour prendre en charge la collection des paquets NetBSD. Il a été officiellement publié dans NetBSD 1.3 le 4 janvier 1998. DragonFly BSD a utilisé pkgsrc comme système de paquets officiel de la version 1.4 en 2006 jusqu'à la version 3.4 en 2013$^,$.
En 1999, la prise en charge par pkgsrc de Solaris a été ajoutée, suivie par la prise en charge d'autres systèmes d'exploitation.
Le 12 septembre 2017, une politique de message de validation adaptée au gestionnaire de version décentralisée a été établie par le projet.
De 2004 à 2019 s'est tenue la conférence technique pkgsrcCon dont l'objectif était de se faire rencontrer les développeurs, les contributeurs et les utilisateurs de pkgsrc.

## Paquets

La Fondation NetBSD fournit des paquets binaires officiels prédéfinis pour plusieurs combinaisons de versions de NetBSD, d'architecture et de versions de pkgsrc$^,$.
Plusieurs fournisseurs proposent des paquets binaires prédéfinis pour certaines plateformes :
* Depuis 2014 et jusqu'en 2022, l'entreprise Joyent a fourni des paquets binaires pour SmartOS / illumos, macOS et Red Hat Enterprise Linux. Les paquets étaient fournis sur une base continue à partir du tronc (HEAD, dans la terminologie CVS) de pkgsrc, avec des mises à jour très régulières. De plus, des versions stables trimestrielles étaient également fournis pour la version SmartOS de Joyent.
* Depuis 2017, L'Université du Wisconsin-Milwaukee fournit des paquets binaires pour NetBSD, Red Hat Enterprise Linux / CentOS et Darwin / macOS$^,$. Les paquets sont uniquement construits à partir des versions trimestrielles de pkgsrc, ce qui facilite leur utilisation dans des expériences à long terme, où la stabilité et la reproductibilité des résultats sont essentielles.
* Depuis 2022, c'est MNX Cloud qui a pris la suite de Joyent pour fournir des paquets binaires pour SmartOS / Illumos, macOS, Linux et NetBSD.
L'outil pbulk permet d'automatiser la construction de l'ensemble (ou d'un sous-ensemble défini) de la collection des paquets pour produire une distribution de paquets binaires$^,$.