Vraag Server is gewist na "yum remove python" [closed]


Er kwam een ​​ramp bij me op nadat ik de opdracht had gegeven yum remove python en nu kan ik de server niet meer opstarten.

Hoe het gebeurde: ik probeerde sommige apps bij te werken via yum op mijn CentOS 5 VPS en het commando faalde vanwege een rare python 2.4-fout. Ik merkte dat mijn versie van python oud was en ik probeerde het opnieuw te installeren door het eerst te verwijderen, en dat deed ik ook yum remove python.

Daarna vroeg het me iets over het verwijderen van afhankelijkheden en het zag eruit als niets dat ik kon missen, dus ik klikte Y.

Dus de nasleep daarvan was dat ik geen enkele opdracht kon uitvoeren. Ik heb zelfs geprobeerd cd /var/www maar het zei iets als "command does not exist in /usr/bin"Toen ik gebruikte tab om suggesties voor mapnavigatie te zien, leek de bestandsstructuur er nog steeds te zijn (tenminste de /var/www bit dat echt belangrijk voor me is). Daarna probeerde ik het opnieuw opstarten van de vps (vanaf het admin paneel sinds reboot commando werkte niet) en nu start het niet meer op.

Nu is mijn vraag: hoe kan zo'n commando mijn server zo vernietigen?


62
2018-04-15 18:54


oorsprong


Overigens apt-get apt-werken verwijderen. Ik heb dpkg nog niet geprobeerd - verwijder dpkg. Ik wed dat dat echt slecht is. - joshudson
Je hebt wel een back-up, toch? - vasin1987
@joshudson Ik heb zojuist een live CD van 8.4 op een Debian in een VM gecomprimeerd en het geprobeerd. Resultaat: # dpkg --remove dpkg spuugt dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Als ik het toevoeg --force-all naar de opdrachtregel van dpkg, dpkg spuugt een hele bundel waarschuwingen uit en gaat zichzelf verwijderen, samen met het breken van ongeveer twee dozijn andere pakketten die afhankelijk zijn van dpkg. Op een echt systeem ben ik er vrij zeker van dat je daar wat problemen mee zou hebben, maar waarschijnlijk wel kon (er is weinig magie voor .debs); CentOS kan in dit opzicht al dan niet vergelijkbaar zijn. - α CVn
@joshudson Het werkt omdat er een kopie van apt in het geheugen wordt uitgevoerd wanneer u de opdracht geeft ... zodra het is voltooid (en het programma wordt beëindigd), kunt u apt niet langer gebruiken. - SnakeDoc
Yum zelf is geïmplementeerd in Python geloof ik ... Dus het verwijderen van Python schiet je eigen voet vrij goed! - peufeu


antwoorden:


Het spijt me oprecht: ik voel de pijn om een ​​server niet meer op te starten / onbruikbaar te maken.

Ik ben echter verdwaald wanneer ik dat lees:

Daarna vroeg het me iets over het verwijderen van afhankelijkheden en het   zag eruit als niets dat ik kon missen, dus ik klikte op [Y]

De lijst met te verwijderen pakketten was dat zeker werkelijk enorm, zo python is een essentieel onderdeel van RHEL / CentOS. Je zou moeten nooit bevestig een waarschuwingsbericht dat u niet echt begrijpt.

Het beste wat je kunt doen, zoals al gesuggereerd, is om te booten via een herstelmedium (dwz: livecd), de vereiste gegevensbestanden uit te pakken en je machine opnieuw te installeren met een nieuwere CentOS-release (en omdat CentOS 6 vrij oud is, heb ik sterk stel voor dat je rebase op CentOS 7).


67
2018-04-16 11:04



Voor de toekomst: bouw servers met het besturingssysteem op LVM LV's (waarvan ISTR de RHEL-standaard is). Voordat u iets maakt dat de minste kans heeft om het systeem te verbreken, maakt u snapshot (s). Als het inderdaad het systeem breekt, kunt u binnen enkele minuten terugkeren naar de momentopname. Anders als alles OK is, kunt u de momentopname verwijderen. unix.stackexchange.com/questions/18913. NB snapshots zijn geen back-ups. U hebt nog steeds backups nodig voor situaties waarin de snapshot u niet kan redden. - nigel222
Op Debian / Ubuntu kon hij herstelfoto starten (bijvoorbeeld finnix), basisstation uitpakken met debootstrap, chroot en apt-get install ubuntu-desktop. Geen idee of centos / rhel het bootstrap-equivalent hebben. - Edheldil
CentOS 6 wordt ondersteund tot November 2020. Er is geen haast om te upgraden (hoewel tot 7 gaan tal van voordelen hebben). - psmears


Eerlijk gezegd, omdat je iets hebt gedaan dat je niet volledig begreep. Python is een essentieel onderdeel van het besturingssysteem en de dingen die u als onbelangrijk beschouwde zijn erg belangrijk. Herstellen van backup.


Wanneer je Python hebt verwijderd, yum liet je een lange lijst zien met pakketten die ook zouden worden verwijderd. Deze lijst bevat essentiële zaken als yum zelf, coreutils, net-tools en anderen. U hebt bevestigd dat u weet wat u doet en hoe dan ook wilt doorgaan. Het resultaat hiervan is een niet-werkend systeem. Dit zou niet moeten verbazen.

Voor de goede orde, op nieuwere CentOS-versies is dit niet meer mogelijk, omdat bepaalde pakketten nu als beschermd zijn gemarkeerd en niet kunnen worden verwijderd, alleen opnieuw worden geïnstalleerd of geüpgraded. En omdat CentOS 5 nu toch EOL is, is dit een goed moment om te upgraden naar een nieuwere versie.


106
2018-04-15 19:23



Haha dat is snel geëscaleerd (yum verwijder python == veeg gewoon hele machine af: D). Denk je dat er een manier is om de bestanden die zich in / var / www bevonden op zijn minst te herstellen of is dat ook volledig soepel? - tadoman
@tadoman: Als je een soort van rescue-systeem kunt opstarten, kun je de schijf koppelen en gegevens herstellen (dit zou moeten zijn allemaal van uw gebruikersgegevens, inclusief configuratiebestanden). U moet contact opnemen met uw provider om te bespreken wat er mogelijk is in hun omgeving. - Sven♦
@RussellBorogove: ik zeg dit ook niet. yum werkt door de afhankelijkheidsgrafiek te doorlopen en het verwijdert pakketten totdat alle afhankelijkheden zijn voldaan. Als pakket A afhankelijk is van pakket B en pakket B afhankelijk is van pakket C, yum zal ook pakket B verwijderen en op zijn beurt pakket A om aan alle afhankelijkheden te voldoen als u pakket C probeert te verwijderen. Voor centrale pakketten (zoals python), kan dit resulteren in een groot aantal verwijderde pakketten die schijnbaar niet gerelateerd zijn. - Sven♦
@RussellBorogove: Ja, precies, hoewel coreutils is niet afhankelijk van python rechtstreeks in CentOS 5, maar via een of meer tussenpakketten - het resultaat is echter hetzelfde: verwijderen. - Sven♦
Het aantal tussenverpakkingen naar coreutils lijkt er twee te zijn. python -> cracklib -> pam -> coreutils  De afhankelijkheid bestaat omdat er python-bindingen zijn naar cracklib, pam is gebouwd met cracklib en su is geïntegreerd met pam. Natuurlijk zijn er ook veel belangrijke dingen uitgehaald, zoals yum om nog meer pakketten te installeren ... - John Mahowald


Je hebt iets zonder gedaan volledig inzicht in de gevolgen 

Die installatie is niet meer terug te vorderen, zou veel werk vergen om centos5 opnieuw te installeren. En dat is een slecht plan, want

  1. CentOS 5 is End of Life en heeft daarom geen updates. Dit is extra ernstig, omdat het klinkt als een webserver die inhoud op het openbare internet serveert en die u via paneel-apps bestuurt.
  2. CentOS> 5 zou je ervan hebben weerhouden om deze update te doen en de doos te doden. Dat is een leuke airbag om te hebben.
  3. CentOS 7 claimt ondersteuning voor belangrijke upgrades van versies. Ik heb het nog nooit gebruikt, maar in staat zijn om van 7 naar 8 te springen wanneer het wordt uitgebracht, zal zeer goed zijn. Debian heeft dit sindsdien voor altijd gehad, maar Redhat vereiste altijd een herinstallatie voor belangrijke versiesprongen.

Oplossing

Je kunt het beste een nieuwe VPS maken, CentOS7 vers installeren en vervolgens het oude centos5 schijfvolume opnieuw aansluiten en alleen-lezen aankoppelen. Werk vervolgens om uw gegevens van de oude schijf naar de nieuwe te kopiëren (niet verplaatsen).

Merk op dat dit mijn methode zou zijn met behulp van AWS. Als uw VPS-provider geen schijven aan verschillende VM's kan koppelen, moet u het plan aanpassen.

Wat u ook doet, overweeg om in de toekomst automatische back-ups in te stellen. Het zou u niet redden, maar het herstel zou wat flexibeler worden. Op dit moment heb je de gegevens op die schijf nodig in een nieuwe werkende server. Verlies de bestaande schijf niet.


15
2018-04-16 21:31





Hoe kon dit gebeuren? Nou, vrij simpel: Door onderdelen te verwijderen die cruciaal zijn voor uw server.

Volgende stappen voor u: re-deploy een nieuw besturingssysteem en herstel uw gegevens van back-ups.


9
2018-04-15 19:22



Het verwijderen van een pakket zou moeten nooit verwijder gegevens. Er zou echt geen behoefte moeten zijn om iets te herstellen, tenzij een of andere pakketonderhouder royaal verknoeid is. - Jörg W Mittag
Als de OP een nieuw besturingssysteem herstelt zoals ik aanbevolen heb, is het zeker nodig om gegevens en configuratie te herstellen. - EEAA
@ JörgWMittag Ik denk dat je het gebruik van het woord "herstellen" verkeerd hebt begrepen. EEAA betekent dat het systeem opnieuw moet worden geconfigureerd en dat de bestaande gegevens ergens op de nieuwe machine moeten worden geplaatst. "Herstellen" is daar misschien niet het beste woord voor, hoewel ik kon zien dat iemand databaseherstelfunctionaliteit voor dat stuk gebruikte. - jpmc26
@ JörgWMittag Oh, zijn gegevens is er nog steeds, hoogstwaarschijnlijk. Het is alleen dat met zijn systeem niet functioneel hij geen toegang heeft. - Shadur


Zoals aangegeven door dragon788 en anderen in de comments, onderhouden de ontwikkelaars in Gentoo ook een set tondeldoos pakketten die slechts voorgebouwde, binaire versies zijn van een set kernpakketten van het besturingssysteem voor dergelijke situaties. Als je een kernpakket verliest, krijg je gewoon het systeem opgestart met de LiveCD / DVD, mount je het OS-station van de kapotte server en pak je de tinderbox-package (s) uit naar het bestandssysteem, unmount, reboot en, als het correct opstart, herbouw de pakketten terug naar de specificaties van uw server en configs.

Dus om iets vergelijkbaars uit te voeren in CentOS, denk ik dat je de juiste versies van de RPM's die niet werden geïnstalleerd moest vinden, dan zou je naar een LiveCD / DVD moeten booten, het OS-station moeten opstarten en chrooten (misschien ... als je bekend bent met hoe de "--relocate"vlag voor opm, hoeft u misschien niet te chrooten), installeer vervolgens die pakketten opnieuw, ontkoppel en start opnieuw op.

Natuurlijk, sinds de ondersteuning voor CentOS 5 eindigde vorige maand, nadat je het systeem opnieuw hebt opgestart, kun je het bijwerken naar een huidige versie.

HTH.


4
2018-04-17 19:28





U kunt meestal opstarten vanaf de installatiemedia en vervolgens chroot om opdrachten uit te voeren of de huidige installatie in te gaan en bestanden te herstellen of pakketten opnieuw te installeren.


0
2018-04-16 03:56



Je zult niet in een root directory kunnen chroot zonder nuttige binaries in / usr / bin, enz. Het zou hetzelfde resultaat geven als opstarten in het dode systeem. Chroot is ook niet nodig, omdat als je eenmaal het bestandssysteem hebt gemount, je de bestanden die je wilt redden uit / var / www kunt kopiëren. - qris
Zeker waar, ik herinner me aan het installeren van Gentoo / Arch, waar meestal enkele nuttige binaries beschikbaar zijn. Ik heb nooit alles eerst gedeïnstalleerd. ;) - dragon788