Apa perbedaan antara "dnf history rollback" dan "dnf history undo"?

15

Mari kita baca dokumentasi resmi :

dnf history rollback <transaction-spec> Membatalkan semua transaksi yang dilakukan setelah transaksi yang ditentukan. Jika tidak mungkin untuk membatalkan transaksi apa pun karena keadaan RPMDB saat ini, jangan membatalkan transaksi apa pun.

Penekanan adalah milikku. Jadi perintah ini mengacu pada undoperintah. Oke, mari kita baca dokumentasi tentang undo:

dnf history undo <transaction-spec> Lakukan operasi yang berlawanan dengan semua operasi yang dilakukan dalam transaksi yang ditentukan. Jika tidak memungkinkan untuk membatalkan operasi apa pun karena keadaan RPMDB saat ini, jangan membatalkan operasi apa pun.

Kedengarannya kedua perintah melakukan hal yang sama dengan pengecualian bahwa yang pertama dapat membatalkan beberapa transaksi, dan yang terakhir hanya satu.

Apakah pemahaman ini benar? (Saya akan menghargai jawaban dari pengalaman langsung, bukan dari sudut pandang bagaimana Anda menafsirkan manual, saya tertarik pada fakta, bukan tebakan.)

Konteks: Saya perlu menulis skrip yang berjalan dnf upgrade -ydan kemudian menjalankan beberapa tes dan kemudian membalikkan perubahan dnf jika tes gagal. Saya mencari cara terbaik untuk mencapai ini.

Andrew Savinykh
sumber

Jawaban:

18

undohanya membatalkan transaksi spesifik itu, sementara rollbackmembatalkan segala sesuatu antara transaksi itu dan kondisi sistem saat ini.

Contoh: Anda menginstal htop, kemudian menginstal ncdudan glances, diikuti mcpada hari berikutnya.

Anda nanti ingin membatalkan penginstalan htop, jadi Anda menggunakan fungsi undo untuk mencoba membatalkan penginstalan htop, tetapi masih menyimpan program lain yang Anda instal nanti.

Jika Anda kembali ke transaksi yang diinstal htop, Anda malah akan membatalkan instalasi ncdu, glancesdan mc, sambil tetap menyimpannya htop.

Mio Rin
sumber
1
Yap, bahwa saya mengerti bagaimana saya juga, tetapi ingin mengkonfirmasi, terima kasih telah melakukan itu! ;)
Andrew Savinykh