Bencana baru saja terjadi pada saya setelah saya menjalankan perintah yum remove python
dan sekarang saya tidak bisa boot server lagi.
Bagaimana ini terjadi: Saya mencoba memperbarui beberapa aplikasi melalui yum pada CentOS 5 VPS saya dan perintah itu gagal karena beberapa kesalahan python 2.4 yang aneh. Saya perhatikan bahwa versi python saya sudah tua dan saya mencoba menginstalnya kembali dengan terlebih dahulu menghapusnya, dan saya melakukannya yum remove python
.
Setelah itu ia bertanya kepada saya sesuatu tentang menghapus dependensi dan sepertinya tidak ada yang bisa saya lewatkan sehingga saya mengklik Y
.
Jadi akibatnya adalah bahwa saya tidak dapat menjalankan perintah apa pun. Saya bahkan mencoba cd /var/www
tetapi mengatakan sesuatu seperti " command does not exist in /usr/bin
". Ketika saya terbiasa tabmelihat saran navigasi folder, struktur file sepertinya masih ada (setidaknya /var/www
bit yang benar-benar penting bagi saya). Setelah itu saya mencoba me-restart vps (dari panel admin karena reboot
perintah tidak berfungsi) dan sekarang tidak bisa boot lagi.
Sekarang pertanyaan saya adalah: bagaimana mungkin perintah seperti itu dapat menghancurkan server saya seperti ini?
# dpkg --remove dpkg
dimuntahkandpkg: error processing dpkg (--remove): this is an essential package; it should not be removed
. Jika saya menambah--force-all
baris perintah dpkg,dpkg
keluarkan seluruh bundel peringatan dan hasil untuk menghapus sendiri, bersama dengan melanggar sekitar dua lusin paket lain yang bergantungdpkg
. Pada sistem yang sebenarnya, saya cukup yakin Anda akan kesulitan memulihkan dari itu, tetapi Anda mungkin bisa (ada sedikit keajaiban untuk.deb
s); CentOS mungkin atau mungkin tidak serupa dalam hal ini.Jawaban:
Saya sungguh-sungguh minta maaf: Saya bisa merasakan sakitnya memiliki server yang tidak dapat di-boot / tidak dapat diperbaiki.
Namun, saya bingung ketika membaca itu:
Daftar paket yang harus dihapus pasti sangat besar, karena
python
merupakan bagian penting dari RHEL / CentOS. Anda seharusnya tidak pernah mengkonfirmasi beberapa pesan peringatan yang Anda tidak benar-benar mengerti.Hal terbaik yang dapat Anda lakukan, seperti yang disarankan, adalah mem-boot melalui media pemulihan (yaitu: livecd), mengekstrak file data yang diperlukan, dan menginstal ulang mesin Anda dengan rilis CentOS yang lebih baru (dan karena CentOS 6 sudah cukup tua, saya sangat menyarankan Anda untuk rebase pada CentOS 7).
sumber
Terus terang, karena Anda melakukan sesuatu yang tidak sepenuhnya Anda mengerti. Python adalah bagian penting dari OS dan hal-hal yang Anda anggap tidak penting sangat penting. Pulihkan dari cadangan.
Ketika Anda menghapus Python,
yum
menunjukkan kepada Anda daftar panjang paket yang juga akan dihapus. Daftar ini berisi hal-hal penting sepertiyum
itu sendiricoreutils
,,net-tools
dan lainnya. Anda mengonfirmasi kepada yum bahwa Anda tahu apa yang Anda lakukan dan ingin melanjutkan. Hasil dari ini adalah sistem yang tidak bekerja. Ini seharusnya tidak mengejutkan.Sebagai catatan, pada versi CentOS yang lebih baru ini tidak lagi mungkin, karena paket-paket tertentu sekarang ditandai sebagai terlindungi dan tidak dapat dihapus, hanya diinstal ulang atau ditingkatkan. Dan karena CentOS 5 sekarang adalah EOL, ini adalah waktu yang tepat untuk meningkatkan ke versi yang lebih baru.
sumber
yum
bekerja dengan menyusuri grafik dependensi dan menghapus paket sampai semua dependensi puas. Jika paket A tergantung pada paket B dan paket B tergantung pada paket C,yum
juga akan menghapus paket B dan pada gilirannya, paket A untuk memenuhi semua dependensi jika Anda mencoba untuk menghapus paket C. Untuk paket pusat (sepertipython
), ini dapat menghasilkan sejumlah besar paket yang dihapus yang tampaknya tidak terkait.coreutils
tidak bergantungpython
langsung pada CentOS 5, tetapi melalui satu atau lebih paket perantara - hasilnya sama: Penghapusan.python -> cracklib -> pam -> coreutils
Ketergantungan ada karena ada python bindings ke cracklib, pam dibangun dengan cracklib, dan su terintegrasi dengan pam. Tentu saja butuh banyak hal penting juga, seperti yum untuk menginstal paket lagi ...Anda melakukan sesuatu tanpa sepenuhnya memahami konsekuensinya
Instalasi itu tidak dapat dipulihkan, akan membutuhkan banyak pekerjaan untuk menginstal ulang centos5. Dan itu rencana yang buruk karena
Larutan
Taruhan terbaik Anda adalah membuat VPS baru, instal CentOS7 baru, dan kemudian pasang kembali volume disk centos5 lama dan pasang hanya-baca. Kemudian bekerja untuk menyalin (tidak memindahkan) data Anda dari drive lama ke yang baru.
Perhatikan ini akan menjadi metode saya menggunakan AWS. Jika penyedia VPS Anda tidak dapat melampirkan disk ke VM yang berbeda maka Anda harus mengubah rencana.
Apa pun yang Anda lakukan, pertimbangkan untuk menyiapkan cadangan otomatis di masa mendatang. Itu tidak akan menyelamatkan Anda, tetapi itu akan membuat pemulihan sedikit lebih fleksibel. Saat ini Anda membutuhkan data pada disk itu di server yang berfungsi baru. Jangan kehilangan disk yang ada.
sumber
Bagaimana ini bisa terjadi? Yah, cukup sederhana: Dengan menghapus bagian yang penting untuk server Anda.
Langkah selanjutnya untuk Anda: gunakan kembali OS baru dan pulihkan data Anda dari cadangan.
sumber
Seperti yang ditunjukkan oleh dragon788 dan lain-lain di komentar, di Gentoo, para pengembang juga memelihara satu set mudah terbakar paket yang hanya pre-built, versi biner dari satu set paket inti dari OS untuk situasi hanya seperti itu. Jika Anda kehilangan paket inti, Anda hanya perlu mem-boot sistem ke LiveCD / DVD, memasang drive OS dari server yang rusak dan membongkar paket tinderbox ke sistem file, unmount, reboot dan, jika boot dengan benar, membangun kembali paket-paket kembali ke spesifikasi dan konfigurasi server Anda.
Jadi, untuk melakukan sesuatu yang serupa di CentOS, saya pikir Anda perlu menemukan versi RPM yang tepat yang dihapus, lalu boot ke LiveCD / DVD, pasang drive OS dan chroot di (mungkin ... jika Anda terbiasa dengan cara menggunakan flag " --relocate " untuk rpm , Anda mungkin tidak perlu melakukan chroot), lalu instal ulang paket-paket itu, unmount dan reboot.
Tentu saja, karena dukungan untuk CentOS 5 berakhir bulan lalu, setelah sistem di-boot ulang dengan benar, Anda dapat memperbaruinya ke versi saat ini.
HTH.
sumber
Anda biasanya dapat mem-boot dari media instal dan kemudian
chroot
menjalankan perintah atau masuk ke instal saat ini dan memulihkan file atau melakukan instal ulang paket.sumber