Bonjour à toutes et à tous,
Il m'arrive d'avoir besoin d'un outil une seule fois : un figlet pour une bannière, un nmap pour un scan ponctuel, une conversion avec ffmpeg. Je n'aime pas laisser sur ma machine des paquets dont je ne me resservirai pas, avec leurs dépendances. J'ai donc écrit utd (« Use Then Delete »), en Go, sous licence MIT.
Je précise que j’ai commencé par un prototype en bash et fait mes recherches avant de choisir Go. La réécriture a ensuite été faite en grande partie avec l’aide d’une IA, que j’ai guidée et dont j’ai testé le résultat. Elle a notamment ajouté search et --dry-run.

Principe
utd lance une commande qui n'est pas installée :
1. Si la commande est déjà dans le
utd figlet hello
utd --delete=now nmap -p 22,80 192.168.1.1
PATH, il la lance simplement.
2. Sinon, il cherche le paquet qui la fournit.
3. Il demande à apt quelles dépendances manquent, puis télécharge les .deb avec apt-get download.
4. Il les extrait avec dpkg-deb -x dans /tmp/utd, sans toucher à /usr.
5. Il lance le programme depuis cet arbre privé. Si bubblewrap est présent, les paquets sont superposés au système en lecture seule, pour que les chemins codés en dur (/usr/share/figlet, par exemple) fonctionnent.
Pas d'apt install, pas de root. Tout disparaît au redémarrage, ou tout de suite avec --delete=now.
La partie délicate : retrouver le paquet
Le nom de la commande n'est pas toujours celui du paquet : dig est dans bind9-dnsutils, bat installe batcat, nc passe par le système d'alternatives. utd essaie plusieurs sources dans l'ordre (table d'alias intégrée, paquet de même nom, index Contents d'apt, base de command-not-found, apt-file, apt-cache search). Il vérifie chaque candidat en cherchant le binaire dans le paquet avant de l'exécuter. utd search <commande> montre le résultat sans rien lancer.
Limites
- Debian et dérivés uniquement pour l'instant (le code est écrit autour d'une interface
PackageManager, donc d'autres gestionnaires sont envisageables). - Les outils qui exigent root, des capacités ou des modules noyau (
tcpdump, par exemple) ne marcheront pas depuis un arbre temporaire. - Ce n'est pas une sandbox de sécurité : la commande tourne avec tes droits, voit tes fichiers et le réseau.
Et nix run ou Distrobox ?
Ils font mieux sur la robustesse, la reproductibilité et l'isolation, et ils marchent hors de Debian. utd vise un cas plus étroit : sur une machine Debian, avoir une commande une fois, sans installer de gestionnaire ni de moteur de conteneurs, et avec un nettoyage automatique.
Installation
Un binaire statique (amd64 et arm64) est disponible dans les releases, avec les sommes SHA-256. Sinon : make build avec Go 1.24 ou plus.
Le dépôt : https://github.com/Mathos6/utd
C'est une version 0.1, et j'aimerais surtout des retours sur les cas où la résolution de commande échoue ou tombe sur le mauvais paquet, sur la gestion du dossier temporaire, et sur ce qui vous semblerait utile à ajouter. Merci d'avance !

# Peut-être plus simple ?
Posté par Dafyd . Évalué à 1 (+0/-0).
Peut-être plus simple ?
Voici "once", à rendre exécutable et à placer dans le PATH.
Et garanti sans IA. Remplacer brew par votre package manager.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.