Apakah ada cara untuk mengembalikan pemutakhiran terbaru?

55

Ini telah terjadi berulang kali pada saya dalam 5 tahun terakhir: pemutakhiran merusak sistem saya. Setiap kali saya berakhir dengan situasi ini, saya harus menginstal ulang seluruh sistem, yang benar-benar menjengkelkan.

Apakah ada cara untuk mengembalikan pemutakhiran terbaru untuk dapat memiliki sistem fungsional tanpa menginstal ulang? Jika tidak, yang merupakan cara terbaik untuk menyarankan ini sebagai ide prioritas utama?

Saya membaca ide ini dijelaskan di brainstorm.ubuntu.com, tetapi rasanya sudah mati ... dan forum penuh dengan contoh pemutakhiran yang melanggar hal-hal, itu sebabnya saya merasa perlu dilakukan sesuatu tentang topik ini. Terima kasih!

Marcelo Ruiz
sumber
17
Saya masuk hanya untuk memberi suara pada pertanyaan ini. Kurangnya alat roll-back yang koheren di OS Desktop 2011 menyedihkan. Windows memiliki System Restore 5+ tahun yang lalu, itu jauh di belakang kurva. Pengguna telah ( dengan benar ) dilatih untuk menginstal pembaruan keamanan, tetapi kami terus-menerus dihukum karena melakukan ini dengan driver yang gagal.
Gates VP
@GatesVP Poin yang Anda buat 8+ tahun yang lalu ini masih mengganggu Ubuntu (tidak dapat berbicara untuk distro lain tetapi mungkin tidak lebih baik). Saya merasa ini benar-benar membuat frustrasi. Seseorang harus memiliki kata-kata Anda dicetak dalam font 64 pt dan menggantung di depan setiap pemula yang akan terjun ke dunia linux.
horaceT
Saya harus setuju bahwa gambar cadangan adalah cara untuk pergi. Tidak disebutkan apakah ini sistem 'produksi'. Jika itu dan layak untuk memiliki sistem uji klon maka dengan cadangan gambar adalah cara untuk pergi. Jika hanya pembaruan aplikasi, maka solusi tercepat adalah menurunkan versi dengan atau tanpa opsi 'paksa'.
JHPArizona

Jawaban:

14

Dalam sinaptik, Anda setidaknya dapat mengontrol, apa saja pembaruan terkini: File-menu, histori.

(jika sinaptik dapat dimulai, dengan sistem yang rusak). Jadi dengan perintah apt -...-, untuk mengembalikan pembaruan mereka, seharusnya tidak terlalu sulit.

Saya kira ada juga sejarah-perintah untuk baris perintah.

Mungkin Anda harus menghapus seluruh paket, dan menginstal versi tertentu. Afaik, mungkin untuk menginstal versi tertentu, tetapi saya tidak pernah perlu melakukannya.

pembaruan: Mencari bagaimana melakukannya dengan apt:

Temukan paket yang diinstal dalam 3x24j terakhir:

find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' 

Dengan kebijakan apt-cache, Anda melihat versi program yang tersedia:

sudo apt-cache policy PROGRAM:
 *** 3.6.7+build3+nobinonly-0ubuntu0.10.04.1 0
        500 http://de.archive.ubuntu.com/ubuntu/ lucid-updates/main Packages
        500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
        100 /var/lib/dpkg/status
     3.6.3+nobinonly-0ubuntu4 0

di sini 3.6.7 dan 3.6.3. Sekarang Anda tahu versi apa yang mungkin diinstal sebelumnya (seringkali bukan pendahulu langsung):

sudo apt-get install PROGRAM=3.6.3

Maka Anda perlu melakukan apt-pinning, untuk mencegah pembaruan di masa mendatang:

Buat file baru di /etc/apt/preferences.d/ (jika> = 10.4) dinamai sesuai program Anda,

Package: program
Pin: version 3.6.3*
Pin-Priority: 1000
Pengguna tidak diketahui
sumber
Terima kasih atas informasinya. Saya tidak sabar menunggu ubuntu untuk mengelola zfs di luar kotak!
Marcelo Ruiz
Maaf - apa hubungannya dengan zfs? Apakah zfs mengelola rollbacks? Atau apakah pembaruan merusak zfs-install Anda? Atau apakah pembaruan zfs merusak sesuatu?
pengguna tidak diketahui
Bagaimana jika versinya 1.0.2g-1ubuntu4.12sesuai dengan apt? Itu menolak untuk menerima itu sebagai nomor versi. Saya ingin menurunkan versi 1.0.2g-1ubuntu4.13ke1.0.2g-1ubuntu4.12
Csaba Toth
terima kasih, suuuuuuuuuuuuuch sakit. Pembaruan terakhir saya yang benar-benar menghancurkan input pengontrol memiliki 80 paket yang terdaftar pada find /var/lib/dpkg/info/ -name \*.list -mtime -3 | sed 's#.list$##;s#.*/##' saat ini. Ini kurang merepotkan untuk menginstal ulang seluruh sistem saya
tatsu
7

Sebagian besar Anda dapat berkonsultasi /var/log/apt/history.loguntuk perubahan yang dilakukan oleh apt / synaptic. Ini hanya sedikit forensik dan banyak cut / paste yang harus dilakukan.

Kembali ke tanggal ketika sistem Anda masih berfungsi dengan baik.

Pertama-tama ambil semua paket yang terinstal sejak saat itu dan satukan dalam skrip uninstall. Setelah skrip selesai, mulai tambahkan kembali semua paket yang dihapus lagi.

Contoh kasus:
logfile:

Start-Date: 2014-05-28  21:28:11
Commandline: synaptic
Install: libfglrx-amdxvba1:amd64 (13.12-3kali1, automatic), libgl1-fglrx-glx:amd64 (13.12-3kali1), glx-alternative-fglrx:amd64 (0.4.1kali1, automatic), libfglrx:amd64 (13.12-3kali1, au$
Remove: fglrx-glx-ia32:amd64 (12-6+point-3)
End-Date: 2014-05-28  21:28:27

kamu bisa melihat,

libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 & libfglrx:amd64 

diinstal oleh Synaptic. sebagai seperti libfglrx:amd64dihapus oleh Synaptic.

Kami menjalankan urutan terbalik, jadi pertama-tama kami menghapus paket yang baru diinstal dan kami menambahkan kembali paket yang dihapus.

Perintah yang berfungsi untuk kasus ini bisa seperti:

sudo apt-get remove -y libfglrx-amdxvba1:amd64 libgl1-fglrx-glx:amd64 glx-alternative-fglrx:amd64 libfglrx:amd64 && sudo apt-get install -y libfglrx:amd64

Mungkin itu bukan ide terbaik untuk pergi tanpa -ysaklar - untuk memiliki kontrol lebih besar tentang proses (untuk menghindari ketergantungan yang rusak). Sebagian besar dari Anda tidak akan mematahkan jari saat melakukan beberapa verifikasi "y"

Dalam kebanyakan kasus, rollback dimungkinkan dengan cara ini, tetapi jika dependensi sudah terputus - Anda mungkin mengalami masalah yang lebih besar.

Mat
sumber
6

Sebagian besar waktu jika sistem Anda rusak itu adalah masalah kernel .

Cukup boot kernel yang lebih lama dan instal ulang paket terbaru (terutama paket kernel) yang mungkin tidak diperbarui dengan benar. Beberapa catatan:

/var/log/dpkg.log

adalah teman Anda untuk memeriksa apa daftar paket yang baru saja diperbarui / diinstal

sudo apt-get -f install

sebagian besar waktu dapat memperbaiki paket setengah terinstal

Giordano Battilana
sumber
4

Sayangnya belum ada cara untuk melakukan ini. Snapshot / rollback tingkat sistem file adalah salah satu fitur btrf yang akan datang, tetapi masih memiliki cara untuk menjadi fitur yang lengkap dan cukup stabil untuk digunakan sebagai sistem file default.

psusi
sumber
1
Untuk snapshot sistem file, Anda bisa menggunakan LVM, dengan ext3 atau ext4.
Flimm
@ Flimm, sekarang Anda bisa, meskipun tidak bekerja dengan baik dan mengharuskan Anda mengatur LVM ketika Anda menginstal di tempat pertama.
psusi
3

Saat melakukan upgrade besar, saya mengkloning disk menggunakan Clonezilla . Membakarnya di CD, memiliki HDD cadangan (eksternal) dan ikuti instruksi pada Clonezilla LiveCD. Pilih partition-imagemode, ini menggunakan ruang paling sedikit.

Jika Anda berpikir Anda telah merusak sistem Anda (atau ingin mengembalikan perubahan apa pun), cukup boot di Clonezilla LiveCD, pilih gambar pada HDD (eksternal) Anda dan kembalikan. Karena gambar-gambar ini adalah salinan literal dari setiap bit pada disk Anda, ini mungkin memakan waktu beberapa jam tergantung pada kecepatan disk Anda dan kecepatan koneksi (koneksi antara data, biasanya HDD USB eksternal, dan komputer).

Omong-omong, ini disebut metode cadangan.

Lekensteyn
sumber
3

Anda dapat menginstal versi lebih lama dari paket yang diberikan (downgrade) dengan apt atau dpkg dengan mudah . Menemukan versi yang lebih lama dari paket adalah masalah karena ini sering menghilang dari kolam dan mirror sebagai pembaruan masuk.

Jika Anda menginstal paket dari CD instal atau mirror yang ketinggalan zaman atau cache, Anda juga perlu menyimpannya di versi lama agar tidak diupgrade hingga Anda mengizinkannya. Yang berarti Anda harus melihat pembaruan dan mengujinya sampai masalah Anda diperbaiki. Ini tentu saja merupakan masalah karena sementara itu (mungkin selamanya) Anda akan dibiarkan dengan paket yang belum diperbaiki, mungkin tidak aman. Itu berarti setiap pengguna dengan beberapa jenis masalah sistem akan dibiarkan dalam keadaan acak sampai mereka dapat menyelesaikannya.

Semua perangkat lunak juga tidak kompatibel ke depan, sehingga versi yang lebih lama dari sesuatu mungkin tidak berperilaku baik ketika diumpankan dengan konfigurasi yang lebih baru atau file data. Jelas ini tidak mungkin untuk diselesaikan kecuali Anda juga memutar kembali semua data pengguna ke kondisi sebelum upgrade dilakukan.

Akan lebih bagus jika ada cara untuk melakukan ini, tetapi itu secara besar-besaran bermasalah. Siapa pun yang berpikir ada solusi yang koheren harus menulis proposal dan mengundang komentar atau, lebih baik lagi, membuat bukti solusi konsep (kode, skrip, dokumen). Troll dan merengek tidak konstruktif.

Karena tidak ada solusi teknis yang bersih, sebagian besar perangkat lunak dikembangkan (dan terintegrasi) dengan mentalitas "satu-satunya jalan adalah maju". Mencoba mengelola versi yang sudah usang adalah buang waktu semua orang. Masalah yang ditemukan diperbaiki dalam versi yang lebih baru ASAP. Sebagai solusi kecil, saya ingin melihat arsip versi paket sebelumnya disimpan di suatu tempat untuk penyelesaian sementara sesekali.

Sementara itu Anda dapat melaporkan bug dan jangan berharap perangkat lunak yang berdarah tidak pernah gagal. Perbaikan, setelah ditemukan, harus di pembaruan berikutnya. Dev adalah manusia (kebanyakan), dan karena itu bisa keliru. Komputer itu fiddly dan penuh variasi dan detail gila. Sistem yang dipelihara secara defensif menggunakan komponen yang didukung dengan baik dan distribusi perangkat lunak terintegrasi yang stabil dapat menjadi sangat stabil tanpa menjadi tidak aman atau tidak dapat di-upgrade meskipun ini.

XTL
sumber