DarkPAN via SSH en utilisant cpanminus

Vous voulez mettre en place un CPAN privé, alias un DarkPAN, pour y placer vos propres modules privés et les déployer comme s'ils provenaient du CPAN officiel en utilisant cpanminus et sa fantastique commande cpanm.
Le problème est que cpanminus ne fonctionne qu'avec des fichiers, des URI HTTP/HTTPS et FTP. C'est bien pour toutes les utilisations publiques, mais pour les utilisations privées, c'est ennuyeux de configurer un serveur HTTPS avec un schéma d'authentification, alors que SSH est si simple à utiliser...
cpanm peut utiliser curl comme backend et curl peut gérer scp/sftp s'il est lié à libssh2. C'est correct, mais trop souvent dans les distros binaires, curl n'est pas lié à libssh2... et cpanm filtre les URIs en se basant sur le /^(ftp|https?|file):/ regexp... 🙁 Dommage...
Pour éviter de dépendre d'une version de curl spécialement compilée, nous avons modifié cpanminus pour qu'il supporte le protocole scp en utilisant la commande scp. Hack rapide visible sur github.
Sur un serveur, créer un utilisateur darkpan avec un shell scponly. En utilisant CPAN-Site, mettez en place un CPAN privé comme expliqué dans son excellente documentation, à la racine du compte.
N'oubliez pas d'ajouter les clés publiques SSH de tous les futurs clients de votre DarkPAN dans ~darkpan/.ssh/authorized_keys pour éviter toute demande de mot de passe.
Une fois vos modules d'archives copiés dans ~darkpan/authors/id/M/MY/MYID et indexés via cpansite --site ~darkpan index, vous pouvez utiliser le module cpanminus patché pour y accéder :
cpanm -i --mirror scp://[email protected] :. PrivateModule
Vos modules privés ne seront pas trouvés sur l'index officiel du CPAN, alors cpanm se rabattra sur votre miroir...
Facile, non ?
Si vous voulez le tester, regardez la distribution cpanminus puis faites un perl Makefile.PL --author, cela créera l'exécutable fat de cpanm.
Note technique : pour faire du bon travail, il serait préférable que cpanminus distribue ses actions mirror et get en fonction du protocole de l'URI passé plutôt qu'en fonction de la disponibilité de LWP, wget, curl ou d'un autre module. On éviterait ainsi de patcher chacun de ces backends pour détecter file:// ou scp://.
Maintenant que tu as fini de lire DarkPAN via SSH en utilisant cpanminus, nous t'invitons à explorer davantage la catégorie Linux. Tu y trouveras d'autres articles intéressants qui élargiront tes connaissances et te tiendront informé. Ne cesse pas de lire et de découvrir plus!
