C'est difficile, mais tout le monde réinvente la roue sans trop de poser de question, malheureusement.
Au final, on se retrouve avec plein de solutions différentes, avec toutes des inconvénients différents (certaines plus que d'autres).
Quelques défauts à travers des différents formats que j'ai fréquentés :
- le miroir est codé en dur (snap)
- le protocole et le port sont codés en dur (docker)
- l'index est constitué d'objets sérialisés (Ruby) donc presque illisible dans un autre langage (à moins de recoder la désérialisation d'objets Ruby)
- pas de signature de l'index (Ruby, ...)
- plein de fichiers à télécharger (apt) ce qui rend le mirroring compliqué
- l'archive ne contient pas (toujours) toutes les métadonnées (java)
- pas de schéma de numérotation de version imposé (Python, Ruby, npm, ...)
- système de signature spécifique à un OS (WinGet, de mémoire)
- formats d'archives peu classique (.deb qui utilise des ar)
- un service tiers est codé en dur (Ansible Galaxy, qui se repose sur le fait que Github ne change pas ses URL et reste gratuit)
- un protocole qui compte beaucoup sur les headers HTTP, donc impossible d'utiliser un autre protocole (Docker)
- un index basé sur git, donc compliqué à reproduire (Rust)
- protocole à moitié codé en dur (apt fonctionne mal en file://)
[^] # Re: Réinventer la roue
Posté par flan (site web personnel) . En réponse au journal La cochonnerie en boite que sont les systèmes de dépendances. Évalué à 10.
C'est difficile, mais tout le monde réinvente la roue sans trop de poser de question, malheureusement.
Au final, on se retrouve avec plein de solutions différentes, avec toutes des inconvénients différents (certaines plus que d'autres).
Quelques défauts à travers des différents formats que j'ai fréquentés :
- le miroir est codé en dur (snap)
- le protocole et le port sont codés en dur (docker)
- l'index est constitué d'objets sérialisés (Ruby) donc presque illisible dans un autre langage (à moins de recoder la désérialisation d'objets Ruby)
- pas de signature de l'index (Ruby, ...)
- plein de fichiers à télécharger (apt) ce qui rend le mirroring compliqué
- l'archive ne contient pas (toujours) toutes les métadonnées (java)
- pas de schéma de numérotation de version imposé (Python, Ruby, npm, ...)
- système de signature spécifique à un OS (WinGet, de mémoire)
- formats d'archives peu classique (.deb qui utilise des ar)
- un service tiers est codé en dur (Ansible Galaxy, qui se repose sur le fait que Github ne change pas ses URL et reste gratuit)
- un protocole qui compte beaucoup sur les headers HTTP, donc impossible d'utiliser un autre protocole (Docker)
- un index basé sur git, donc compliqué à reproduire (Rust)
- protocole à moitié codé en dur (apt fonctionne mal en file://)