PALI / COMPATIBILITÉ DES ARCHIVES DEBIAN
Contrôle du 26 octobre 2026, lecture seule des sources et index publics.

Périmètre
- PALI Debian 8 v1.26, original palid8-archive-20201028.sh.txt.
- PALI Debian 9 v2.3, original paliv9-archive-20191113.sh.txt.
- Architecture contrôlée : amd64, incluant les paquets Architecture: all.
- Aucun installateur PALI, paquet .deb ou service ancien n'a été exécuté.
- Aucun fichier source PALI n'a été modifié par ce contrôle.
- La disponibilité d'un paquet ne prouve pas une installation complète fonctionnelle.

1. DÉPÔTS OFFICIELS ENCORE ACCESSIBLES
Debian documente les anciennes distributions à https://www.debian.org/distrib/archive
Répertoire officiel : https://archive.debian.org/debian/dists/

Les six dépôts ci-dessous répondent en HTTPS avec Release, Release.gpg et index main amd64 :
https://archive.debian.org/debian/dists/jessie/
https://archive.debian.org/debian/dists/jessie-backports/
https://archive.debian.org/debian-security/dists/jessie/updates/
https://archive.debian.org/debian/dists/stretch/
https://archive.debian.org/debian/dists/stretch-backports/
https://archive.debian.org/debian-security/dists/stretch/updates/

Les composants contrib et non-free ont aussi été reçus pour Jessie/Stretch/base/backports.
Les quatorze Packages.gz reçus correspondent exactement à la taille et au SHA256
annoncés dans leur fichier Release. Données et preuves : archive-evidence/.
Les suites jessie-updates et stretch-updates sont absentes du répertoire dists :
ne pas les reprendre dans la restauration. Ne pas confondre avec les suites
jessie/updates et stretch/updates sous debian-security, qui existent.
Les scripts d'origine omettent main sur leurs lignes security : corriger.

Forme des sources dédiées, pour chaque génération séparément :
  deb https://archive.debian.org/debian jessie main contrib non-free
  deb https://archive.debian.org/debian-security jessie/updates main contrib non-free
  deb https://archive.debian.org/debian jessie-backports main contrib non-free
ou stretch aux trois emplacements correspondants.
Ne pas mélanger les distributions. Pas besoin de deb-src pour installer les paquets.
HTTPS demande apt-transport-https sur ces deux versions anciennes d'APT et des CA
utilisables. Précontrôler ces prérequis avant de modifier la machine ; ne jamais
contourner une erreur TLS avec une option désactivant la vérification.

2. VALIDITÉ TEMPORELLE ET AUTHENTIFICATION
Référence Stretch : https://manpages.debian.org/stretch/apt/sources.list.5.en.html
Référence Jessie : https://manpages.debian.org/jessie/apt/apt.conf.5.en.html
Clés officielles : https://ftp-master.debian.org/keys.html

Seul le Release jessie-backports reçu comporte un Valid-Until expiré :
Tue, 19 Feb 2019 20:25:43 UTC. Les cinq autres Release n'en comportent pas.
Pour APT 1.4 (Stretch), check-valid-until=no existe par entrée. Les options
inconnues sont ignorées, donc ne pas présumer que ce réglage fonctionne sous
APT 1.0 (Jessie). Si backports Jessie est nécessaire, confiner
-o Acquire::Check-Valid-Until=false à l'invocation qui ne lit QUE la liste dédiée
aux archives, sans fichier permanent global désactivant cette protection.
Cet ajustement est l'exception de fraîcheur prévue pour les archives historiques ;
il ne désactive ni signature ni empreinte.

État observé avec gpgv et les trousseaux Debian officiel courant + removed locaux :
- Jessie main/security/backports : VALIDSIG mathématiques mais toutes les clés
  de signature sont expirées (EXPKEYSIG). gpgv retourne pourtant 0 : ne pas
  traiter son seul code retour comme preuve qu'APT historique acceptera.
- Stretch main : signatures GOOD de Buster et Bullseye, plus anciennes expirées.
- Stretch security : signature GOOD Buster, plus ancienne Stretch expirée.
- Stretch backports : signatures GOOD Buster et Bullseye.
Un système Stretch resté avec un trousseau ancien peut manquer les clés récentes.

Contrôle supplémentaire effectué avec APT 3.0.3 hôte, configurations/cache/listes
isolés sous archive-evidence/apt-isolated et dépôts file: copiés depuis ces preuves :
les six dépôts sont acceptés sans option trusted/allow-insecure/allow-unauthenticated,
avec la seule dérogation Valid-Until limitée pour jessie-backports.
Le vérificateur utilisé ici est sqv : ce résultat NE prouve PAS le comportement
d'APT 1.0/1.4 et gpgv sur les OS cibles. Contrôle négatif : modification volontaire
d'une copie locale du Release Jessie => refus explicite de signature, code 100.
Les preuves sont results-clean-config.json et jessie-tampered-control/result.json.
La première tentative isolée conservait certains index/hook de la configuration
hôte ; elle n'est pas retenue comme résultat. La seconde utilise APT_CONFIG pour
isoler également la lecture des fichiers de configuration, sans installation.

Conclusion de restauration : conserver strictement la validation APT. Sur erreur
NO_PUBKEY/EXPKEYSIG/BADSIG/TLS, arrêter avec diagnostic AVANT installation. Une mise
à jour de clés vérifiées peut résoudre une clé absente ; elle ne garantit pas de
résoudre l'expiration sous APT ancien. Ne pas proposer trusted=yes,
--allow-unauthenticated, AllowInsecureRepositories, retour artificiel de l'horloge,
ni modification de dates de clés comme solution automatique.

3. PAQUETS RÉELS DANS LES INDEX
Preuve détaillée pour chaque nom demandé, version, Provides, Depends et Filename :
archive-evidence/packages-audit.json ; métadonnées supplémentaires dans
archive-evidence/compat-package-records.json.

Debian 8 v1.26 :
- phantomJS n'existe pas sous cette casse. phantomjs existe seulement dans
  jessie-backports, version 2.1.1+dfsg-2~bpo8+1. Déplacer vers le lot backports
  explicite ou laisser en option documentée ; le simple renommage peut ne pas
  suffire selon le pinning.
- Imagemagick -> imagemagick (main/security).
- Tous les autres noms des variables need_packages/packages/backport_packages
  existent dans les index ou via Provides, y compris libapache2-mod-fastcgi
  dans non-free, php5-sqlite et librsync1.
- php-soap 0.13.0-1 et php-calendar 0.5.5-2 existent réellement : ce sont des
  bibliothèques PEAR, pas les mêmes paquets/extensions que sur les Debian modernes.
  Ne pas les retirer sous le prétexte qu'ils n'existent pas.
- Dernier PHP5/FPM vu : 5.6.40+dfsg-0+deb8u12 (security).
- mysql-server/mysql-client -> MySQL 5.5.62-0+deb8u1 (security).
- python-certbot-apache 0.10.2-1~bpo8+1 existe dans backports. Sa présence n'établit
  pas sa compatibilité actuelle ACME/Let's Encrypt. Pas de validation ACME réalisée.
- duplicity 0.7.10-1~bpo8+1 est disponible par paquet signé dans backports :
  c'est une possibilité de remplacement du téléchargement/compilation historique
  duplicity-0.7.10.tar.gz. Main propose 0.6.24-1.

Debian 9 v2.3 :
- Tous les noms d'origine des trois variables sont résolus par les index/Provides.
- php7.0-mysqlnd est fourni par php7.0-mysql ; le nom explicite de paquet est préférable.
- php7.0-ssh2 est fourni par php-ssh2, version 1.0+0.13-2.
- php7.0-xsl existe comme paquet de transition et est aussi fourni par php7.0-xml.
- php7.0-common est répété dans la liste d'origine, duplication sans intérêt.
- librsync1 existe ; le remplacer par librsync2 serait une régression ici.
- PHP7.0/FPM : 7.0.33-0+deb9u12 (security).
- mysql-server 5.5.9999+default est un paquet de transition vers default-mysql-server,
  lui-même dépendant de mariadb-server-10.1. Version security : 10.1.48-0+deb9u2.
  Il s'agit donc réellement de MariaDB 10.1, pas d'un serveur MySQL 5.5.
- python-certbot-apache devient un paquet de transition vers python3-certbot-apache,
  version 0.28.0-1~deb9u1 dans main. Pas de promesse de fonctionnement ACME actuel.

4. PHP/FPM ET MYSQL : POINTS DE COHÉRENCE À CONTRÔLER
Le D8 associe php5-fpm et mod_fastcgi : ces paquets existent encore dans ses archives.
Le D9 utilise proxy_fcgi mais installe aussi libapache2-mod-php7.0 et mod_fcgid.
Pour la variante FPM, éviter l'activation concurrente de mod_php/préfork et event ;
la configuration doit décider explicitement du mode choisi avant le redémarrage.
Le D9 remplace le pool www par /run/php/www.sock alors qu'a2enconf php7.0-fpm
active la configuration fournie par le paquet. Vérifier la cohérence des sockets
pour tous les vhosts (les vhosts applicatifs et phpMyAdmin définissent un handler
explicite, la configuration générale peut rester sur la socket par défaut).
La mise à jour directe de mysql.user.password dans D9 ne justifie pas d'affirmer
que l'authentification root MariaDB sera par mot de passe : conserver le socket
local et valider les opérations SQL réelles dans une VM avant de prétendre au test.
Ne pas transposer les réglages MySQL 5.5/MariaDB10.1 à un serveur récent.

5. INSTALLATEURS TIERS NON VALIDÉS PAR CES ARCHIVES
Les pipes distants Composer/NodeSource, téléchargements Drush/WP-CLI/DrupalConsole,
Webmin, npm/grunt n'ont pas été validés par ces index. Des URL encore actives peuvent
livrer des versions incompatibles avec PHP5.6/PHP7.0 ou du code non figé.
Ne pas remplacer automatiquement Node7 par le paquet courant d'archive :
Jessie : Node0.10 main, 4.8 backports ; Stretch : 4.8 main, 8.11 backports.
Cela change le comportement. Les options désactivées doivent être documentées.

6. CAPACITÉ DE TEST LOCALE ET LIMITES
Présents : gpgv, gpg, dpkg-deb, apt-get3.0.3.
Absents du PATH : docker, podman, qemu-system-x86_64, qemu-img, debootstrap,
systemd-nspawn, lxc-start. Aucun de ces outils n'a été installé.
Aucun système Jessie/Stretch complet n'a été lancé et aucun service ancien testé.
Il reste à valider une installation complète dans des VM jetables isolées, une
par génération, incluant signatures APT natives, paquets, SQL, apachectl configtest,
php-fpm test configuration, sockets, HTTP/PHP, permissions et arrêt sur erreur.
Ce rapport établit les dépôts, les index, les noms et certaines incohérences ;
il ne certifie pas la sécurité ou l'exploitabilité en production d'un OS obsolète.

7. CONTRÔLES COMPLÉMENTAIRES (MÊME SESSION)
APT neuf et résolution simulée :
- Nouveaux répertoires, listes et caches initialement vides, statut dpkg vide,
  configuration APT_CONFIG sans fichiers de configuration hôte.
- Dépôts Jessie/Stretch avec tous composants base/backports et security main.
- apt-get update = 0 pour chacune des deux générations, stderr vide.
- Contrôle négatif indépendant : Release Jessie modifié => refus sqv code 100.
- Preuves : archive-evidence/apt-fresh/results.json et
  archive-evidence/apt-isolated/jessie-tampered-control/result.json.

Simulation apt-get --simulate --no-install-recommends install uniquement :
- Liste historique D9 complète : résolution réussie (pas validation des services).
- Liste D8 avec casse corrigée mais certbot mélangé au lot général : conflit
  Python/main-backports. L'original installait ce lot séparément avec -t.
- Hypothèse core FPM (sans certbot, sans mod_php/metapaquets php5/php7.0 et sans
  mod_fcgid) : résolution réussie Jessie et Stretch. Jessie : 475 paquets ;
  Stretch : 488 paquets depuis un statut vide. Aucun mod_php tiré implicitement.
  Source : archive-evidence/apt-fresh/simulation-core-fpm.json.
Il s'agit d'une hypothèse auditée, pas encore de la liste finale des variantes
restaurées, qui n'était pas écrite lors de ce contrôle. Aucun paquet installé.

Pure-FTPd : les manuels Jessie et Stretch documentent TLS=3 / -Y3, qui impose
le chiffrement de la session ET des canaux de données. TLS=2 n'impose pas ce
second point. Références primaires :
https://manpages.debian.org/jessie/pure-ftpd-common/pure-ftpd.8.en.html
https://manpages.debian.org/stretch/pure-ftpd-common/pure-ftpd.8.en.html

Trousseau utilisé dans les simulations : concaténation des fichiers système
/usr/share/keyrings/debian-archive-keyring.gpg et
/usr/share/keyrings/debian-archive-removed-keys.gpg, paquet installé
 debian-archive-keyring 2025.1.
Fichier de preuve : archive-evidence/apt-isolated/archive-keys.gpg
Taille : 128554 octets
SHA256 : ca5ed6d2894a2197eac792c2ce5ad4224402481b8764fc4a56e42f504a1284a9
Ce trousseau a servi aux contrôles ; l'intégration dans les outils restaurés
et sa provenance doivent être consignées séparément si livré.

8. LISTES EXACTES DES VARIANTES RESTAURÉES
Après écriture de restored/palid8.sh et restored/paliv9.sh : lecture des variables
packages/backport_packages, sans source ni exécution des scripts, puis simulations
APT avec recommandations par défaut comme l'installation prévue :
- Jessie packages : code 0, 606 paquets calculés depuis un statut vide.
- Jessie backport_packages (phantomjs duplicity, cible -t jessie-backports) :
  code 0, 286 paquets calculés depuis un statut vide.
- Stretch packages : code 0, 616 paquets calculés depuis un statut vide.
- Aucune sélection de mod_php, FPM bien sélectionné dans les deux lots principaux.
Chaque phase est simulée depuis un statut vide, ce qui correspond à leurs
préchargements indépendants. Ce ne sont ni des installations ni une simulation
d'exécution des scripts/configurations de services. Les nombres ne s'additionnent
pas car de nombreuses dépendances sont communes.
Empreintes précises des scripts testés, arguments et sorties :
archive-evidence/apt-fresh/simulation-restored-exact.json.

Le paquet debian-archive-keyring 2025.1 installé passe aussi dpkg --verify
(code 0, aucune divergence signalée). Cette vérification compare aux métadonnées
locales du paquet installé ; ce n'est pas une nouvelle validation indépendante
de sa chaîne de distribution.


9. INSPECTION PASSIVE DE PAQUETS, CORRECTIONS D’ORDONNANCEMENT
Les .deb officiels de phpMyAdmin/dbconfig-common Jessie et Stretch, Fail2ban
Jessie et Stretch, mariadb-common et mariadb-server-10.1 Stretch ont été reçus.
Leur taille et SHA256 correspondent aux index déjà contrôlés. Les fichiers de
configuration, code client et maintainer scripts sont lus comme texte avec
dpkg-deb --ctrl-tarfile / --fsys-tarfile ; aucun n’est exécuté ou installé.
Preuves : archive-evidence/package-inspection/{manifest,extra-manifest}.json,
postinst-packages.json et extra-package-records.json.

phpMyAdmin :
- dbconfig-install=true impose un accès SQL pendant postinst pour créer le
  compte et la base. Avec policy-rc.d=101 sur une machine neuve, le serveur
  SQL reste arrêté si on n’organise pas explicitement son démarrage.
- Jessie postinst ligne 56 appelle dbc_go dans un if : l’échec peut être
  journalisé et ne pas arrêter le paquet, donc installation non complète.
- Stretch postinst ligne 56 appelle dbc_go directement, avec set -e ligne 4 :
  l’erreur de configuration peut bloquer dpkg.
- Les variantes relues ensuite installent le cœur sans phpMyAdmin, démarrent
  SQL après écriture de sa configuration, puis installent phpMyAdmin.
  Cela corrige l’ordre démontré par les scripts ; pas d’essai réel de postinst.

Fail2ban :
- Les paquets officiels sont Jessie 0.8.13-1 et Stretch 0.9.6-2.
- Leurs getopt respectifs sont hc:s:p:xdviqV et hc:s:p:xfbdviqV.
- Donc fail2ban-client -t est absent des deux versions et échouerait.
- L’option -d est présente et relit la configuration. Les variantes relues
  utilisent désormais -d avant le lancement des services.

MariaDB Stretch :
- Le fichier officiel 50-server.cnf dit que unix_socket est intégré depuis
  10.0.22-6. Aucune directive plugin-load-add n’est nécessaire pour celui-ci.
- Le postinst mariadb-server-10.1 ligne 103 initialise les bases par
  mysql_install_db --auth-root-authentication-method=socket.
- Un root local connecté par socket est donc cohérent avec une installation
  neuve du paquet archivé. Cela ne prouve pas la disponibilité du service.

10. SIMULATION DES ÉTAPES FINALES ET COUVERTURE DES TÉLÉCHARGEMENTS
Preuves : archive-evidence/apt-fresh/simulation-final-staged.json et
simulation-download-coverage.json. Empreintes des scripts au moment du test
incluses. Listes exactes parsées sans exécuter les scripts.
APT 3.0.3 isolé, index officiels déjà reçus ; statut dpkg initialement vide.
Entre étapes, un statut synthétique a été reconstruit à partir des paquets et
versions choisis par le simulateur, jamais à partir d’une installation réelle.

Jessie :
- Préchargement lot principal : code 0, 606 versions de paquets choisies.
- Installation core sans phpMyAdmin : code 0, 600 versions choisies.
- Backports phantomjs/duplicity après core : code 0, 58 versions choisies.
- Installation phpMyAdmin après les phases précédentes : code 0, 6 versions.
- Préchargement backports testé séparément depuis statut vide : code 0.
- 0 version nécessaire aux installations absente de l’union prédéléchargée.

Stretch :
- Préchargement lot principal : code 0, 616 versions choisies.
- Installation core sans phpMyAdmin : code 0, 602 versions choisies.
- Installation phpMyAdmin après core : code 0, 14 versions choisies.
- 0 version nécessaire aux installations absente du lot prédéléchargé.

Aucun mod_php implicite sélectionné ; PHP-FPM demandé est conservé.
Ces nombres concernent un état vide synthétique, pas le nombre de paquets à
installer sur une vraie Debian minimale. Les remplacements de versions et
phases ne doivent pas être additionnés comme des installations indépendantes.
Ces simulations ne lancent pas les scripts postinst, ne testent ni démarrage
ni HTTP/FPM/MySQL, et n’émulent pas APT 1.0/1.4 des distributions cibles.

11. TROUSSEAU PUBLIC LIVRABLE
Le fichier utilisé pendant ces tests est maintenant préparé dans
package/keys/debian-archive-keyring.gpg, 128 554 octets,
SHA256 ca5ed6d2894a2197eac792c2ce5ad4224402481b8764fc4a56e42f504a1284a9.
C’est la concaténation binaire exacte des fichiers Debian officiels courant et
removed du paquet installé debian-archive-keyring 2025.1 ; dpkg --verify ne
signale aucune divergence. PROVENANCE.txt, provenance.json, liste de 32 clés
principales / 44 empreintes avec sous-clés, et copyright sont joints.
Aucune clé privée ; aucune réexportation, signature inventée, import système
ni modification de confiance. Utiliser seulement dans les sources dédiées.
Format OpenPGP v4 et clés utiles RSA, pas KBX. Des clés EdDSA plus récentes
figurent aussi dans le fichier officiel : compatibilité GnuPG historique non
exécutée ni certifiée. Fournir ces clés ne supprime pas leur expiration.
