Quelle est la différence entre «restauration de l'historique dnf» et «annulation de l'historique dnf»?

15

Lisons la documentation officielle :

dnf history rollback <transaction-spec> Annuler toutes les transactions effectuées après la transaction spécifiée. S'il n'est pas possible d' annuler une transaction en raison de l'état actuel de RPMDB, n'annulez aucune transaction.

L'accent est à moi. Cette commande fait donc référence à la undocommande. D'accord, lisons la documentation concernant l'annulation:

dnf history undo <transaction-spec> Effectuez l'opération opposée à toutes les opérations effectuées dans la transaction spécifiée. S'il n'est pas possible d'annuler une opération en raison de l'état actuel de RPMDB, n'annulez aucune opération.

Il semble que ces deux commandes fassent la même chose à l'exception que la première peut annuler plusieurs transactions et la dernière une seule.

Cette compréhension est-elle correcte? (J'apprécierais les réponses de l'expérience de première main, pas du point de vue de la façon dont vous interprétez le manuel, je m'intéresse aux faits, pas aux suppositions.)

Contexte: j'ai besoin d'écrire un script qui s'exécute dnf upgrade -y, puis exécute certains tests, puis inverse les modifications dnf si les tests échouent. Je cherche le meilleur moyen d'y parvenir.

Andrew Savinykh
la source

Réponses:

18

undoannule uniquement cette transaction spécifique, tout rollbackannule tout entre cette transaction et l'état actuel du système.

Exemple: vous installez htop, puis installez plus tard ncduet glances, suivi mcle lendemain.

Vous souhaitez ensuite annuler l'installation de htop, vous utilisez donc la fonction d'annulation pour essayer d'annuler l'installation de htop, mais conservez les autres programmes que vous avez installés ultérieurement.

Si vous rétrogradés à la transaction qui a installé htop, à la place que vous souhaitez annuler l'installation ncdu, glanceset mc, tout en gardant htop.

Mio Rin
la source
1
Oui, j'ai compris comment je l'avais compris aussi, mais je voulais le confirmer, merci de l'avoir fait! ;)
Andrew Savinykh