Bagaimana saya bisa membatalkan atau mengembalikan perintah "apt-get upgrade" di Ubuntu?

26

Apakah ada cara di Ubuntu untuk mengembalikan atau membatalkan pemutakhiran terakhir setelah melakukan apt-get upgradejika Anda tidak menyukai hasilnya?

jjclarkson
sumber
Tidak tanpa banyak pekerjaan, itu tidak akan sepadan. Bisakah Anda menyimpan / rumah dan memulai kembali? Apa yang tidak kamu sukai?
user10547
Saya belum melakukannya, tetapi ini adalah server produksi dan saya harus memastikan tidak ada yang tidak kompatibel dengan pengaturan PHP / MySQL / Apache2 kustom kami, dan segera kembali jika ada. Saya ingin memutakhirkan karena saya pikir ini akan memperbaiki masalah lain yang saya alami.
jjclarkson
Kecuali Anda melakukan dist-upgrade, saya tidak melihat hasil apa yang tidak disukai, karena itu kemungkinan besar merupakan pembaruan keamanan .
LiraNuna
Jika Anda memiliki instalasi khusus, Anda bertanggung jawab untuk menyimpan tambalan dan menerapkannya pada versi saat ini.
LiraNuna
2
Jika itu server, coba server dev sebelum memutakhirkan yang produksi
solarc

Jawaban:

5

aptitudememberi Anda akses ke semua versi paket jika tersedia sesuai dengan manajemen paket Debian .

pengguna28725
sumber
2.7.3 dapat membantu Anda menurunkan versi ke stabil. 2.7.16 menjelaskan cara menyimpan dan mengembalikan status dpkg. dpkg-repack memungkinkan Anda untuk "memampatkan" satu paket.
joeytwiddle
5

Saya menemukan Blog Blog Hartman: Cara Membatalkan Pembaruan di Ubuntu Lucid

Langkah pertama untuk mengurungkan pembaruan yang menyinggung itu adalah untuk mengetahui pembaruan apa itu sebenarnya. Setelah mencari di beberapa forum, saya menemukan cara untuk melihat riwayat pembaruan saya: Buka pengelola paket synaptic ("sudo synaptic" di terminal). Dari bilah menu, klik File -> History dan Anda akan melihat semua pembaruan Anda diurutkan berdasarkan tanggal.

Sayangnya saya telah menginstal sekitar 20 pembaruan hari ini, dan saya tidak tahu yang mana yang menyebabkan masalah. Dengan mencari melalui masing-masing paket yang disebutkan dalam daftar History, saya dapat menurunkan versi beberapa kali sampai masalah terpecahkan dan saya telah mengidentifikasi pembaruan yang menyinggung. Untuk melakukan ini:

Gunakan bilah pencarian untuk menemukan paket yang ingin Anda turunkan. Setelah Anda menemukan apa yang Anda cari, klik pada paket untuk memilihnya. Dari bilah menu, klik Paket -> Force Version dan pilih versi paket sebelumnya dari menu drop down. Klik tombol "Terapkan" untuk menerapkan downgrade.

Manav Brar
sumber
1
Saya mengharapkan semua orang di sini untuk mengetahui dasar-dasar tentang cara mencari pembaruan terakhir yang menyinggung:
Manav Brar
2
Tentang apa hasil edit itu? Anda punya pertanyaan lain? Apakah Anda ingin kami memainkan permainan tebak-tebakan?
slhck
5

Saya harus melakukan ini hari ini di sistem Debian saya. Pertama, saya mengidentifikasi rentang waktu ketika pemutakhiran yang menyinggung terjadi, dan mengambil entri log yang memberikan nomor versi lama dan baru dari paket yang ditingkatkan:

$ awk '$1=="2016-03-20" && $3=="upgrade"' /var/log/dpkg.log
2016-03-20 16:58:22 upgrade libwebkitgtk-3.0-0:amd64 2.4.9-3 2.4.10-1
2016-03-20 16:58:24 upgrade libjavascriptcoregtk-3.0-0:amd64 2.4.9-3 2.4.10-1
2016-03-20 16:58:26 upgrade traceroute:amd64 1:2.0.22-1 1:2.1.0-1
2016-03-20 16:58:33 upgrade ethtool:amd64 1:4.2-1 1:4.5-1
2016-03-20 16:58:34 upgrade libsdl1.2debian:amd64 1.2.15+dfsg1-3 1.2.15+dfsg1-4
2016-03-20 16:58:34 upgrade subversion:amd64 1.9.3-2+b1 1.9.3-3
2016-03-20 16:58:36 upgrade libsvn1:amd64 1.9.3-2+b1 1.9.3-3
2016-03-20 16:58:56 upgrade linux-image-amd64:amd64 4.3+70 4.4+71
2016-03-20 16:58:56 upgrade linux-libc-dev:amd64 4.3.5-1 4.4.6-1
2016-03-20 16:59:03 upgrade amd64-microcode:amd64 2.20141028.1 2.20160316.1

Selanjutnya, saya mencoba mencari file paket yang masih di-cache pada disk (untungnya bagi saya saya belum menjalankan autoclean):

$ awk '$1=="2016-03-20" && $3=="upgrade" {gsub(/:/, "%3a", $5); split($4, f, ":"); print "/var/cache/apt/archives/" f[1] "_" $5 "_" f[2] ".deb"}' /var/log/dpkg.log | xargs -r ls -ld
ls: cannot access '/var/cache/apt/archives/ethtool_1%3a4.2-1_amd64.deb': No such file or directory
-rw-r--r-- 1 root root   28820 Dec 18  2014 /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb
-rw-r--r-- 1 root root 1978874 Dec 10 18:22 /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb
-rw-r--r-- 1 root root  185006 Mar 12 00:41 /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb
-rw-r--r-- 1 root root 1317644 Mar  3 11:30 /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb
-rw-r--r-- 1 root root 7679400 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb
-rw-r--r-- 1 root root    6108 Dec 14 06:59 /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb
-rw-r--r-- 1 root root 1075506 Feb  7 21:36 /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb
-rw-r--r-- 1 root root  983174 Mar  3 11:30 /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb
-rw-r--r-- 1 root root   53376 Feb 28 18:35 /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb

Sepertinya saya tidak memiliki paket ethtool yang lebih lama karena beberapa alasan. Namun, mari kita lanjutkan dengan menginstal paksa file paket yang lebih lama:

$ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb
dpkg: warning: downgrading amd64-microcode from 2.20160316.1 to 2.20141028.1
(Reading database ... 139632 files and directories currently installed.)
Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ...
Unpacking amd64-microcode (2.20141028.1) over (2.20160316.1) ...
dpkg: warning: downgrading libjavascriptcoregtk-3.0-0:amd64 from 2.4.10-1 to 2.4.9-3
Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.10-1) ...
dpkg: warning: downgrading libsdl1.2debian:amd64 from 1.2.15+dfsg1-4 to 1.2.15+dfsg1-3
Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ...
Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-4) ...
dpkg: warning: downgrading libsvn1:amd64 from 1.9.3-3 to 1.9.3-2+b1
Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ...
Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-3) ...
Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
dpkg: warning: downgrading linux-image-amd64 from 4.4+71 to 4.3+70
Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ...
Unpacking linux-image-amd64 (4.3+70) over (4.4+71) ...
dpkg: warning: downgrading linux-libc-dev:amd64 from 4.4.6-1 to 4.3.5-1
Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.4.6-1) ...
dpkg: warning: downgrading subversion from 1.9.3-3 to 1.9.3-2+b1
Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ...
Unpacking subversion (1.9.3-2+b1) over (1.9.3-3) ...
dpkg: warning: downgrading traceroute from 1:2.1.0-1 to 1:2.0.22-1
Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ...
Unpacking traceroute (1:2.0.22-1) over (1:2.1.0-1) ...
Setting up amd64-microcode (2.20141028.1) ...
update-initramfs: deferring update (trigger activated)
amd64-microcode: microcode will be updated at next boot
Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ...
Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ...
Setting up libsvn1:amd64 (1.9.3-2+b1) ...
dpkg: dependency problems prevent configuration of libwebkitgtk-3.0-0:amd64:
 libwebkitgtk-3.0-0:amd64 depends on libwebkitgtk-3.0-common (>= 2.4.9); however:
  Package libwebkitgtk-3.0-common is not installed.

dpkg: error processing package libwebkitgtk-3.0-0:amd64 (--install):
 dependency problems - leaving unconfigured
Setting up linux-image-amd64 (4.3+70) ...
Setting up linux-libc-dev:amd64 (4.3.5-1) ...
Setting up subversion (1.9.3-2+b1) ...
Setting up traceroute (1:2.0.22-1) ...
update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode
update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode
update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode
update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode
Processing triggers for libc-bin (2.22-3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for initramfs-tools (0.123) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64
Errors were encountered while processing:
 libwebkitgtk-3.0-0:amd64

Seperti yang dikatakan pesan kesalahan, salah satu paket saya bergantung pada paket-umum sesaat sebelum upgrade, tetapi upgrade menghapusnya (dan apt-get tidak dapat menemukannya lagi). Untungnya, file paketnya masih di / var / cache / apt jadi saya bisa menambahkannya ke daftar dan coba lagi:

$ ls -ld /var/cache/apt/archives/libwebkitgtk-3.0-common*
-rw-r--r-- 1 root root 452278 Dec 10 18:22 /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb
$ sudo dpkg -i /var/cache/apt/archives/amd64-microcode_2.20141028.1_amd64.deb /var/cache/apt/archives/libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb /var/cache/apt/archives/libsvn1_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-0_2.4.9-3_amd64.deb /var/cache/apt/archives/linux-image-amd64_4.3+70_amd64.deb /var/cache/apt/archives/linux-libc-dev_4.3.5-1_amd64.deb /var/cache/apt/archives/subversion_1.9.3-2+b1_amd64.deb /var/cache/apt/archives/traceroute_1%3a2.0.22-1_amd64.deb /var/cache/apt/archives/libwebkitgtk-3.0-common_2.4.9-3_all.deb
(Reading database ... 139632 files and directories currently installed.)
Preparing to unpack .../amd64-microcode_2.20141028.1_amd64.deb ...
Unpacking amd64-microcode (2.20141028.1) over (2.20141028.1) ...
Preparing to unpack .../libjavascriptcoregtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
Preparing to unpack .../libsdl1.2debian_1.2.15+dfsg1-3_amd64.deb ...
Unpacking libsdl1.2debian:amd64 (1.2.15+dfsg1-3) over (1.2.15+dfsg1-3) ...
Preparing to unpack .../libsvn1_1.9.3-2+b1_amd64.deb ...
Unpacking libsvn1:amd64 (1.9.3-2+b1) over (1.9.3-2+b1) ...
Preparing to unpack .../libwebkitgtk-3.0-0_2.4.9-3_amd64.deb ...
Unpacking libwebkitgtk-3.0-0:amd64 (2.4.9-3) over (2.4.9-3) ...
Preparing to unpack .../linux-image-amd64_4.3+70_amd64.deb ...
Unpacking linux-image-amd64 (4.3+70) over (4.3+70) ...
Preparing to unpack .../linux-libc-dev_4.3.5-1_amd64.deb ...
Unpacking linux-libc-dev:amd64 (4.3.5-1) over (4.3.5-1) ...
Preparing to unpack .../subversion_1.9.3-2+b1_amd64.deb ...
Unpacking subversion (1.9.3-2+b1) over (1.9.3-2+b1) ...
Preparing to unpack .../traceroute_1%3a2.0.22-1_amd64.deb ...
Unpacking traceroute (1:2.0.22-1) over (1:2.0.22-1) ...
Selecting previously unselected package libwebkitgtk-3.0-common.
Preparing to unpack .../libwebkitgtk-3.0-common_2.4.9-3_all.deb ...
Unpacking libwebkitgtk-3.0-common (2.4.9-3) ...
Setting up amd64-microcode (2.20141028.1) ...
update-initramfs: deferring update (trigger activated)
amd64-microcode: microcode will be updated at next boot
Setting up libjavascriptcoregtk-3.0-0:amd64 (2.4.9-3) ...
Setting up libsdl1.2debian:amd64 (1.2.15+dfsg1-3) ...
Setting up libsvn1:amd64 (1.9.3-2+b1) ...
Setting up linux-image-amd64 (4.3+70) ...
Setting up linux-libc-dev:amd64 (4.3.5-1) ...
Setting up subversion (1.9.3-2+b1) ...
Setting up traceroute (1:2.0.22-1) ...
update-alternatives: using /usr/bin/traceroute.db to provide /usr/bin/traceroute (traceroute) in auto mode
update-alternatives: using /usr/bin/lft.db to provide /usr/bin/lft (lft) in auto mode
update-alternatives: using /usr/bin/traceproto.db to provide /usr/bin/traceproto (traceproto) in auto mode
update-alternatives: using /usr/sbin/tcptraceroute.db to provide /usr/sbin/tcptraceroute (tcptraceroute) in auto mode
Setting up libwebkitgtk-3.0-common (2.4.9-3) ...
Setting up libwebkitgtk-3.0-0:amd64 (2.4.9-3) ...
Processing triggers for libc-bin (2.22-3) ...
Processing triggers for man-db (2.7.5-1) ...
Processing triggers for initramfs-tools (0.123) ...
update-initramfs: Generating /boot/initrd.img-4.4.0-1-amd64

Keberhasilan! Sebenarnya ini tidak menyelesaikan masalah saya. Tapi itu berhasil menurunkan versi paket, QED.

aecolley
sumber
3

Saya juga harus membatalkan pembaruan paket hari ini di beberapa server Debian. Saya berhasil mengembalikan paket ke versi terakhir dengan menggunakan aptitute, sedangkan perintah awk berikut ini sangat membantu.

( Pada perintah di bawah ini ganti string tanggal dengan tanggal hari dari mana Anda ingin mengembalikan pemutakhiran )

awk 'BEGIN{ start="0" } { if($0 ~ /Log started: 2017-06-20/) { start="1"} if ( start == "1" && $0 ~ /Unpacking.*over/) {gsub(/[\s\t)( ]+/,"",$5); printf("%s=%s ", $2 , $5)}}' /var/log/apt/term.log

tinjau output untuk memverifikasi bahwa ini adalah paket dan versi yang akan dikembalikan. Kemudian gunakan aptitute untuk melakukan downgrade dari paket yang terdaftar:

aptitute install [paste output here]

Saya harap ini juga menghemat waktu bagi orang lain.

Andreas Kohlbecker
sumber
2

Saya percaya tidak, selain dari mengambil salinan lengkap dari filesystem yang relevan (yang mengandung /, /bin, /lib, /sbin, /usr, /var, /etcdan /boot(yang semua mungkin pada pada filesystem) dan boot record Anda) sehingga Anda dapat memutar mesin kembali setelah itu.

David Spillett
sumber
Saya dapat (dan mungkin akan) mengambil cadangan logam kosong, tetapi saya menginginkan opsi perangkat lunak yang akan membuat saya membatalkan pemutakhiran dalam kerangka waktu yang lebih cepat. Memulihkan dari cadangan logam kosong bisa memakan waktu beberapa jam.
jjclarkson
1
Anda dapat memastikan bahwa Anda memiliki salinan semua paket yang akan Anda tingkatkan pada versi sebelumnya (mereka mungkin masih /vartersimpan di cache apt Anda di suatu tempat di ) dan file konfigurasi yang relevan disimpan. Anda kemudian dapat mencoba memaksa kembali dengan secara eksplisit mengatakan dpkguntuk menginstal versi tersebut. Anda mungkin memiliki beberapa pekerjaan yang harus dilakukan setelah itu ketika Anda ingin upgrade normal terjadi, jadi itu bukan sesuatu yang saya sarankan.
David Spillett
Cadangan yang dibuat dengan rsync (timestamping diaktifkan) dapat dipulihkan dengan cepat, dibandingkan dengan cadangan yang dibuat dengan tar.
joeytwiddle
2

Saya menjalankan server linux saya di lingkungan yang tervirtualisasi dan menjalankan shapshot tepat sebelum upgrade apt-get, atau pembaruan / pemutakhiran pihak ketiga utama apa pun dalam hal ini.

Kemudian jika ada yang tidak beres, saya kembali dan hidup terus berjalan sampai saya dapat menemukan lebih banyak informasi.

Ini sangat berguna ketika saya memutakhirkan kotak Ubuntu saya menjadi 12,04, dan entah bagaimana MySQL benar-benar tidak berfungsi setelah peningkatan. Saya memutar kembali, menemukan jawabannya kemudian, memutar ulang upgrade, memperbaiki MySQL, dan hidup itu baik.

Brain2000
sumber
1

Anda dapat mencoba checkinstall

Setelah Anda ./configure; buat program Anda, CheckInstall akan menjalankan make install (atau apa pun yang Anda suruh dijalankan) dan melacak setiap file yang dimodifikasi oleh instalasi ini, menggunakan installwatch excelent ...

Jadi mungkin Anda bisa memerintahkannya untuk menjalankan aptitude safe-upgrade dan itu akan melacak setiap modifikasi yang dilakukan oleh upgrade.

solarc
sumber
1

Ada sebuah proyek bernama Nexenta yang menggabungkan kernel OpenSolaris dengan ruang pengguna Ubuntu. Ini menyediakan alat untuk mengintegrasikan Solaris's ZFS dan Debian's apt untuk menyediakan tombol undo untuk upgrade. Lihat di sini: http://www.nexenta.org/os/TransactionalZFSUpgrades

Secara umum, yang Anda butuhkan adalah sistem file versi. Btrfs untuk Linux sedang dalam pengembangan.

Ryan C. Thompson
sumber
0

Saya telah berhasil melakukannya beberapa kali tetapi saya tidak akan merekomendasikannya. Inilah yang saya lakukan (jika saya ingat dengan benar):

1) Hapus semua perangkat lunak tidak resmi yang tidak termasuk dalam repositori default ubuntu (mungkin tidak diperlukan, tetapi saya menyarankannya karena mungkin menghalangi Anda).

2) Ubah /etc/apt/sources.list Anda (dan sources.list.d / *) ke versi sebelumnya (komentar semua repositori tidak resmi).

3) pembaruan apt-get / perbaruan aptitude

4) Menggunakan aptitude, downgrade paket inti (seperti X11, perpustakaan, dll). Ini akan mulai menembakkan banyak paket yang rusak ... jadi Anda harus menyelesaikan setiap kasus (Anda harus tahu bagaimana melakukannya dengan tepat). Cara Anda menurunkan versi itu dengan membuka panel deskripsi dan menginstal versi (dengan menekan +) di bagian bawah.

5) Ulangi # 4 sampai semua perangkat lunak milik versi target Anda (periksa kolom versi di aptitude).

Inilah alasan mengapa saya tidak merekomendasikan metode ini:

  • Dibutuhkan banyak waktu (ini adalah proses yang menyakitkan)
  • Beberapa aplikasi mungkin tidak berfungsi dengan baik (karena mungkin masih memiliki konfigurasi terbaru). Dalam hal ini Anda perlu "membersihkan" dan menginstal ulang.
  • Ada pembaruan terkait sistem yang tidak akan berfungsi setelah downgrade
  • Sangat berisiko karena Anda mungkin berakhir dengan sistem yang tidak dapat digunakan

Saya akan sangat menyarankan untuk melakukan instalasi bersih dan memindahkan konfigurasi Anda sedikit demi sedikit. Ini juga membutuhkan waktu, tetapi pada akhirnya Anda memiliki versi yang stabil.

Alasan saya melakukannya terutama sebagai eksperimen dan hasil dari keputusasaan.

lepe
sumber
0

DPkg :: Pra-Instal-Pkgs dan ZFS di snapshot Linux

Jika Anda menginstal sistem operasi pada sistem file ZFS (misalnya, ZFS di Linux ), Anda dapat mengonfigurasi apt-getuntuk menjalankan zfs snapshotsebelum menginstal atau meningkatkan apa pun, yang akan membuat cadangan sistem file Anda secara instan. Mungkin bekerja dengan mekanisme cadangan selain snapshot ZFS, tapi saya akan menyerahkan pengujian itu kepada orang lain.

Naskah

Buat file seperti

/etc/apt/apt.conf.d/71backup

dengan konten

// Tell `apt-get' to take a ZFS snapshot before installing or upgrading a
// set of packages:
DPkg::Pre-Install-Pkgs {"/sbin/zfs snapshot rpool/ROOT/debian@apt-get_$(date '+%Y-%m-%d-%H%M')";};

di mana rpool/ROOT/debianharus diganti dengan nama sistem file ZFS tempat sistem operasi Anda dipasang. Anda memberinya nama itu ketika pertama kali menginstal OS Anda, dan itu dapat ditemukan di bawah atribut NAMEdengan perintah

# zfs list -t filesystem
NAME ...
...
rpool/ROOT/debian ...
...

Tetapi apakah itu berhasil?

Anda sebaiknya mengambil snapshot sebelum mengikuti saran konfigurasi dari beberapa orang internet acak:

# zfs snapshot rpool/ROOT/debian@$(date '+%Y-%m-%d-%H%M%S')_test
# zfs list -t snapshot | grep rpool
...
rpool/ROOT/debian@2018-08-01-230001_test

Itu ada. Jika error: fn_borkedsegera terjadi, Anda dapat mengembalikan sistem Anda ke kondisi saat ini dengan bahagia

# zfs rollback rpool/ROOT/debian@2018-08-01-230001_test

Sekarang cobalah dengan menginstal dua game kecil yang kemungkinan tersedia di repo Anda:

# apt-get install tanglet sudoku
...
# zfs list -t snapshot | grep apt\-get
rpool/ROOT/debian@apt-get_2018-08-02-033614

Cuplikan itu berisi sistem file Anda seperti sebelum kedua game dipasang.

# exit
$ sudoku

Waktu yang menyenangkan untuk nenek, tetapi Anda membenci sudoku.

$ sudo -i
# zfs rollback rpool/ROOT/debian@apt-get_2018-08-02-033614
# exit
$ sudoku
-bash: /usr/games/sudoku: No such file or directory
$ tanglet
-bash: tanglet: command not found

Setelah beberapa snapshot diambil, Anda dapat kembali ke yang sebelumnya dengan menambahkan -rbendera. Dalam kasus kami, misalnya, coba

# zfs -r rollback rpool/ROOT/debian@2018-08-01-230001_test

Berhati-hatilah, bagaimanapun, bahwa ini tidak hanya akan mengembalikan sistem file Anda ke keadaan saat rpool/ROOT/debian@2018-08-01-230001_testdiambil, tetapi juga akan menghapus semua snapshot yang tidak dapat diambil kembali. Jika Anda mengikuti pos ini, foto rpool/ROOT/debian@apt-get_2018-08-02-033614itu sekarang akan hilang.

Saya menguji apt-get upgradepada Debian GNU / Linux dengan

# apt-get -t=oldstable install tanglet sudoku
...
# apt-get upgrade
...
# zfs list -t snapshot | grep apt\-get

Berhasil. Satu snapshot dibuat untuk installperintah, yang lain untuk upgradeperintah.

Peringatan : Saya menguji ini untuk pertama kalinya hari ini dan tahu sedikit tentang cara kerja apt. Jika ini menghancurkan sesuatu untuk Anda atau menimbulkan risiko yang belum dipertimbangkan oleh pikiran saya, silakan komentar tentang hal itu di bawah ini.

LaTeX2enub1336
sumber