Saya membunuh karena kesalahan proses dpkg berjalan di latar belakang dan saya ingin menginstal ulang semua paket untuk memastikan semuanya baik-baik saja.
Pertama, saya mencoba untuk mendapatkan daftar semua paket dan menginstalnya kembali
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log
apt-get install --reinstall $(cat list.log)
Tetapi ada pesan seperti:
E: Couldn't configure pre-depend debconf:i386 for console-setup:i386, probably a dependency cycle.
Saya mencoba apt-get -f install
, tanpa hasil.
Sebagai upaya terakhir, saya menginstal ulang semua program yang gagal checksum:
dpkg -l | grep ^ii | awk '{ print $2 }' | xargs debsums -s -a
Apa yang harus saya lakukan untuk menginstal ulang semuanya?
Sunting: Masalah terpecahkan. Masalahnya adalah sesuatu yang lain (lihat komentar). Saya mengerti itu sesuatu yang harus dihindari dengan Debian.
debian
package-management
apt
alex_reader
sumber
sumber
Jawaban:
Coba ini, mengingat yang saya lakukan tidak mengujinya:
Sumber:
man apt-get
sumber
dpkg --get-selections
daftar perintah juga menghapus paket.Untuk berjaga-jaga, coba instal ulang setiap paket :
Anda mungkin ingin menambahkan jawaban ya untuk semua opsi pertanyaan juga.
sumber
dpkg --get-selections > list.log
dulu.list.log
diambil dari pertanyaan.Dalam salah satu sumber yang dikutip oleh Lucas Malor saya menemukan sebuah skrip yang disebut populator yang tampaknya dekat dengan solusi. Jika Anda mengatur variabel pemilihan paket ke daftar semua paket Anda
PKGLIST=$(dpkg --get-selections | grep -v deinstall| cut -f1)
Anda kemudian dapat menjalankan skrip dan menginstal ulang semua paket tetapi sistem mungkin akan memiliki beberapa masalah. Akan lebih baik untuk mengujinya di mesin virtual terlebih dahulu.
Berikut adalah varian skrip dari tautan di atas:
Jika kesalahan ditampilkan bahwa paket tertentu tidak dapat diinstal ulang jalankan perintah ini untuk mencoba lagi:
sumber
Coba ini sebagai gantinya karena itu akan mengambil output Anda dan menjadikannya satu garis raksasa dengan spasi yang memisahkan nama file.
dpkg --get-selections | grep -v deinstall | awk '{print $1}' > list.log awk '$1=$1' ORS=' ' list.log > newlist.log apt-get install --reinstall $(cat newlist.log)
Satu-satunya perubahan pada posting asli Anda adalah menambahkan dalam pernyataan awk kedua, yang mungkin bisa dilakukan sejalan dengan yang pertama untuk membuat file yang Anda inginkan.
Perubahan ini akan memaksa apt-get untuk mengunduh ulang paket dengan benar dan setiap dependensi yang hilang yang tidak diinstal pertama kali dan menginstalnya kembali secara berurutan.
Jika kita membuatnya sejajar, saya percaya itu akan terlihat seperti ini maka:
dpkg --get-selections | grep -v deinstall | awk '{print $1}' | awk '$1=$1' ORS=' ' > list.log
Dan kemudian pastikan Anda benar-benar membuat sistem memiliki paket yang benar (atau terbaru), bersihkan cache apt, perbarui dan kemudian unduh kembali semua file (Anda dapat melewati dua langkah pertama jika Anda hanya ingin apa yang Anda miliki di cache diinstal ulang):
apt-get clean && apt-get update && apt-get install --reinstall $(cat list.log)
Saya memiliki lebih dari 2k paket yang diinstal pada sistem yang saya tingkatkan yang mengalami hangup. Menggunakan dpkg --configure -a menyelesaikan instalasi (itu masih dalam tahap akhir). Saya kemudian menjalankan ini untuk membuat semuanya menginstal ulang dengan benar.
Atau seperti yang dinyatakan di /superuser/298912/reinstall-debian-while-keeping-installed-packages-and-data :
sudo apt-get install --reinstall $(dpkg --get-selections | grep -w 'install$' | cut -f1)
Pastikan Anda menjalankan "init 2" terlebih dahulu sebelum menginstal ulang, karena beberapa komponen X atau window manager favorit Anda mungkin tidak suka diinstal ulang.
sumber
$(cat file)
dikutip pada spasi putih dan memberikan hasil yang sama persis apakah file dibatasi oleh baris baru atau spasi.--reinstall
mungkin bisa membantu tetapi sudah diberikan dua kali sebelum ini.Saat menggunakan Aptitude ada cara mudah dan cepat untuk melakukannya:
sudo aptitude reinstall '~i'
yang akan menginstal ulang semua paket yang diinstal saat ini.
sumber
Saat menggunakan RPM, jika Anda menyebabkan kerusakan dalam paket database, ada opsi untuk membangun kembali basis data ini, sehingga mencegah Anda dari harus melalui dasarnya menginstal ulang. Seperti yang ditunjukkan oleh satu pengguna di sini, ini dilakukan di Debian oleh
dpkg --configure -a
.sumber
dpkg --configure -a
adalah untuk mengkonfigurasi semua paket yang tidak dibongkar dan tidak dikonfigurasi. Lihat halaman manualdpkg
dandpkg-reconfigure
dan juga debian.org/doc/manuals/debian-faq/ch-pkg_basics.en.html