Máy chủ bị xóa sau khi xóa yum python [đóng]


65

Một thảm họa đã xảy ra với tôi sau khi tôi chạy lệnh yum remove pythonvà bây giờ tôi không thể khởi động máy chủ được nữa.

Làm thế nào nó xảy ra: Tôi đã thử cập nhật một số ứng dụng qua yum trên VPS CentOS 5 của tôi và lệnh bị lỗi do một số lỗi python 2.4 kỳ lạ. Tôi nhận thấy rằng phiên bản trăn của tôi đã cũ và tôi đã thử cài đặt lại bằng cách gỡ bỏ nó trước, và vì vậy tôi đã làm như vậy yum remove python.

Sau đó, nó hỏi tôi vài thứ về việc loại bỏ các phụ thuộc và có vẻ như tôi không thể bỏ lỡ điều gì nên tôi đã nhấp vào Y.

Vì vậy, hậu quả của việc đó là tôi không thể chạy bất kỳ lệnh nào. Tôi thậm chí đã thử cd /var/wwwnhưng nó nói một cái gì đó như " command does not exist in /usr/bin". Khi tôi thường tabthấy các đề xuất điều hướng thư mục, cấu trúc tệp dường như vẫn ở đó (ít nhất là /var/wwwbit thực sự quan trọng đối với tôi). Sau đó, tôi đã thử khởi động lại vps (từ bảng quản trị vì rebootlệnh không hoạt động) và bây giờ nó không khởi động nữa.

Bây giờ câu hỏi của tôi là: làm thế nào một lệnh như thế có thể phá hủy máy chủ của tôi như thế này?


33
Ngẫu nhiên, apt-get loại bỏ apt hoạt động. Tôi chưa thử dpkg - hãy thử dpkg. Tôi cá rằng điều đó thực sự tồi tệ.
joshudson

19
Bạn có một bản sao lưu, phải không?
vasin1987

21
@joshudson Tôi vừa tạo một đĩa CD trực tiếp Debian 8.4 trong máy ảo và dùng thử. Kết quả: # dpkg --remove dpkgnhổ ra dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Nếu tôi thêm --force-allvào dòng lệnh của dpkg, hãy dpkgđưa ra một loạt các cảnh báo và tiến hành loại bỏ chính nó, cùng với việc phá vỡ khoảng hai chục gói khác phụ thuộc vào dpkg. Trên một hệ thống thực, tôi khá chắc chắn rằng bạn sẽ gặp một số khó khăn khi phục hồi từ đó, nhưng bạn có thể có thể (có chút phép thuật để .debs); CentOS có thể hoặc không thể tương tự về vấn đề này.
CVn

6
@joshudson Nó hoạt động vì có một bản sao apt chạy trong bộ nhớ khi bạn phát lệnh ... ngay khi nó kết thúc (và chương trình kết thúc), bạn sẽ không thể sử dụng apt nữa.
SnakeDoc

2
Bản thân Yum được triển khai trong Python Tôi tin rằng ... Vì vậy, loại bỏ Python bắn vào chân của bạn khá tốt!
peufeu

Câu trả lời:


67

Tôi thành thật xin lỗi: Tôi có thể cảm thấy đau đớn khi có một máy chủ không thể khởi động / không thể quan sát được.

Tuy nhiên, tôi đã lạc lối khi đọc rằng:

Sau đó, nó hỏi tôi vài thứ về việc loại bỏ các phụ thuộc và có vẻ như tôi không thể bỏ lỡ điều gì nên tôi đã nhấp vào [Y]

Danh sách các gói to-be-loại bỏ chắc chắn là thực sự rất lớn, như pythonlà một phần thiết yếu của RHEL / CentOS. Bạn không bao giờ nên xác nhận một số thông điệp cảnh báo bạn không thực sự hiểu.

Điều tốt nhất bạn có thể làm, như đã đề xuất, là khởi động thông qua phương tiện khôi phục (ví dụ: livecd), trích xuất các tệp dữ liệu cần thiết và cài đặt lại máy của bạn với bản phát hành CentOS mới hơn (và vì CentOS 6 khá cũ, tôi rất mạnh mẽ đề nghị bạn rebase trên CentOS 7).


2
Trong tương lai: xây dựng các máy chủ có HĐH trên LVM LVs (mà ISTR là mặc định của RHEL). Trước bất cứ điều gì thậm chí có cơ hội phá vỡ hệ thống nhỏ nhất, hãy tạo (các) ảnh chụp nhanh. Nếu nó thực sự phá vỡ hệ thống, thì bạn có thể quay lại ảnh chụp nhanh trong vài phút. Nếu không, khi tất cả đều ổn, bạn có thể xóa ảnh chụp nhanh. unix.stackexchange.com/questions/18913 . Ảnh chụp nhanh NB không phải là bản sao lưu. Bạn vẫn cần sao lưu cho các tình huống trong đó ảnh chụp nhanh có thể cứu bạn.
nigel222

Trên Debian / Ubuntu, anh ta có thể khởi động hình ảnh phục hồi (ví dụ như finnix), giải nén hệ thống cơ sở với debootstrap, chroot và apt-get install ub Ubuntu-desktop. Không biết liệu centos / rhel có tương đương debootstrap hay không.
Edainedil

1
CentOS 6 được hỗ trợ cho đến tháng 11 năm 2020 . Không cần vội vàng nâng cấp (mặc dù lên 7 cũng có rất nhiều lợi thế).
psmears

106

Thành thật mà nói, bởi vì bạn đã làm một cái gì đó bạn không hoàn toàn hiểu. Python là một phần thiết yếu của HĐH và những thứ bạn cho là không quan trọng là rất quan trọng. Khôi phục lại từ bản sao lưu.


Khi bạn xóa Python, yumhiển thị cho bạn một danh sách dài các gói cũng sẽ bị xóa. Danh sách này chứa các yếu tố cần thiết như yumchính nó coreutils, net-toolsvà những thứ khác. Bạn đã xác nhận với bạn rằng bạn biết những gì bạn đang làm và muốn tiếp tục. Kết quả của việc này là một hệ thống không hoạt động. Điều này không đáng ngạc nhiên.

Đối với bản ghi, trên phiên bản CentOS mới hơn, điều này không thể thực hiện được nữa, vì các gói nhất định hiện được đánh dấu là được bảo vệ và không thể xóa, chỉ được cài đặt lại hoặc nâng cấp. Và vì CentOS 5 bây giờ đã là EOL, đây là thời điểm tốt để nâng cấp lên phiên bản mới hơn.


3
Haha tốt mà leo thang nhanh chóng (yum gỡ python == chỉ cần lau toàn bộ máy: D). Bạn có nghĩ liệu có cách nào ít nhất tôi có thể khôi phục các tệp trong / var / www không hay đó hoàn toàn là foobard?
tadoman

8
@tadoman: Nếu bạn có thể khởi động vào một loại hệ thống cứu hộ nào đó, bạn sẽ có thể gắn đĩa và khôi phục dữ liệu từ nó (đây phải là tất cả dữ liệu người dùng của bạn, bao gồm các tệp cấu hình). Bạn phải liên hệ với nhà cung cấp của bạn để thảo luận về những gì có thể trong môi trường của họ.
Sven

6
@RussellBorogove: Tôi không nói điều này. yumhoạt động bằng cách đi xuống biểu đồ phụ thuộc và nó loại bỏ các gói cho đến khi tất cả các phụ thuộc được thỏa mãn. Nếu gói A phụ thuộc vào gói B và gói B phụ thuộc vào gói C, yumcũng sẽ loại bỏ gói B và đến lượt, gói A để đáp ứng tất cả các phụ thuộc nếu bạn cố gắng loại bỏ gói C. Đối với các gói trung tâm (như python), điều này có thể dẫn đến số lượng lớn các gói bị loại bỏ dường như không liên quan.
Sven

4
@RussellBorogove: Có, chính xác, mặc dù coreutilskhông phụ thuộc pythontrực tiếp vào CentOS 5, nhưng thông qua một hoặc nhiều gói trung gian - kết quả vẫn giống nhau: Loại bỏ.
Sven

4
Số lượng các gói trung gian cho coreutils dường như là hai. python -> cracklib -> pam -> coreutils Sự phụ thuộc tồn tại bởi vì có các ràng buộc trăn với cracklib, pam được xây dựng với cracklib, và su đó được tích hợp với pam. Tất nhiên, nó cũng lấy ra rất nhiều thứ quan trọng, như yum để cài đặt thêm bất kỳ gói nào ...
John Mahowald

15

Bạn đã làm một cái gì đó mà không hiểu đầy đủ về hậu quả

Cài đặt đó là không thể phục hồi, sẽ đòi hỏi rất nhiều công việc để cài đặt lại centos5. Và đó là một kế hoạch tồi tệ bởi vì

  1. CentOS 5 là End of Life, và do đó không có bản cập nhật. Điều này cực kỳ nghiêm trọng vì nó nghe giống như một máy chủ web phục vụ nội dung trên internet công cộng và bạn sử dụng các ứng dụng bảng điều khiển để kiểm soát nó.
  2. CentOS> 5 sẽ ngăn bạn thực hiện cập nhật này và giết chết hộp. Đó là một túi khí đẹp để có.
  3. CentOS 7 tuyên bố sẽ hỗ trợ nâng cấp phiên bản chính tại chỗ. Tôi chưa bao giờ sử dụng nó, nhưng có thể nhảy từ 7 đến 8 khi phát hành sẽ rất tốt. Debian đã có cái này mãi mãi, nhưng Redhat luôn yêu cầu cài đặt lại cho các bước nhảy phiên bản chính.

Giải pháp

Đặt cược tốt nhất của bạn là tạo một VPS mới, cài đặt CentOS7 mới, sau đó gắn lại dung lượng đĩa centos5 cũ và gắn nó ở chế độ chỉ đọc. Sau đó làm việc để sao chép (không di chuyển) dữ liệu của bạn từ ổ đĩa cũ sang ổ đĩa mới.

Lưu ý đây sẽ là phương pháp của tôi bằng AWS. Nếu nhà cung cấp VPS của bạn không thể đính kèm đĩa vào các máy ảo khác nhau thì bạn sẽ phải điều chỉnh gói.

Bất kể bạn làm gì, hãy xem xét việc thiết lập sao lưu tự động trong tương lai. Nó sẽ không cứu bạn, nhưng nó sẽ giúp phục hồi phần nào linh hoạt hơn. Ngay bây giờ bạn cần dữ liệu trên đĩa đó trong một máy chủ hoạt động mới. Đừng mất đĩa hiện có.


9

Làm thế nào điều này có thể xảy ra? Chà, khá đơn giản: Bằng cách loại bỏ các phần quan trọng đối với máy chủ của bạn.

Các bước tiếp theo dành cho bạn: triển khai lại một hệ điều hành mới và khôi phục dữ liệu của bạn từ các bản sao lưu.


1
Gỡ cài đặt một gói sẽ không bao giờ xóa dữ liệu. Thực sự không cần phải khôi phục bất cứ thứ gì, trừ khi một số nhà bảo trì gói thực sự vặn vẹo.
Jörg W Mittag

6
Nếu OP khôi phục hệ điều hành mới như tôi khuyến nghị, việc khôi phục dữ liệu và cấu hình chắc chắn sẽ được yêu cầu.
EEAA

@ JörgWMittag Tôi nghĩ rằng bạn có thể đã hiểu nhầm việc sử dụng từ "khôi phục". EEAA có nghĩa là hệ thống sẽ phải được cấu hình lại và dữ liệu hiện có được đặt ở đâu đó trên máy mới. "Khôi phục" có thể không phải là từ tốt nhất cho điều đó, mặc dù tôi có thể thấy ai đó sử dụng chức năng khôi phục cơ sở dữ liệu cho phần đó.
jpmc26

@ JörgWMittag Ồ, rất có thể dữ liệu của anh ấy vẫn còn đó. Chỉ là với hệ thống của anh ta không có chức năng, anh ta không có cách nào để truy cập nó.
Shadur

4

Như được chỉ ra bởi dragon788 và những người khác trong các nhận xét, trong Gentoo, các nhà phát triển cũng duy trì một bộ các gói tinderbox chỉ là phiên bản nhị phân được xây dựng sẵn của một bộ các gói lõi của HĐH cho các tình huống như vậy. Nếu bạn mất gói lõi, bạn chỉ cần khởi động hệ thống vào LiveCD / DVD, gắn ổ đĩa hệ điều hành của máy chủ bị hỏng và giải nén (các) gói tinderbox vào hệ thống tệp, ngắt kết nối, khởi động lại và, nếu nó khởi động đúng, xây dựng lại các gói trở lại thông số kỹ thuật và cấu hình máy chủ của bạn.

Vì vậy, để thực hiện một cái gì đó tương tự trong CentOS, tôi nghĩ rằng bạn cần tìm đúng phiên bản RPM đã được gỡ cài đặt, sau đó khởi động vào LiveCD / DVD, gắn ổ đĩa OS và chroot vào (có lẽ ... nếu bạn quen thuộc với cách sử dụng cờ " --relocate " cho vòng / phút , bạn có thể không cần phải chroot), sau đó cài đặt lại các gói đó, ngắt kết nối và khởi động lại.

Tất nhiên, vì hỗ trợ cho CentOS 5 đã kết thúc vào tháng trước, sau khi bạn khởi động lại hệ thống đúng cách, bạn có thể cập nhật nó lên phiên bản hiện tại.

HTH.


0

Bạn thường có thể khởi động từ phương tiện cài đặt và sau đó chrootđể chạy các lệnh hoặc nhập vào cài đặt hiện tại và khôi phục các tệp hoặc thực hiện cài đặt lại các gói.


4
Bạn sẽ không thể truy cập vào thư mục gốc mà không có tệp nhị phân hữu ích nào trong / usr / bin, v.v. Nó sẽ cho kết quả tương tự như khởi động vào hệ thống chết. Chroot cũng không cần thiết vì một khi bạn đã cài đặt hệ thống tệp, bạn có thể sao chép các tệp mà bạn muốn giải cứu khỏi / var / www.
qris

Chắc chắn là đúng, tôi đang nhớ cài đặt Gentoo / Arch nơi thường có sẵn một số nhị phân hữu ích. Tôi chưa bao giờ gỡ cài đặt mọi thứ đầu tiên. ;)
dragon788
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.