Il server è stato cancellato dopo "yum remove python" [chiuso]


65

Un disastro mi è appena successo dopo aver eseguito il comando yum remove pythone ora non riesco più ad avviare il server.

Come è successo: ho provato ad aggiornare alcune app tramite yum sul mio CentOS 5 VPS e il comando non ha funzionato a causa di uno strano errore di Python 2.4. Ho notato che la mia versione di Python era vecchia e ho provato a reinstallarla rimuovendola prima, e così ho fatto yum remove python.

Dopo ciò mi ha chiesto qualcosa sulla rimozione delle dipendenze e sembrava che non potessi mancare, quindi ho cliccato Y.

Quindi le conseguenze di ciò furono che non fui in grado di eseguire alcun comando. Ho anche provato, cd /var/wwwma ha detto qualcosa come " command does not exist in /usr/bin". Quando tabvedevo i suggerimenti per la navigazione nelle cartelle, la struttura dei file sembrava essere ancora lì (almeno il /var/wwwbit che è davvero importante per me). Dopo quello ho provato a riavviare il vps (dal pannello di amministrazione poiché il rebootcomando non ha funzionato) e ora non si avvia più.

Ora la mia domanda è: come può un comando del genere distruggere il mio server in questo modo?


33
Per inciso, apt-get remove apt funziona. Non ho provato dpkg --remo ancora dpkg. Scommetto che è davvero brutto.
joshudson,

19
Hai un backup, giusto?
vasin1987,

21
@joshudson Ho appena fatto girare un CD live di Debian 8.4 in una VM e l'ho provato. Risultato: # dpkg --remove dpkgsputa dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Se aggiungo --force-allalla riga di comando di dpkg, dpkgsputa un intero pacchetto di avvertimenti e procede alla rimozione di se stesso, oltre a rompere circa due dozzine di altri pacchetti che dipendono dpkg. Su un sistema reale, sono abbastanza sicuro che avresti qualche problema a recuperare da quello, ma probabilmente potresti (c'è poca magia da .debs); CentOS può o meno essere simile al riguardo.
un CVn

6
@joshudson Funziona perché c'è una copia di apt in esecuzione quando si esegue il comando ... non appena termina (e il programma termina), non sarà più possibile utilizzare apt.
SnakeDoc

2
Lo stesso Yum è implementato in Python, credo ... Quindi rimuovere Python spara abbastanza bene al tuo piede!
peufeu,

Risposte:


67

Sono sinceramente dispiaciuto: sento il dolore di avere un server non avviabile / inutilizzabile.

Tuttavia, mi sono perso leggendo che:

Dopodiché mi ha chiesto qualcosa sulla rimozione delle dipendenze e sembrava che non potessi mancare, quindi ho fatto clic su [Y]

L'elenco dei pacchetti da rimuovere sicuramente era davvero enorme, così come pythonuna parte essenziale di RHEL / CentOS. Non dovresti mai confermare alcuni messaggi di avviso che non capisci davvero.

La cosa migliore che puoi fare, come già suggerito, è avviare tramite un supporto di ripristino (ad esempio: livecd), estrarre i file di dati richiesti e reinstallare il tuo computer con una nuova versione di CentOS (e poiché CentOS 6 è piuttosto vecchio, io fortemente suggerire di rifare su CentOS 7).


2
Per il futuro: compilare server con il sistema operativo su LV LVM (di cui ISTR è l'impostazione predefinita RHEL). Prima di tutto ciò che ha anche la minima possibilità di rompere il sistema, crea delle istantanee. Se effettivamente interrompe il sistema, è possibile ripristinare l'istantanea in pochi minuti. Altrimenti quando tutto va bene è possibile rimuovere l'istantanea. unix.stackexchange.com/questions/18913 . NB le istantanee non sono backup. Hai ancora bisogno di backup per le situazioni in cui lo snapshot non può salvarti.
nigel222,

Su Debian / Ubuntu, potrebbe avviare l'immagine di ripristino (ad esempio, finnix), decomprimere il sistema di base con debootstrap, chroot e apt-get install ubuntu-desktop. Non ho idea se centos / rhel abbiano un equivalente debootstrap.
Edheldil,

1
CentOS 6 è supportato fino a novembre 2020 . Non c'è fretta di aggiornare (anche se andare a 7 ha molti vantaggi).
psmears,

106

Francamente, perché hai fatto qualcosa che non hai capito completamente. Python è una parte essenziale del sistema operativo e le cose che hai considerato non importanti sono molto importanti. Ripristinare dal backup.


Quando hai rimosso Python, yumti mostrava un lungo elenco di pacchetti che sarebbero stati rimossi. Questa lista contiene essenziali come yumper sé, coreutils, net-toolse altri. Hai confermato a yum che sai cosa stai facendo e vuoi procedere comunque. Il risultato è un sistema non funzionante. Questo non dovrebbe sorprendere.

Per la cronaca, sulla versione più recente di CentOS questo non è più possibile, poiché alcuni pacchetti sono ora contrassegnati come protetti e non possono essere rimossi, solo reinstallati o aggiornati. E poiché CentOS 5 è ora EOL, questo è un buon momento per passare a una versione più recente.


3
Haha bene che si è intensificato rapidamente (yum rimuovi python == basta pulire l'intera macchina: D). Credi che ci sia un modo in cui posso almeno ripristinare i file che erano in / var / www o è anche completamente foobard?
Tadoman,

8
@tadoman: se riesci ad avviare un qualche tipo di sistema di salvataggio, sarai in grado di montare il disco e recuperare i dati da esso (dovrebbero essere tutti i tuoi dati utente, inclusi i file di configurazione). Devi contattare il tuo fornitore per discutere di ciò che è possibile nel loro ambiente.
Sven

6
@RussellBorogove: non dico neanche questo. yumfunziona percorrendo il grafico delle dipendenze e rimuove i pacchetti fino a quando tutte le dipendenze sono soddisfatte. Se il pacchetto A dipende dal pacchetto B e il pacchetto B dipende dal pacchetto C, yumrimuoverà anche il pacchetto B e, a sua volta, il pacchetto A per soddisfare tutte le dipendenze se si tenta di rimuovere il pacchetto C. Per i pacchetti centrali (come python), ciò può comportare un gran numero di pacchetti rimossi apparentemente non correlati.
Sven

4
@RussellBorogove: Sì, esattamente, anche coreutilsse non dipende pythondirettamente da CentOS 5, ma tramite uno o più pacchetti intermedi - il risultato è lo stesso però: Rimozione.
Sven

4
Il numero di pacchetti intermedi per coreutils sembra essere due. python -> cracklib -> pam -> coreutils La dipendenza esiste perché ci sono collegamenti Python a cracklib, pam è stato creato con cracklib e che su è integrato con pam. Ovviamente sono state eliminate anche molte cose importanti, come yum per installare altri pacchetti ...
John Mahowald,

15

Hai fatto qualcosa senza comprendere appieno le conseguenze

Quell'installazione è irrecuperabile, richiederebbe molto lavoro per reinstallare centos5. E questo è un cattivo piano perché

  1. CentOS 5 è End of Life e quindi non ha aggiornamenti. Questo è molto grave dato che sembra un server web che serve contenuti su Internet pubblico e che usi le app del pannello per controllarlo.
  2. CentOS> 5 ti avrebbe impedito di fare questo aggiornamento e di uccidere la scatola. È un bel airbag da avere.
  3. CentOS 7 afferma di supportare gli aggiornamenti della versione principale in atto. Non l'ho mai usato, ma essere in grado di saltare da 7 a 8 quando uscirà sarà molto buono. Debian lo ha da sempre, ma Redhat ha sempre richiesto una reinstallazione per i salti della versione principale.

Soluzione

La soluzione migliore è creare un nuovo VPS, installare nuovamente CentOS7, quindi ricollegare il vecchio volume del disco centos5 e montarlo in sola lettura. Quindi lavora per copiare (non spostare) i tuoi dati dalla vecchia unità alla nuova.

Nota che questo sarebbe il mio metodo usando AWS. Se il tuo provider VPS non è in grado di collegare dischi a macchine virtuali diverse, dovrai modificare il piano.

Indipendentemente da ciò che fai, ti consigliamo di configurare backup automatici in futuro. Non ti salverebbe, ma renderebbe il recupero un po 'più flessibile. In questo momento hai bisogno dei dati su quel disco in un nuovo server funzionante. Non perdere il disco esistente.


9

Come è potuto accadere? Bene, abbastanza semplice: rimuovendo le parti fondamentali per il tuo server.

I prossimi passi per te: ridistribuire un nuovo sistema operativo e ripristinare i dati dai backup.


1
La disinstallazione di un pacchetto non dovrebbe mai rimuovere i dati. In realtà non dovrebbe esserci la necessità di ripristinare nulla, a meno che alcuni manutentori del pacchetto non abbiano fatto un errore.
Jörg W Mittag,

6
Se l'OP ripristina un nuovo sistema operativo come ho raccomandato, sarà sicuramente necessario ripristinare i dati e la configurazione.
EEAA

@ JörgWMittag Penso che potresti aver frainteso l'uso della parola "ripristino". EEAA significa che il sistema dovrà essere riconfigurato e i dati esistenti posizionati da qualche parte sulla nuova macchina. "Ripristino" potrebbe non essere la parola migliore per questo, sebbene potrei vedere qualcuno che utilizza la funzionalità di ripristino del database per quel pezzo.
jpmc26

@ JörgWMittag Oh, i suoi dati sono ancora lì, molto probabilmente. È solo che con il suo sistema non funzionale non ha modo di accedervi.
Shadur,

4

Come sottolineato da dragon788 e altri nei commenti, in Gentoo, gli sviluppatori mantengono anche un set di pacchetti tinderbox che sono solo versioni binarie pre-costruite di un set di pacchetti core del sistema operativo proprio per tali situazioni. Se si perde un pacchetto principale, si avvia semplicemente il sistema dal LiveCD / DVD, si monta l'unità del sistema operativo del server rotto e si scompatta il pacchetto / i pacchetti tinderbox sul filesystem, si smonta, si riavvia e, se si avvia correttamente, ricostruisci i pacchetti secondo le specifiche e le configurazioni del tuo server.

Quindi, per eseguire qualcosa di simile in CentOS, penso che dovresti trovare le versioni giuste degli RPM che sono stati disinstallati, quindi avviare un LiveCD / DVD, montare l'unità del sistema operativo e chroot (forse ... se hai familiarità con come usare il flag " --relocate " per rpm , potrebbe non essere necessario chroot), quindi reinstallare quei pacchetti, smontare e riavviare.

Naturalmente, poiché il supporto per CentOS 5 è terminato il mese scorso, dopo aver riavviato correttamente il sistema, è possibile aggiornarlo a una versione corrente.

HTH.


0

In genere è possibile avviare dal supporto di installazione e quindi chrooteseguire i comandi o accedere all'installazione corrente e ripristinare i file o eseguire una reinstallazione dei pacchetti.


4
Non sarai in grado di eseguire il chroot in una directory root senza binari utili in / usr / bin, ecc. Darebbe lo stesso risultato dell'avvio nel sistema morto. Chroot inoltre non è necessario perché una volta che hai montato il filesystem, puoi copiare i file che vuoi salvare da / var / www.
qris,

Sicuramente vero, sto ricordando l'installazione di Gentoo / Arch dove di solito ci sono alcuni binari utili disponibili. Non ho mai disinstallato tutto prima. ;)
dragon788,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.