"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.