Sunucu “yum remove python” ifadesinden sonra silindi [kapalı]


65

Komutu çalıştırdıktan sonra az önce bir felaket meydana geldi yum remove pythonve şimdi sunucuyu artık açamıyorum.

Nasıl oldu: Bazı uygulamaları CentOS 5 VPS'imde yum ile güncellemeye çalıştım ve garip python 2.4 hatası nedeniyle komut başarısız oldu. Python sürümümün eski olduğunu ve önce onu kaldırarak yeniden yüklemeyi denediğimi farkettim ve yaptım yum remove python.

Ondan sonra bana bağımlılıkları kaldırmakla ilgili bir şey sordu ve hiçbir şey gibi görünmüyordu, bu yüzden tıklayabildim Y.

Bundan sonra, ne olursa olsun herhangi bir emri çalıştıramadım. Hatta denedim cd /var/wwwama " command does not exist in /usr/bin" gibi bir şey söyledi . Ben kullanıldığında tabklasör navigasyon önerilerini görmek için, dosya yapısı hala (en azından orada görünüyordu /var/wwwbenim için çok önemli olan bit). Ondan sonra vps'yi yeniden başlatmayı denedim ( rebootkomut çalışmadığı için admin panelinden ) ve şimdi artık ön yükleme yapmıyor.

Şimdi sorum şu: Böyle bir komut sunucumu bu şekilde nasıl tahrip edebilir?


33
Bu arada, apt-get apt çalışmalarını kaldırır. Ben dpkg denemedim - henüz dpkg çıkarın Bahse girerim bu çok kötü.
joshudson

19
Bir yedeğin var, değil mi?
vasin1987

21
@joshudson Az önce bir VM'de bir Debian 8.4 canlı CD'si açtım ve denedim. Sonuç: # dpkg --remove dpkgtükürür dpkg: error processing dpkg (--remove): this is an essential package; it should not be removed. Ben eklerseniz --force-alldpkg komut satırına, dpkguyarılar bir bütün paket tükürür ve bağlı yaklaşık iki düzine diğer paketleri kırma birlikte kendisini kaldırmak için ilerler dpkg. Gerçek bir sistemde, ondan kurtulmakta sorun yaşayacağınıza eminim, ama muhtemelen başarabilirsiniz ( .debs için küçük bir sihir vardır ); CentOS bu konuda benzer olabilir veya olmayabilir.
CVn

6
@joshudson İşe yarıyor çünkü komutu verirken bellekte çalışan bir apt kopyası var ... komut bittiğinde (ve program sona erdiğinde), artık apt kullanamazsınız.
SnakeDoc

2
Yum kendisi Python'da uygulanıyor inanıyorum ... Python'u kaldırmak, kendi ayağını çok iyi çekiyor!
peufeu

Yanıtlar:


67

İçtenlikle özür dilerim: Bir sunucunun önyüklenebilir / hizmetsiz olması için acıyı hissedebiliyorum.

Ancak, bunu okurken kayboluyorum:

Ondan sonra bana bağımlılıkları kaldırmayla ilgili bir şey sordu ve hiçbir şeyi kaçırmayacak gibi göründüm, bu yüzden [Y]

Kaldırılacak paketlerin listesi kesinlikle RHEL / CentOS'un önemli bir parçası olduğu için gerçekten çok büyüktü python. Sen gerektiğini asla gerçekten anlamıyorum bazı uyarı mesajı onaylayın.

Önceden önerildiği gibi, yapabileceğiniz en iyi şey, kurtarma ortamıyla önyükleme yapmak (yani: livecd), gerekli veri dosyalarını ayıklamak ve makinenizi daha yeni bir CentOS sürümüyle yeniden yüklemek (ve CentOS 6 oldukça eskiyse, kesinlikle CentOS 7'ye yeniden teklif etmenizi öneririm).


2
Gelecek için: LVM LV'lerde işletim sistemi olan sunucular oluşturun (ISTR varsayılan RHEL'dir). Sistemi kırma şansı en az olan herhangi bir şeyden önce, anlık görüntü (ler) oluşturun. Gerçekten de sistemi bozarsa, anlık görüntüye dakikalar içinde dönebilirsiniz. Aksi takdirde, her şey yolunda değilse, anlık görüntüyü kaldırabilirsiniz. unix.stackexchange.com/questions/18913 adresini ziyaret edin . NB anlık görüntüleri yedek değil. Anlık görüntünün sizi kurtaramayacağı durumlar için hala yedeklemeye ihtiyacınız var.
nigel222

Debian / Ubuntu'da kurtarma görüntüsünü (örneğin finnix) önyükleyebilir, temel sistemi debootstrap, chroot ve apt-get install ubuntu-desktop ile açabilir. Centos / rhel debootstrap eşdeğeri olup olmadığını hiçbir fikrim yok.
Edheldil

1
CentOS 6 Kasım 2020'ye kadar desteklenir . Yükseltme için acele yok (7'ye gitmenin bir çok avantajı olsa da).
psmears

106

Açıkçası, çünkü tam olarak anlamadığınız bir şey yaptınız. Python, işletim sisteminin önemli bir parçasıdır ve önemsiz olduğunu düşündüğünüz şeyler çok önemlidir. Yedekten geri yükle.


Python'u çıkardığınızda, size de kaldırılacak yumolan paketlerin uzun bir listesini gösterdi. Bu liste gibi gereksinimleri içerir yumkendisi, coreutils, net-toolsve diğerleri. Ne yaptığını bildiğini ve yine de devam etmek istediğini bildiğini onayladın. Bunun sonucu çalışmayan bir sistemdir. Bu şaşırtıcı olmamalı.

Kayıt için, daha yeni CentOS sürümlerinde bu mümkün değildir, çünkü bazı paketler artık korumalı olarak işaretlenmiştir ve kaldırılamaz, yalnızca yeniden yüklenebilir veya yükseltilebilir. Yine de CentOS 5 artık EOL olduğundan, daha yeni bir sürüme geçmenin tam zamanı.


3
Haha hızlıca hızla yükseldi (yum kaldır python == sadece tüm makineyi silin: D). En azından / var / www içindeki dosyaları geri yükleyebilmemin bir yolu olup olmadığını mı düşünüyorsunuz?
tadoman

8
@tadoman: Bir tür kurtarma sistemine başlatabiliyorsanız, diski takıp veriyi kurtarabilirsiniz ( yapılandırma dosyaları dahil olmak üzere tüm kullanıcı verileriniz olmalıdır ). Ortamlarında neyin mümkün olduğunu tartışmak için sağlayıcınıza başvurmanız gerekir.
Sven

6
@RussellBorogove: Bunlardan ikisini de söylemiyorum. yumbağımlılık grafiğini aşağı doğru yürüterek çalışır ve tüm bağımlılıklar sağlanıncaya kadar paketleri kaldırır. A paketi B paketine bağlıysa ve B paketi C paketine bağlıysa, B paketini yumde kaldıracak ve sırayla, A paketini kaldırmaya çalışırsanız tüm bağımlılıkları karşılamak için A paketi, merkezi paketler (gibi python) için görünüşte alakasız olan çok sayıda kaldırılmış paket.
Sven

4
@RussellBorogove: Evet, tam olarak, her ne kadar doğrudan CentOS 5'e coreutilsbağlı olmasa da python, bir ya da daha fazla ara paket aracılığıyla - sonuç aynı olsa: Kaldırma.
Sven

4
Çekirdekler için ara paketlerin sayısı iki gibi görünüyor. python -> cracklib -> pam -> coreutils Bağımlılık var, çünkü cracklib'e python bağları var, pam, cracklib ile inşa edildi ve bu su, pam ile entegre edildi. Elbette daha birçok paket de
çıkardı,

15

Sonuçlarını tam olarak anlamadan bir şey yaptın

Bu yükleme kurtarılamaz, centos5'i yeniden yüklemek için çok fazla çalışma yapılması gerekiyor. Ve bu kötü bir plan çünkü

  1. CentOS 5 Yaşamın Sonu'dur ve bu nedenle güncelleme yapmaz. Bu, kamuya açık internette içerik sunan bir web sunucusu gibi göründüğü ve kontrol etmek için panel uygulamalarını kullandığınızdan dolayı çok ciddidir.
  2. CentOS> 5 sizi bu güncellemeyi yapmaz ve kutuyu öldürürdü. Bu olması güzel bir hava yastığı.
  3. CentOS 7, büyük sürüm yükseltmelerini yerinde olduğunu iddia ediyor. Hiç kullanmadım, ancak yayınlandığında 7'den 8'e atlayabilmek çok iyi olacak. Debian sonsuza kadar sürdü, ama Redhat her zaman büyük sürüm atlamaları için yeniden yüklemeyi gerektiriyordu.

Çözüm

En iyi bahis, yeni bir VPS oluşturmak, yeni CentOS7 yüklemek ve ardından eski centos5 disk birimini yeniden takıp salt okunur şekilde monte etmektir. Daha sonra verilerinizi eski sürücüden yenisine kopyalamak (taşımak değil) için çalışın.

Bu AWS kullanarak benim yöntemim olacağını unutmayın. VPS sağlayıcınız farklı sanal makinelere disk ekleyemiyorsa, planı düzeltmeniz gerekir.

Ne yaparsanız yapın, lütfen gelecekte otomatik yedeklemeler ayarlamayı düşünün. Seni kurtaramaz, ama iyileşmeyi biraz daha esnek hale getirirdi. Şu anda, yeni bir çalışan sunucuda o diskteki verilere ihtiyacınız var. Mevcut diski gevşetmeyin.


9

Bu nasıl olabilir? Eh, oldukça basit: Sunucunuz için kritik olan parçaları kaldırarak.

Sonraki adımlar: yeni bir işletim sistemini yeniden dağıtın ve verilerinizi yedeklerden geri yükleyin.


1
Bir paketin kaldırılması hiçbir zaman veriyi kaldırmamalıdır. Bazı paket bakımcıları iyice batırmadıkça, hiçbir şeyi geri yüklemeye gerek kalmamalıydı.
Jörg W Mittag

6
OP tavsiye ettiğim gibi yeni bir işletim sistemi geri yüklerse, verilerin ve yapılandırmanın geri yüklenmesi en kesin şekilde gerekli olacaktır.
EEAA

@ JörgWMittag "restore" kelimesinin kullanımını yanlış anladığınızı düşünüyorum. AÇA, sistemin yeniden yapılandırılması ve mevcut verilerin yeni makinede bir yere yerleştirilmesi gerektiği anlamına gelir. Bu parça için veritabanı geri yükleme işlevini kullanan birisini görebilsem de, "Geri Yükleme" bunun için en iyi kelime olmayabilir.
jpmc26

@ JörgWMittag Oh, onun verileri hala orada, büyük olasılıkla. Bu sadece işlevsel olmayan sistemi ile ona erişme imkânı yok.
Shadur

4

Yorumlardaki dragon788 ve başkaları tarafından da belirtildiği gibi, Gentoo'daki, geliştiriciler de bir dizi korumak tinderbox sadece önceden oluşturulmuş olan paketler, böyle durumlar için OS çekirdek paketleri bir dizi ikili sürümleri. Çekirdek paketini kaybederseniz, sistemin LiveCD / DVD'ye önyüklenmesini sağlayın, bozuk sunucunun işletim sistemi sürücüsünü takın ve kutu paketlerini paketine dosya sistemine açın, ayırın, yeniden başlatın ve doğru şekilde açılırsa, paketleri sunucunuzun teknik özelliklerine ve yapılandırmalarına göre yeniden oluşturun.

Dolayısıyla, CentOS'ta benzer bir şey yapmak için kaldırılmış RPM'lerin doğru sürümlerini bulmanız, ardından bir LiveCD / DVD'ye önyükleme yapmanız, işletim sistemi sürücüsünü takmanız ve chroot (belki de ... aşina olduğunuzda) yapmanız gerektiğini düşünüyorum. rpm için " --relocate " bayrağını nasıl kullanacağınızla, chroot yapmanıza gerek kalmayabilir ), ardından bu paketleri tekrar kurun, sökün ve yeniden başlatın .

Elbette, CentOS 5 desteği geçen ay sona erdiğinden, sistemi düzgün bir şekilde yeniden başlattıktan sonra güncel bir sürüme güncelleyebilirsiniz.

HTH.


0

Genellikle yükleme medyasından önyükleme yapabilir ve ardından chrootkomutları çalıştırabilir veya geçerli yükleme işlemine girebilir ve dosyaları kurtarabilir veya paketleri yeniden yükleyebilirsiniz.


4
/ Usr / bin, vb. İçerisinde herhangi bir yararlı ikili dosyaya sahip olmayan bir kök dizinine giremezsiniz. Ölü sisteme önyükleme yapmakla aynı sonucu verir. Chroot da gerekli değildir, çünkü bir kere dosya sistemini taktıktan sonra, kurtarmak istediğiniz dosyaları / var / www adresinden kopyalayabilirsiniz.
qris

Kesinlikle doğru, Gentoo / Arch programını kullanmaya başladığımı hatırlıyorum. İlk önce her şeyi kaldırmadım. ;)
dragon788
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.