Apakah ada cara, sebelum memulai suatu aptitude upgrade
atau apt-get upgrade
, untuk mengatur sesuatu sehingga Anda dapat "dengan mudah" mengembalikan sistem Anda ke keadaan "apt" itu sebelum peningkatan yang sebenarnya, jika terjadi kesalahan?
Misalnya, instal ulang versi lama paket yang ditingkatkan selama proses.
(EDIT) Beberapa petunjuk : Saya tahu bahwa etckeeper
misalnya menggunakan beberapa pengait apt
sehingga diberitahukan setiap kali apt
menginstal atau menghapus instalan sebuah paket. Saya kira mungkin ada beberapa jenis skrip yang dapat menyimpan daftar paket yang baru diinstal dan nomor versi mereka sebelumnya untuk dapat menginstalnya kembali dari apt
cache ( /var/cache/apt/archives
). Ada juga checkinstall
yang dapat melacak modifikasi file ...
Adakah detail tentang bagaimana mencapainya dengan benar?
Jawaban:
Saya baru saja harus mencari jawaban untuk ini, karena yang terakhir
apt-get upgrade
pada server Debian membuatnya tidak mungkin untuk boot kernel terbaru di luar kotak sibuk, gagal me-mount partisi root zfs. Setidaknya kernel yang lebih lama masih bisa boot, tetapi tidak kompatibel dengan perangkat lunak lain. Maka dari itu perlu adanya rollback.Jawaban singkatnya - Anda dapat menggunakan perintah berikut:
jika itu melakukan apa yang Anda inginkan hapus
-s
dan jalankan lagi. Berikut langkah-langkah yang saya ambil agar ini berfungsi dengan baik:Saya sementara memangkas saya
/var/log/dpkg.log
untuk meninggalkan hanya upgrade hari iniSaya menginstal skrip kecil
apt-history
dari sini ke~/.bashrc
dan berlariIni memberikan daftar paket versi yang diformat dengan baik untuk digulung kembali dengan memasukkannya ke dalamnya
apt-get install
. Pangkas daftar ini sebagaimana yang diperlukan dalam editor teks dan kemudian jalankan (dengan-s
untuk dry-run pertama):Apt akan memperingatkan tentang downgrade yang diharapkan. Untuk mencegah rollback ini ditimpa oleh pemutakhiran berikutnya, paket-paket perlu disematkan, sampai masalah asli diselesaikan. Misalnya dengan:
apt-mark hold zfsutils libzfs2 ...
sumber
apt-history rollback
perintah dapat diganti dengan sesuatu sepertiawk '$3 ~ /upgrade/ {print $4"="$5}' dpkg.log
.awk '$1 == "2018-09-07" && $3 == "upgrade" {print $4"="$5}' /var/log/dpkg.log
E: Version '5.24.1-3+deb9u3' for 'libperl5.24' was not found
. Saya menggunakan Debian Stretch untuk Raspian.File log
/var/log/apt/history.log
dan/var/log/apt/term.log
hal-hal terdekat yang tersedia untuk deskripsi Anda:history.log
memberikan daftar ringkasan dari setiap tindakan yangapt
dilakukan dalam format berikut:Secara khusus, ini memberikan daftar paket yang baru diinstal, atau paket yang dihapus. Selain itu,
term.log
menunjukkan apa yang sebenarnya muncul di terminal selama aksi, sehingga akan menunjukkan versi lama dan baru dari paket. Sampel acak dari sayahistory.log
:Mencoba untuk memutar kembali
apt
secara otomatis tidak disarankan, tetapi jika Anda menggunakan log, maka harus dimungkinkan untuk melakukannya secara manual kecuali jika tindakan yang gagal telah merusak sesuatu yang menggangguapt
tindakan, misalnya database dpkg yang tidak konsisten. Dalam hal ini, Anda harus memperbaiki masalah sebelum melanjutkan.sumber
Tidak, apt tidak membuat itu mudah.
Pilihan terbaik adalah beberapa jenis snapshot. Entah filesystem snapshots melalui lvm / zfs / btrfs atau instance snapshots jika Anda menggunakan semacam VM.
Satu-satunya pilihan lain adalah melakukan inventarisasi paket yang diinstal (dpkg -l) sebelum dan sesudah. Jika Anda ingin "memutar kembali", Anda harus menginstal versi sebelumnya secara eksplisit.
sumber
apt install openssl=1.0.2g-1ubuntu4.12
menghasilkanE: Version '1.0.2g-1ubuntu4.12' for 'openssl' was not found
. Saya baru saja meningkatkan ke1.0.2g-1ubuntu4.13
dan saya bertanya-tanya apakah itu menyebabkan beberapa masalah CORS / CSP sekarang