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?
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 .
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.
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.
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:
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.
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 )
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.
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.
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.
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.
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.
Menggunakan Apt-Undo adalah opsi yang memungkinkan, tetapi itu hanya bisa berfungsi jika Anda menggunakannya untuk menginstal dan menghapus paket. Ini tidak akan membantu jika Anda telah menghapus instalan perangkat lunak dengan cara biasa.
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.
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:
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
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
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.
Jawaban:
aptitude
memberi Anda akses ke semua versi paket jika tersedia sesuai dengan manajemen paket Debian .sumber
Saya menemukan Blog Blog Hartman: Cara Membatalkan Pembaruan di Ubuntu Lucid
sumber
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:
Selanjutnya, saya mencoba mencari file paket yang masih di-cache pada disk (untungnya bagi saya saya belum menjalankan autoclean):
Sepertinya saya tidak memiliki paket ethtool yang lebih lama karena beberapa alasan. Namun, mari kita lanjutkan dengan menginstal paksa file paket yang lebih lama:
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:
Keberhasilan! Sebenarnya ini tidak menyelesaikan masalah saya. Tapi itu berhasil menurunkan versi paket, QED.
sumber
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 )
tinjau output untuk memverifikasi bahwa ini adalah paket dan versi yang akan dikembalikan. Kemudian gunakan aptitute untuk melakukan downgrade dari paket yang terdaftar:
Saya harap ini juga menghemat waktu bagi orang lain.
sumber
Saya percaya tidak, selain dari mengambil salinan lengkap dari filesystem yang relevan (yang mengandung
/
,/bin
,/lib
,/sbin
,/usr
,/var
,/etc
dan/boot
(yang semua mungkin pada pada filesystem) dan boot record Anda) sehingga Anda dapat memutar mesin kembali setelah itu.sumber
/var
tersimpan di cache apt Anda di suatu tempat di ) dan file konfigurasi yang relevan disimpan. Anda kemudian dapat mencoba memaksa kembali dengan secara eksplisit mengatakandpkg
untuk 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.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.
sumber
Anda dapat mencoba checkinstall
Jadi mungkin Anda bisa memerintahkannya untuk menjalankan aptitude safe-upgrade dan itu akan melacak setiap modifikasi yang dilakukan oleh upgrade.
sumber
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.
sumber
Menggunakan Apt-Undo adalah opsi yang memungkinkan, tetapi itu hanya bisa berfungsi jika Anda menggunakannya untuk menginstal dan menghapus paket. Ini tidak akan membantu jika Anda telah menghapus instalan perangkat lunak dengan cara biasa.
http://www.ubuntugeek.com/apt-undo-a-simple-way-of-undoing-apt-actions.html http://lkubuntu.wordpress.com/2011/07/27/apt-undo-a -simple-way-of-undoing-apt-actions /
sumber
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:
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.
sumber
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-get
untuk menjalankanzfs snapshot
sebelum 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
dengan konten
di mana
rpool/ROOT/debian
harus 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 atributNAME
dengan perintahTetapi apakah itu berhasil?
Anda sebaiknya mengambil snapshot sebelum mengikuti saran konfigurasi dari beberapa orang internet acak:
Itu ada. Jika
error: fn_borked
segera terjadi, Anda dapat mengembalikan sistem Anda ke kondisi saat ini dengan bahagiaSekarang cobalah dengan menginstal dua game kecil yang kemungkinan tersedia di repo Anda:
Cuplikan itu berisi sistem file Anda seperti sebelum kedua game dipasang.
Waktu yang menyenangkan untuk nenek, tetapi Anda membenci sudoku.
Setelah beberapa snapshot diambil, Anda dapat kembali ke yang sebelumnya dengan menambahkan
-r
bendera. Dalam kasus kami, misalnya, cobaBerhati-hatilah, bagaimanapun, bahwa ini tidak hanya akan mengembalikan sistem file Anda ke keadaan saat
rpool/ROOT/debian@2018-08-01-230001_test
diambil, tetapi juga akan menghapus semua snapshot yang tidak dapat diambil kembali. Jika Anda mengikuti pos ini, fotorpool/ROOT/debian@apt-get_2018-08-02-033614
itu sekarang akan hilang.Saya menguji
apt-get upgrade
pada Debian GNU / Linux denganBerhasil. Satu snapshot dibuat untuk
install
perintah, yang lain untukupgrade
perintah.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.
sumber