「yum remove python」後にサーバーがワイプされた[終了]


65

コマンドを実行した直後に災害が発生しyum remove python、サーバーを起動できなくなりました。

発生方法:CentOS 5 VPSでyumを使用していくつかのアプリを更新しようとしましたが、奇妙なpython 2.4エラーが原因でコマンドが失敗していました。私のpythonのバージョンが古いことに気付いたので、最初に削除して再インストールを試みました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 --remove dpkgを試していません。それは本当に悪いに違いない。
-joshudson

19
バックアップはありますか?
vasin1987

21
@joshudson VMでDebian 8.4ライブCDを作成し、試してみました。結果:# dpkg --remove dpkg吐き出しdpkg: error processing dpkg (--remove): this is an essential package; it should not be removedます。--force-alldpkgのコマンドラインに追加するdpkgと、警告のバンドル全体が吐き出され、それ自体を削除しdpkgます。さらに、に依存する他の約20個のパッケージが破損します。実際のシステムでは、そこから回復するのに苦労するはずですが、おそらくそうすることができます.debsにはちょっとした魔法があります)。CentOSは、この点で似ている場合と似ていない場合があります。
CVn

6
@joshudsonコマンドを発行すると、メモリ内で実行されているaptのコピーがあるため、機能します...終了(およびプログラムが終了)するとすぐに、aptを使用できなくなります。
SnakeDoc

2
Yum自体はPythonで実装されていると思うので...
プーフ

回答:


67

申し訳ありませんが、サーバーを起動できない/使用できないという苦痛を感じることができます。

しかし、私はそれを読んでいるときに迷っています:

その後、依存関係の削除について尋ねられ、見逃せないように見えたので、[Y]をクリックしました

RHEL / CentOSの重要な部分であるように、削除されるパッケージのリストは確かに本当に膨大でしたpython。あなたは必要があります決してあなたが本当に理解していないいくつかの警告メッセージを確認していません。

既に提案されているように、できる最善の方法は、リカバリメディア(つまり、livecd)から起動し、必要なデータファイルを抽出し、新しいCentOSリリースでマシンを再インストールすることです(CentOS 6は非常に古いため、 CentOS 7)にリベースすることをお勧めします。


2
将来のために:LVM LV(ISTRはRHELのデフォルト)上のOSでサーバーを構築します。システムを破壊する可能性が少しでもある前に、スナップショットを作成します。実際にシステムが破損した場合は、数分でスナップショットに戻ることができます。それ以外の場合は、問題がなければスナップショットを削除できます。unix.stackexchange.com/questions/18913。NBスナップショットはバックアップではありません。スナップショットで保存できない状況では、引き続きバックアップが必要です。
nigel222

Debian / Ubuntuでは、彼はリカバリイメージ(finnixなど)を起動し、debootstrapでベースシステムをアンパックし、chrootを実行し、apt-get install ubuntu-desktopを実行できました。centos / rhelに同等のdebootstrapがあるかどうかはわかりません。
エデルディル

1
CentOS 6は202011月までサポートされます。アップグレードを急ぐ必要はありません(ただし、7に移行すると多くの利点があります)。
-psmears

106

率直に言って、あなたはあなたが完全に理解していない何かをしたからです。PythonはOSの重要な部分であり、重要でないと思われるものは非常に重要です。バックアップから復元します。


Pythonを削除したときに、削除されるyumパッケージの長いリストを示しました。このリストは、このような必需品が含まれyum、それ自身をcoreutilsnet-toolsそして他の人。あなたは自分が何をしているかを知っていて、とにかく続行したいことをyumに確認しました。この結果、システムが機能しなくなります。これは驚くべきことではありません。

記録として、新しいCentOSバージョンでは、特定のパッケージが保護対象としてマークされ、削除できず、再インストールまたはアップグレードのみが可能であるため、これはもうできません。とにかくCentOS 5はEOLになったので、これは新しいバージョンにアップグレードする良い機会です。


3
ハハはすぐにエスカレートしました(yum remove python ==マシン全体を拭くだけ:D)。少なくとも/ var / wwwにあったファイルを復元できる方法があるのか​​、それとも完全に不審なものなのかを考えていますか?
タドマン

8
@tadoman:何らかの種類のレスキューシステムを起動できる場合、ディスクをマウントし、そこからデータを回復できます(これは、構成ファイルを含むすべてのユーザーデータである必要があります)。プロバイダーに連絡して、その環境で何が可能かを話し合う必要があります。
スヴェン

6
@RussellBorogove:どちらとも言えません。yum依存関係グラフをたどって動作し、すべての依存関係が満たされるまでパッケージを削除します。パッケージAはパッケージBに依存し、パッケージBがパッケージCに依存している場合、yumまた、パッケージBを削除し、あなたが中央のパッケージ(などのためのパッケージC.を削除しようとすると今度は、パッケージAは、すべての依存関係を満たすためにpython)、これはにつながることができます無関係と思われる多数の削除済みパッケージ。
スヴェン

4
@RussellBorogove:はい、正確に、CentOS 5 coreutilspython直接依存するわけではありませんが、1つ以上の中間パッケージを介して-結果は同じです:削除。
スヴェン

4
coreutilsへの中間パッケージの数は2つに見えます。python -> cracklib -> pam -> coreutils cracklibへのPythonバインディングがあり、pamがcracklibで構築されており、suがpamと統合されているため、依存関係が存在します。もちろん、それは...それ以上のパッケージをインストールするにはyumのように、あまりにも重要なものの多くを取った
ジョンMahowald

15

結果完全に理解せず何かをした

そのインストールは回復不能であり、centos5を再インストールするには多くの作業が必要です。それは悪い計画です

  1. CentOS 5はサポート終了のため、アップデートはありません。これは、パブリックインターネット上のコンテンツを提供するWebサーバーのように聞こえ、パネルアプリを使用してそれを制御することを考えると、さらに深刻です。
  2. CentOS> 5は、この更新を実行してボックスを強制終了することを阻止します。それはいいエアバッグです。
  3. CentOS 7は、メジャーバージョンアップグレードをサポートしていると主張しています。使用したことはありませんが、リリース時に7から8にジャンプできるのは非常に良いことです。Debianはこれを永遠に持っていましたが、Redhatはメジャーバージョンのジャンプのために常に再インストールが必要でした。

解決

最善の策は、新しいVPSを作成し、CentOS7を新規インストールしてから、古いcentos5ディスクボリュームを再接続して、読み取り専用でマウントすることです。次に、古いドライブから新しいドライブにデータをコピー(移動ではなく)します。

これはAWSを使用する私の方法であることに注意してください。VPSプロバイダーがディスクを別のVMに接続できない場合は、計画を微調整する必要があります。

何をするにしても、将来的に自動バックアップを設定することを検討してください。それはあなたを救うことはありませんが、それは回復を多少柔軟にします。現在、新しい作業サーバーのディスク上のデータが必要です。既存のディスクを失わないでください。


9

これはどうして起こるのでしょうか?まあ、非常に簡単です。サーバーにとって重要な部分を削除することによって。

次の手順:新しいOSを再展開し、バックアップからデータを復元します。


1
パッケージをアンインストールしても、データが削除されることはありません。一部のパッケージメンテナーが王室をめちゃくちゃにしない限り、何も復元する必要はありません。
ヨルグWミットタグ

6
OPが推奨したように新しいOSを復元する場合、データと構成の復元が最も確実に必要になります。
EEAA

@JörgWMittag「復元」という言葉の使用を誤解していると思います。EEAAは、システムを再構成し、既存のデータを新しいマシンのどこかに配置する必要があることを意味します。「復元」はそのための最良の言葉ではないかもしれませんが、誰かがデータベースの復元機能を使用しているのを見ることができました。
jpmc26

@JörgWMittagああ、彼のデータはまだ残っています。システムが機能していないため、アクセスする方法がないというだけです。
シャドゥール

4

ドラゴン788などのコメントで指摘されているように、Gentooでは、開発者はそのような状況に対応するOSのコアパッケージのセットのビルド済みのバイナリバージョンであるtinderboxパッケージのセットも維持しています。コアパッケージを紛失した場合は、システムをLiveCD / DVDから起動し、破損したサーバーのOSドライブをマウントし、ファイルシステムにTinderboxパッケージをアンパックし、アンマウントし、再起動します。サーバーの仕様と構成にパッケージを再構築します。

したがって、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.