В чем разница между «откатом истории dnf» и «отменой истории dnf»?

15

Давайте прочитаем официальную документацию :

dnf history rollback <transaction-spec> Отменить все транзакции, выполненные после указанной транзакции. Если невозможно отменить какую-либо транзакцию из-за текущего состояния RPMDB, не отменяйте никакую транзакцию.

Акцент мой. Так что эта команда относится к undoкоманде. Хорошо, давайте прочитаем документацию относительно отмены:

dnf history undo <transaction-spec> Выполните операцию, противоположную всем операциям, выполненным в указанной транзакции. Если невозможно отменить какую-либо операцию из-за текущего состояния RPMDB, не отменяйте никакую операцию.

Похоже, что эти две команды делают одно и то же, за исключением того, что первая может отменить несколько транзакций, а вторая - только одну.

Это понимание правильно? (Я был бы признателен за ответы из первых рук, а не с точки зрения того, как вы интерпретируете руководство, меня интересуют факты, а не догадки.)

Контекст: мне нужно написать скрипт, который запускает dnf upgrade -yи затем запускает некоторые тесты, а затем отменяет изменения dnf, если тесты не пройдены. Я ищу лучший способ достижения этого.

Андрей Савиных
источник

Ответы:

18

undoтолько отменяет эту конкретную транзакцию, а rollbackотменяет все, что находится между этой транзакцией и текущим состоянием системы.

Пример: вы устанавливаете htop, затем устанавливаете позже ncduи glancesзатем mcна следующий день.

Позже вы захотите отменить установку htop, поэтому вы используете функцию отмены, чтобы попытаться отменить установку htop, но все равно сохраните другие программы, которые вы установили позже.

Если откат к операции , которая установлена htop, вы бы вместо того, чтобы отменить установку ncdu, glancesи mc, в то же время сохраняя htop.

Мио Рин
источник
1
Да, я тоже так понял, но хотел подтвердить, спасибо за это! ;)
Андрей Савиных