Ocorreu um desastre depois de executar o comando yum remove python
e agora não consigo mais inicializar o servidor.
Como aconteceu: Tentei atualizar alguns aplicativos via yum no meu CentOS 5 VPS e o comando falhou devido a algum erro estranho do python 2.4. Percebi que minha versão do python era antiga e tentei reinstalá-lo removendo-o primeiro yum remove python
.
Depois disso, ele me perguntou algo sobre como remover dependências e não parecia nada que eu pudesse sentir falta, então cliquei Y
.
Então, o resultado disso foi que eu não conseguia executar nenhum comando. Eu até tentei, cd /var/www
mas dizia algo como " command does not exist in /usr/bin
". Quando eu costumava tabver sugestões de navegação em pastas, a estrutura do arquivo ainda parecia estar lá (pelo menos o /var/www
que é realmente importante para mim). Depois disso, tentei reiniciar o vps (no painel de administração, pois o reboot
comando não funcionou) e agora ele não inicializa mais.
Agora, minha pergunta é: como um comando como esse pode destruir meu servidor dessa maneira?
# dpkg --remove dpkg
cospedpkg: error processing dpkg (--remove): this is an essential package; it should not be removed
. Se eu adiciono--force-all
à linha de comando do dpkg,dpkg
cospe um pacote inteiro de avisos e procede a sua remoção, além de quebrar cerca de duas dezenas de outros pacotes que dependemdpkg
. Em um sistema real, tenho certeza de que você teria algum problema em se recuperar disso, mas provavelmente poderia (há pouca mágica.deb
); O CentOS pode ou não ser semelhante a esse respeito.Respostas:
Lamento sinceramente: sinto a dor de ter um servidor não inicializável / não reparável.
No entanto, estou perdido ao ler isso:
A lista de pacotes a serem removidos certamente foi realmente enorme, pois
python
é uma parte essencial do RHEL / CentOS. Você nunca deve confirmar alguma mensagem de aviso que realmente não entende.A melhor coisa que você pode fazer, como já sugerido, é inicializar através de uma mídia de recuperação (por exemplo: livecd), extrair os arquivos de dados necessários e reinstalar sua máquina com uma versão mais recente do CentOS (e como o CentOS 6 é bastante antigo, eu recomendo sugiro que você faça uma nova atualização no CentOS 7).
fonte
Francamente, porque você fez algo que não entendeu completamente. Python é uma parte essencial do sistema operacional e as coisas que você considera sem importância são muito importantes. Restaurar a partir do backup.
Quando você removeu o Python,
yum
mostrou uma longa lista de pacotes que também seriam removidos. Esta lista contém bens essenciais comoyum
a si mesmo,coreutils
,net-tools
e outros. Você confirmou a yum que sabe o que está fazendo e deseja prosseguir de qualquer maneira. O resultado disso é um sistema não operacional. Isso não deveria ser surpreendente.Para o registro, na versão mais recente do CentOS isso não é mais possível, pois certos pacotes agora estão marcados como protegidos e não podem ser removidos, apenas reinstalados ou atualizados. E como o CentOS 5 agora é EOL, é um bom momento para atualizar para uma versão mais recente.
fonte
yum
funciona percorrendo o gráfico de dependência e remove os pacotes até que todas as dependências sejam satisfeitas. Se o pacote A depender do pacote B e o pacote B depender do pacote C,yum
também removerá o pacote B e, por sua vez, o pacote A para satisfazer todas as dependências se você tentar remover o pacote C. Para pacotes centrais (comopython
), isso pode resultar em um grande número de pacotes removidos que aparentemente não estão relacionados.coreutils
não dependapython
diretamente do CentOS 5, mas através de um ou mais pacotes intermediários - o resultado é o mesmo: Remoção.python -> cracklib -> pam -> coreutils
A dependência existe porque existem ligações python ao cracklib, o pam foi criado com o cracklib e esse su está integrado ao pam. Claro que tirou muitas coisas importantes também, como yum para instalar qualquer mais pacotes ...Você fez algo sem entender completamente as consequências
Essa instalação é irrecuperável, exigiria muito trabalho para reinstalar o centos5. E esse é um plano ruim porque
Solução
Sua melhor aposta é criar um novo VPS, instalar novamente o CentOS7 e, em seguida, reconectar o antigo volume de disco do centos5 e montá-lo somente leitura. Em seguida, trabalhe para copiar (não mover) seus dados da unidade antiga para a nova.
Observe que esse seria o meu método usando a AWS. Se o seu provedor de VPS não puder anexar discos a diferentes VMs, você precisará ajustar o plano.
Não importa o que você faça, considere configurar backups automatizados no futuro. Isso não salvaria você, mas tornaria a recuperação um pouco mais flexível. No momento, você precisa dos dados nesse disco em um novo servidor em funcionamento. Não perca o disco existente.
fonte
Como isso pôde acontecer? Bem, bem simples: removendo partes que eram críticas para o seu servidor.
Próximas etapas para você: reimplante um novo sistema operacional e restaure seus dados a partir de backups.
fonte
Como apontado por dragon788 e outros nos comentários, no Gentoo, os desenvolvedores também mantêm um conjunto de pacotes tinderbox que são apenas versões binárias pré-construídas de um conjunto de pacotes principais do sistema operacional para essas situações. Se você perder um pacote principal, basta iniciar o sistema no LiveCD / DVD, montar a unidade do SO do servidor quebrado e descompactar os pacotes tinderbox no sistema de arquivos, desmontar, reiniciar e, se inicializar corretamente, reconstrua os pacotes de volta às especificações e configurações do seu servidor.
Portanto, para executar algo semelhante no CentOS, acho que você precisaria encontrar as versões corretas dos RPMs que foram desinstalados, em seguida, inicialize em um LiveCD / DVD, monte a unidade do SO e faça o chroot (talvez ... se você estiver familiarizado com como usar o sinalizador " --relocate " para o rpm , talvez não seja necessário chroot), depois reinstale esses pacotes, desmonte e reinicie.
Obviamente, como o suporte ao CentOS 5 terminou no mês passado, depois de reiniciar o sistema corretamente, você pode atualizá-lo para uma versão atual.
HTH.
fonte
Normalmente, você pode inicializar a partir da mídia de instalação e, em seguida,
chroot
executar comandos ou entrar na instalação atual e recuperar arquivos ou executar uma reinstalação de pacotes.fonte