Packaging
#########

Principes communs
=================

Tout package doit respecter les principes suivants :

* Nom des packages : ``vitam-<id>`` du package
* Version du package : Numéro de "release" du projet Vitam

Les dossiers (ainsi que les droits associés) compris dans les packages doivent respecter les principes dictés dans :doc:`la section dédiée <02-principles-users-rights>`.

.. note::

	Les limitations associés au format de packaging choisi (packaging natif, rpm / deb selon l'OS cible) sont :

	* L'instanciation d'une seule instance d'un même moteur par machine (il n'est ainsi pas possible d'installer 2 moteurs d'exécution sur le même OS) ;
	* La redondance de certains contenus dans les packages (ex: les librairies Java sont embarquées dans les packages, et non tirées dans les dépendances de package)

Les fichiers de configuration sont gérés par l'outil de déploiement de manière externe aux packages ; ils ne sont pas inclus dans les packages.


Les composants de la solution logicielle :term:`VITAM` sont tous disponibles sous forme de packages natifs aux distributions supportées (rpm pour AlmaLinux 9, deb pour Debian 12 (bookworm)) ; ceci inclut notamment :

* L'usage des pré-requis (au sens Require ou Depends) nativement inclus dans la distribution concernée ;
* L'arborescence des répertoires OS de la distribution concernée ;
* L'usage du système de démarrage systemd.

.. note:: Seuls les paquets binaires cibles sont disponibles ; les paquets sources (SRPMS par exemple) ne seront pas fournis, les sources étant disponibles dans le dépôt git public.

Dépôts
======

.. note:: La typologie des dépôts présentée ci-dessous a notamment pour but de permettre l'installation de VITAM sur des environnements présentant un accès restreint à Internet (i.e. limité aux miroirs des dépôts d'update standard des distributions linux). Par conséquent, aucun dépôt externe autre que les dépôts natifs des distributions Linux n'est requis.

L'installation de VITAM s'appuie sur 2 dépôts internes différents :

    - ``vitam-product`` : ce dépôt héberge les packages des logiciels développés dans le cadre de VITAM ; ces packages sont maintenus par VITAM, et les licences d'utilisations associées sont celles de VITAM.
    - ``vitam-external`` : ce dépôt héberge les packages des logiciels requis par l'installation de VITAM mais non présents dans les dépôts natifs de la distribution. Ces packages sont fournis par VITAM, mais sont redistribués sans modifications de la part de VITAM. Ils ne sont en particulier pas maintenus par VITAM, et les licences d'utilisation restent celles des packages originaux.

Le contenu de ces dépôts est présent dans la distribution de la solution VITAM.

.. note:: Un dépôt supplémentaire, pour les *griffins*, permet de déployer également les briques logicielles relatives à la préservation.

.. note:: La création, configuration et initialisation des dépôts internes à partir des packages livrés est un pré-requis à l'installation de VITAM ; ces tâches ne sont pas incluses dans l'installation de la solution logicielle afin de pouvoir respecter la manière d'héberger des dépôts natifs de distributions Linux qui varie grandement selon les différents gestionnaires d'infrastructure.

.. tip:: En outre, le programme VITAM mettra à disposition un miroir externe accessible sur Internet comportant les paquets à jour pour les dépôts internes mentionnés ci-dessus.

En plus des paquets logiciels livrés, l'installation de la solution VITAM requiert des dépôts nativement disponibles dans les distributions cibles.

AlmaLinux
---------

VITAM s'appuie sur les dépôts suivants :

* AlmaLinux 9 (Base, Extras) : il s'agit des dépôts standard de la distribution
* EPEL 9 (Extra Packages for Enterprise Linux) : il s'agit d'un dépôt maintenu par Fedora et fournissant un ensemble de packages complétant ceux de RHEL/AlmaLinux

Debian
------

VITAM s'appuie sur les dépôts suivants :

* Debian bookworm (dépôts main dans bookworm, bookworm-updates et security) : il s'agit des dépôts standard de la distribution
* bookworm-backports : il s'agit d'un backport de paquets plus récents non disponibles au moment de la publication de la version Debian

Prise en compte de la configuration dans le packaging
=====================================================

AlmaLinux
---------

Conformément aux usages RPM de RedHat, les packages ne contiennent pas dans les pré/post action d'arrêt/démarrage/redémarrage de services.

.. note:: La configuration de démarrage des services et leur démarrage (a minima initial) est de la responsabilité de l'outillage de déploiement.

Contrairement aux usages de RPM, les fichiers de configuration ne seront pas gérés dans RPM. En effet, les fichiers de configuration seront instanciés par l'outil de déploiement. Pour éviter la génération de fichier .rpmnew ou .rpmsave, il ne sera pas utilisé la directive %config.

.. caution:: À ce jour, les fichiers de configuration ne sont pas listés dans les fichiers de configuration des fichiers RPM ; par conséquent, ils n'apparaissent pas dans le résultats de commandes telles que ``rpm -ql``.

..
    A garder en tête :
    * Présenter les fichiers de configuration dans les fichiers RPM sous forme de ghost. Cette fonctionnalité permet de gérer les fichiers "comme des coquilles vides" dans la base RPM (notamment pour rpm -ql) mais qui ne sont pas livrés en tant que tel dans le RPM . `(ghost_définition)`_

Debian
------

Tout comme pour AlmaLinux, les paquets Debian n'intègrent pas les fichiers de configuration, et ne sont donc pas connus de dpkg ; en outre, ils ne s'intègrent pas dans debconf.

.. _`(ghost_définition)`: http://www.rpm.org/max-rpm-snapshot/s1-rpm-inside-files-list-directives.html#S3-RPM-INSIDE-FLIST-GHOST-DIRECTIVE
