Apakah ada alat atau bahkan seluruh distribusi yang mendukung paket yang diubah kembali setelah pembaruan?
Sebagai contoh: Saya memutakhirkan paket A, B dan C. Setelah bekerja dengan paket-paket itu selama beberapa hari, saya menemukan bug di B yang melanggar kesepakatan.
Sementara saya mengirimkan laporan bug, saya juga harus menurunkan versi B ke versi sebelumnya sehingga saya bisa menyelesaikan apa yang akan saya lakukan. Sementara itu A tergantung pada B, jadi itu perlu diturunkan juga, tetapi C tidak tergantung pada keduanya, sehingga bisa tetap pada versi saat ini.
Apakah ada alat atau distribusi yang mendukung ini?
Saya tahu bahwa sebagian besar distribusi memiliki cara untuk menurunkan versi suatu paket tetapi itu biasanya agak samar atau bahkan tidak mungkin karena paket sebelumnya telah dihapus dari repositori dan beberapa kasus (misalnya setelah memutakhirkan X server dan Mesa) benar-benar .. berantakan.
sumber
Jawaban:
NixOS mendukung upgrade rollback, meskipun seperti yang saya pahami, itu tidak berjalan sejauh yang Anda inginkan: jika Anda memutakhirkan A, B dan C dalam satu operasi, Anda dapat mengembalikan seluruh operasi itu, tetapi tidak hanya A dan B. (Anda harus dapat memutar kembali A, B dan C, dan kemudian memutakhirkan C ...) Itu masuk akal dari perspektif transaksional sekalipun.
Debian (dikombinasikan dengan arsip snapshot jika Anda tidak lagi memiliki paket lama) akan memungkinkan Anda untuk menurunkan versi B, dan alat-alat seperti
apt
atauaptitude
akan dalam banyak kasus mengetahui bahwa A juga perlu diturunkan (setelah Anda meyakinkan mereka bahwa Anda tidak ingin hanya memutakhirkan B). Tetapi seperti yang Anda katakan itu cenderung agak berantakan, dan penurunan versi paket tidak didukung di Debian (yang berarti bahwa sebagian besar waktu mereka bekerja, tetapi jika mereka rusak itu bukan bug).sumber
nix-env
, sebaliknya Anda menentukan hal-hal diconfiguration.nix
kemudian jalankannixos-rebuild switch
. Ini memiliki keuntungan bahwa semua konfigurasi sistem Anda ada di satu tempat, dan mudah untuk mencadangkan seluruh konfigurasi sistem Anda (cukup buat cadanganconfiguration.nix
file).Pada
yum
distribusi berbasis apa pun (mis. Red Hat EL , CentOS , dll), Anda dapat:memeriksa sejarah perubahan menggunakan sistem
sudo yum history list
periksa detailnya, gunakan
sudo yum history info 10
sudo yum history rollback 9
Peringatan
Ada beberapa peringatan yang jelas:
Dalam contoh saya, bahwa
<
di baris dengan ID4
(di kolom terakhir), berarti saya tidak dapat mengembalikan melewati titik itu.sumber
--enablerepo
flag untuk mengaktifkan repositori lama yang sebelumnya tidak digunakan untuk downgrade.yum
hanya menjaga agar daftar paket dan versi terinstal dan memeriksa dependensi ketika menginstal ulang versi lama. Jelas Anda bisa melakukannya dengan tangan .Pada OpenSUSE Anda dapat dengan mudah menggunakan Snapper dengan sistem file Btrfs .
Jika Anda menggunakan konfigurasi sistem file standar selama instalasi, ini diaktifkan secara default .
Setelah Kakap diaktifkan, ia sepenuhnya terintegrasi dengan
yast2
danzypper
. Ini akan membuat snapshot sistem file setiap kali Anda menginstal atau meningkatkan sesuatu (atau membuat pengguna, dll).Untuk mengembalikan sistem ke kondisi sebelumnya, Anda hanya perlu menjalankannya
yast2 snapper
.sumber
/var
sehingga harus digulung kembali/
walaupun itu adalah fs atau subvolume yang terpisah. Jauh lebih baik untuk menguji upgrade secara menyeluruh sebelum menerapkannya pada server produksi daripada mengandalkan fitur-fitur seperti rollback upgrade OS (yang sepele mudah dilakukan dengan cara setengah-arsen tetapi merupakan masalah yang sangat sulit untuk dipecahkan dengan benar )./home
dalam sistem file non snapshot yang terpisah .AIX sangat baik dalam memutar kembali pembaruan. Yah - kami berada di situs Unix / Linux dan Anda tidak pernah menentukan Anda ingin Linux :)
Setiap pembaruan AIX menyimpan semua file yang dimodifikasi dalam subdirektori terpisah di dalam sistem file / var. Pembaruan dapat dipulihkan dengan perintah asli yang sederhana, dan pemulihan tidak perlu jaringan untuk naik, tidak perlu media / paket, tidak menginstal ulang apa pun dan tidak tergantung pada apa pun teknologi snapshot - efeknya hanya bahwa file muncul kembali seperti sebelum pembaruan.
Sebagai bonus, ada satu perintah asli sepele
mksysb
untuk membuat cadangan sistem yang dapat di-boot-sendiri. File yang dapat dengan mudah di-boot pada sistem yang benar-benar disfungsional yang tidak bisa boot karena beberapa kerusakan / korupsi.Dan itu semua teknologi yang telah terbukti dengan sejarah puluhan tahun :)
sumber
Di Fedora (dan saya yakin di distribusi lain juga) Anda dapat meminta untuk kembali ke versi sebelumnya:
memberi Anda versi paket selanjutnya, dan Anda dapat meminta yang spesifik dengan:
Ini hanya berfungsi jika paket masih tersedia di repositori. Fungsionalitas tidak pernah terdengar, dengan cara apa pun. Ini memiliki hambatan, jika bagian dari upgrade adalah untuk mengubah konfigurasi, rollback tidak harus ke versi pastinya.
sumber
This only works if the package(s) are still available in the repositories.
yup, itulah masalahnya. Saya agak terkejut bahwa sepertinya tidak ada solusi yang 'lebih luas' untuk ini, terutama dengan jumlah distribusi rilis bergulir. Sampai sekarang sepertinya NixOS adalah pilihan terbaik saya, atau saya akan memerlukan semacam alat pencitraan sistem yang hanya bekerja pada perbedaan dan dapat mengembalikan sistem ke titik waktu tertentu selama 20 pembaruan terakhir (?).Arch Linux juga mendukung paket penurunan versi dan kernel. Anda juga dapat menginstal
downgrader
dandowngrade
alat untuk mengotomatiskan proses. Solusi btrfs juga berfungsi, saya telah menggunakannya untuk melakukan rollback manual sebelumnya.Bagaimana saya mengembalikan sistem saya:
Salah satu manfaat btrf adalah Anda dapat menggunakan subvolume dan "partisi" dinamis. Sebagai contoh, saya memiliki subvolume untuk / (disebut @), / tmp (@tmp), dan / home (@home). Maka mudah untuk membuat cadangan dan memutar kembali semua ini. Saya memiliki / tmp dalam subvolume terpisah karena membuat cadangan dengan sisa sistem tampaknya tidak ada gunanya, karena terhapus pada hampir setiap reboot.
sumber
Saya menggunakan Arch Linux dan menyimpan semua paket yang diunduh
/var/cache/pacman/pkg/
sehingga Anda dapat menurunkan versi paket apa saja kapan saja (Anda tidak dapat boot, gunakan live usb). Dari Arch Wiki :Untuk mencegah paket ditingkatkan, masukkan nama paket di
/etc/pacman.conf
, seperti:Untuk menghemat ruang, Anda dapat menghapus folder cache dengan:
Yang akan menghapus semua paket lama dan menyimpan yang terbaru, atau gunakan
-Scc
untuk menghapus semua.sumber