"yum remove python"후 서버가 지워짐


65

명령을 실행 한 후 방금 재해가 발생하여 yum remove python더 이상 서버를 부팅 할 수 없습니다.

어떻게 된 일 : CentOS 5 VPS에서 yum을 통해 일부 앱을 업데이트하려고 시도했지만 이상한 python 2.4 오류로 인해 명령이 실패했습니다. 내 파이썬 버전이 오래되었다는 것을 알았고 먼저 제거하여 다시 설치하려고 했으므로 그렇게했습니다 yum remove python.

그 후 그것은 의존성을 제거하는 것에 대해 나에게 물었고, 내가 놓칠 수없는 것처럼 보였으므로 클릭했다 Y.

그래서 그 여파로 나는 어떤 명령도 실행할 수 없었습니다. 나는 심지어 시도 cd /var/www했지만 " command does not exist in /usr/bin" 와 같은 것을 말했다 . tab폴더 탐색 제안을 보았을 때 파일 구조는 여전히있는 것처럼 보였습니다 (적어도 /var/www나에게 중요한 비트). 그 후 ( reboot명령이 작동하지 않기 때문에 관리자 패널에서) vps를 다시 시작하려고 시도했지만 더 이상 부팅되지 않습니다.

이제 내 질문은 : 어떻게 그런 명령을 내 서버를 파괴 할 수 있습니까?


33
또한, apt-get remove apt 작품. dpkg를 시도하지 않았습니다-dpkg를 아직 제거하십시오. 정말 나쁘다.
— joshudson

19
당신은 백업이 있습니까?
— vasin1987

21
@ joshudson 방금 데비안 8.4 라이브 CD를 VM에 넣고 시도했습니다. 결과 : # dpkg --remove dpkg뱉어 낸다 dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. --force-alldpkg의 명령 줄에 추가 dpkg하면 전체 경고 번들을 뱉어 내고에 의존하는 약 12 ​​개의 다른 패키지를 제거하면서 자체 경고를 제거합니다 dpkg. 실제 시스템에, 나는 당신이 복구 약간의 문제가있을 거라고 확신 해요,하지만 당신은 아마 수 (거의 마술있어 .deb들); CentOS는 이와 관련하여 유사하거나 유사하지 않을 수 있습니다.
— CVn

6
@joshudson 명령을 실행할 때 메모리에서 apt 사본이 실행 중이기 때문에 작동합니다 ... 완료되고 프로그램이 종료되는 즉시 apt를 더 이상 사용할 수 없습니다.
— SnakeDoc

2
Yum 자체는 내가 믿는 파이썬으로 구현되었습니다 ... 그래서 파이썬을 제거하면 자신의 발을 아주 잘 쏠 수 있습니다!
— peufeu

답변:


67

죄송합니다. 서버를 부팅 / 서비스 할 수 없게 만드는 데 어려움이 있습니다.

그러나 나는 그것을 읽을 때 길을 잃었습니다.

그 후 그것은 의존성을 제거하는 것에 대해 나에게 물었고 내가 놓칠 수없는 것처럼 보였으므로 클릭했다 [Y]

RHEL / CentOS의 필수 부분 인 것처럼 제거 할 패키지 목록은 정말 엄청 났습니다 python. 실제로 이해하지 못하는 경고 메시지를 확인 해서는 안됩니다 .

이미 제안했듯이 복구 미디어 (예 : livecd)를 통해 부팅하고 필요한 데이터 파일을 추출하고 최신 CentOS 릴리스로 시스템을 다시 설치하는 것이 가장 좋습니다 (CentOS 6이 오래되었으므로 강력하게 권장합니다). CentOS 7을 리베이스하도록 제안하십시오.)


2
향후 : LVM LV에서 OS를 사용하여 서버를 구축하십시오 (ISTR이 RHEL 기본값 임). 시스템을 손상시킬 가능성이 가장 적은 것보다 먼저 스냅 샷을 만드십시오. 실제로 시스템이 중단되면 몇 분 안에 스냅 샷으로 되돌릴 수 있습니다. 그렇지 않으면 모든 것이 정상이면 스냅 샷을 제거 할 수 있습니다. unix.stackexchange.com/questions/18913 . NB 스냅 샷은 백업이 아닙니다. 스냅 샷을 저장할 수없는 상황에서는 여전히 백업이 필요합니다.
— nigel222

데비안 / 우분투에서는 복구 이미지 (예 : finnix)를 부팅하고 debootstrap, chroot 및 apt-get install ubuntu-desktop으로 기본 시스템의 압축을 풀 수 있습니다. centos / rhel에 동일한 부트 스트랩이 있는지 여부는 알 수 없습니다.
— Edheldil

1
CentOS 6은 2020 년 11 월까지 지원됩니다 . 업그레이드를 서두르지 않아도됩니다 (7로 가면 많은 이점이 있지만).
— psmears

106

솔직히 말해서, 당신은 당신이 완전히 이해하지 못하는 것을했기 때문입니다. 파이썬은 OS의 필수 부분이며 중요하지 않다고 생각하는 것은 매우 중요합니다. 백업에서 복원


파이썬을 제거했을 때 제거 yum될 패키지의 긴 목록을 보여주었습니다. 이 목록은 다음과 같은 필수 요소가 포함되어 yum자체 coreutils, net-tools그리고 다른 사람을. 당신은 당신이하고있는 일을 알고 어쨌든 계속하고 싶다는 것을 m에게 확인했습니다. 이것의 결과는 작동하지 않는 시스템입니다. 놀라운 일이 아닙니다.

레코드의 경우 최신 CentOS 버전에서는 이제 특정 패키지가 보호 된 것으로 표시되어 제거 할 수없고 다시 설치하거나 업그레이드 할 수 없으므로 더 이상 불가능합니다. CentOS 5는 이제 EOL이므로 새로운 버전으로 업그레이드하기에 좋은시기입니다.


3
하하 우물은 빠르게 확대되었습니다 (yum remove python == 그냥 전체 머신을 닦으십시오 : D). 최소한 / var / www에있는 파일을 복원 할 수있는 방법이 있는지, 아니면 그 파일을 완벽하게 복원 할 수있는 방법이 있습니까?
— tadoman

8
@tadoman : 어떤 종류의 복구 시스템으로 부팅 할 수 있다면 디스크를 마운트하고 디스크에서 데이터를 복구 할 수 있습니다 ( 구성 파일을 포함한 모든 사용자 데이터 여야 함 ). 그들의 환경에서 가능한 것을 논의하기 위해 공급자에게 연락해야합니다.
— Sven

6
@RussellBorogove : 나는 이것에 대해 아무 말도하지 않습니다. yum의존성 그래프를 내려 가면서 작동하며 모든 의존성이 충족 될 때까지 패키지를 제거합니다. 패키지 A가 패키지 B에 의존하고 패키지 B가 패키지 C에 yum의존하는 경우 패키지 B도 제거하고, 패키지 C를 제거하려고하면 패키지 A가 모든 종속성을 충족 시키도록합니다. 중앙 패키지 (예 :)의 경우 python, 관련이없는 것처럼 보이는 많은 수의 제거 된 패키지.
— Sven

4
@RussellBorogove : 그렇습니다. CentOS 5 coreutils에서 python직접 의존하지는 않지만 하나 이상의 중간 패키지를 통해 결정됩니다 . 결과는 동일합니다 : 제거.
— Sven

4
coreutils에 대한 중간 패키지 수는 2 개로 나타납니다. python -> cracklib -> pam -> coreutils cracklib에 대한 파이썬 바인딩이 있고, pam은 cracklib로 빌드되었으며, su는 pam과 통합되어 있기 때문에 종속성이 존재합니다. 물론 더 많은 패키지를 설치하기 위해 yum과 같은 중요한 것들도 많이 가져
— 왔습니다

15

결과 를 완전히 이해 하지 못하고 무언가를 했음

이 설치는 복구 할 수 없으므로 centos5를 다시 설치하려면 많은 작업이 필요합니다. 그리고 그것은 나쁜 계획입니다

  1. CentOS 5는 수명 종료이므로 업데이트가 없습니다. 공용 인터넷에서 콘텐츠를 제공하는 웹 서버처럼 들리고 패널 응용 프로그램을 사용하여 제어한다는 점을 감안할 때 이것은 매우 심각합니다.
  2. CentOS> 5로 인해이 업데이트를 수행하지 않고 상자를 죽일 수 없었습니다. 좋은 에어백입니다.
  3. CentOS 7은 주요 버전 업그레이드를 지원한다고 주장합니다. 나는 그것을 사용한 적이 없지만 릴리스 할 때 7에서 8로 점프 할 수 있으면 매우 좋습니다. 데비안은 이것을 영원히 가지고 있었지만, Redhat은 항상 주요 버전 점프를 위해 재설치가 필요했습니다.

해결책

가장 좋은 방법은 새로운 VPS를 생성하고 CentOS7을 새로 설치 한 다음 이전 centos5 디스크 볼륨을 다시 연결하고 읽기 전용으로 마운트하는 것입니다. 그런 다음 이전 드라이브에서 새 드라이브로 데이터를 복사 (이동하지 마십시오)하십시오.

이것이 AWS를 사용하는 방법 일 것입니다. VPS 공급자가 디스크를 다른 VM에 연결할 수없는 경우 계획을 조정해야합니다.

무엇을 하든지 앞으로 자동 백업 설정을 고려하십시오. 그것은 당신을 구할 수는 없지만 복구를 다소 유연하게 만듭니다. 현재 새 작업 서버의 해당 디스크에있는 데이터가 필요합니다. 기존 디스크를 풀지 마십시오.


9

어떻게 이런 일이 일어날 수 있습니까? 아주 간단합니다. 서버에 중요한 부분을 제거함으로써.

다음 단계 : 새로운 OS를 다시 배포하고 백업에서 데이터를 복원하십시오.


1
패키지를 제거해도 절대로 데이터를 제거 해서는 안됩니다 . 일부 패키지 관리자가 완전히 망쳐 놓지 않는 한 아무것도 복원 할 필요가 없습니다.
— Jörg W Mittag

6
내가 추천 한 것처럼 OP가 새로운 OS를 복원하는 경우, 데이터 및 구성 복원이 가장 필요합니다.
— EEAA

@ JörgWMittag "복원"이라는 단어의 사용을 잘못 이해했을 수도 있습니다. EEAA는 시스템을 재구성하고 기존 데이터를 새 컴퓨터의 어딘가에 배치해야 함을 의미합니다. "복원"은 그 단어에 가장 적합한 단어는 아니지만 그 부분에 대해 데이터베이스 복원 기능을 사용하는 사람을 볼 수 있습니다.
— jpmc26

@ JörgWMittag 아, 그의 데이터 는 여전히 존재합니다. 시스템이 작동하지 않으면 액세스 할 수있는 방법이 없습니다.
— Shadur

4

코멘트에 dragon788 및 다른 사람에 의해 지적, 젠투, 개발자는 또한 일련의 유지 부싯깃의 단지 사전 구축되어 패키지, 바로 그러한 상황에 대한 OS의 코어 패키지 세트의 바이너리 버전을. 코어 패키지를 잃어버린 경우 시스템을 LiveCD / DVD로 부팅하고 손상된 서버의 OS 드라이브를 마운트 한 후 틴더 박스 패키지를 파일 시스템에 풀고 마운트를 해제하고 재부팅 한 다음 올바르게 부팅하면 서버의 사양 및 구성으로 패키지를 다시 빌드하십시오.

따라서 CentOS에서 비슷한 작업을 수행하려면 제거 된 올바른 버전의 RPM을 찾은 다음 LiveCD / DVD로 부팅하고 OS 드라이브를 마운트하고 chroot를 설치해야합니다. rpm에 " --relocate "플래그 를 사용하는 방법으로 chroot 할 필요가 없습니다.) 그런 다음 해당 패키지를 다시 설치하고 마운트를 해제하고 다시 부팅하십시오.

물론 지난달 CentOS 5에 대한 지원이 종료되었으므로 시스템을 올바르게 재부팅 한 후 현재 버전으로 업데이트 할 수 있습니다.

HTH.


0

일반적으로 설치 미디어에서 부팅 한 다음 chroot명령을 실행하거나 현재 설치 및 파일 복구 또는 파일 재설치를 수행 할 수 있습니다.


4
/ usr / bin 등에 유용한 바이너리가없는 루트 디렉토리로 chroot 할 수 없습니다. 죽은 시스템으로 부팅하는 것과 동일한 결과를 얻을 수 있습니다. 파일 시스템을 마운트 한 후에는 / var / www에서 구출하려는 파일을 복사 할 수 있으므로 Chroot도 필요하지 않습니다.
— qris

분명히 사실, 유용한 바이너리가있는 Gentoo / Arch를 설치하는 것을 기억합니다. 모든 것을 먼저 제거한 적이 없습니다. ;)
— dragon788
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.