Malheureusement, fuser ne fait pas grand chose pour vous lorsque vous utilisez plusieurs conteneurs d’espace de noms non privilégiés comme lxc.
De plus, aptdcon n’est pas installé par défaut (au moins le 18.04) et met votre tâche en arrière-plan dans une file d’attente de sorte que vous perdiez la sérialisation. Ce n'est pas insurmontable, mais cela signifie que votre automatisation doit avoir un moyen d'éviter les erreurs de flock dans apt lors de l'installation d'aptdcon, et vous aurez besoin d'une sorte de boucle d'attente pour tout ce que vous devez sérialiser après avoir installé des paquets via aptdcon. à moins qu'il y ait une sorte de drapeau pour cela déjà.
Qu'est-ce que le travail est troupeau. Cela devrait également fonctionner sur NFS, etc., car il utilise le verrouillage du système de fichiers de la même façon qu'apt, mais avec le paramètre -w secondes, il attendra sur votre verrou au lieu de générer une erreur.
Donc, en suivant le modèle du wrapper, ajoutez ceci comme apt-get dans / usr / local / bin / et partagez-le.
Cela présente également l’avantage de limiter les entrées-sorties en interdisant le parallélisme sur apt, de sorte que vous pouvez laisser cron déclencher les mises à jour à minuit partout sans frapper le disque.
#!/bin/bash
exec /usr/bin/flock -w 900 -F --verbose /var/cache/apt/archives/lock /usr/bin/apt-get $@
Une demande de fonctionnalité très simple et agréable pour apt-get serait un drapeau -w permettant de basculer vers un verrou bloquant / en attente.
sudo apt-get install packagename && sudo apt-get update
et ils vont se passer automatiquement les uns après les autres.