Como reverter uma ação 'apt-get remove' depois de pressionar CTRL + Z

4

Eu corri por engano apt-get remove WRONG_PACKAGE , depois de perceber isso, pressionei CTRL + Z para quebrar o processo, já que remover o pacote começou a remover mais de 100 outros pacotes.

Agora, quando tento executar apt-get install REMOVED_ONES , ele afirma:

E: dpkg was interrupted, you must manually run 'sudo dpkg --configure -a' to correct the problem.

Existe alguma maneira de reverter isso?

    
por Sorin Trimbitas 04.01.2013 / 18:37

2 respostas

10

Na verdade ...

CTRL + Z irá suspender o processo.

CTRL + c irá matar o processo.

Note que suspendendo um processo o enviará para o segundo plano até que você o chame novamente. Como está suspenso, você pode executar outro programa. Vai "olhar" como se foi, mas não é. Ele realmente informará o ID do processo que foi atribuído a ele antes de ir para o segundo plano.

Para saber quais processos estão sendo executados em segundo plano, usamos o comando jobs , que mostra todos os processos em execução em segundo plano no terminal aberto com seu respectivo número de plano de fundo.

Para chamar o processo novamente (na verdade, para continuar o processo em que você o deixou), digite fg .

fg significa ANTERIOR. Para trazer para o primeiro plano de fundo, se você quiser ter uma idéia disso. Se acontecer de você ter outro processo suspenso, você pode ir até eles fazendo fg 1 para o processo 1, fg 2 para o processo 2 e assim por diante.

Saiba que se você enviar um processo para o segundo plano usando CTRL + Z , enviará o processo para o segundo plano, mas ele será interrompido. Para fazê-lo funcionar novamente, basta executar bg seguido pelo trabalho de ID em segundo plano para esse processo, como bg 2 para o trabalho 2 em segundo plano.

A diferença quando aplicada a apt-get (Or aptitude ou qualquer outro gerenciador de pacotes) é que os arquivos de bloqueio não serão apagados ao fazer uma remoção / atualização / instalação ou que o arquivo repo pode ser corrompido.

Você precisará literalmente remover os arquivos com rm .

Antes de remover qualquer coisa, tente o que o gerenciador de pacotes sugere, nesse caso:

sudo dpkg --configure -a ou sudo dpkg-reconfigure -a caso você tenha feito uma atualização. Na maioria dos casos (em TODOS os casos para mim) eu tive que primeiro excluir os arquivos lock como segue:

sudo rm -fr /var/cache/apt/archives/lock e sudo rm -fr /var/lib/dpkg/lock

Se por acaso você quiser remover o processo (se ele ainda estiver ativo), você pode consultá-lo usando ps -e e localizando o PID numer e, em seguida, usando kill -9 PID , onde PID é o número encontrado ou emitido sudo killall NAME_OF_PROCESS

Alternativa que você também pode fazer:

sudo fuser -cuk /var/lib/dpkg/lock em sudo fuser -cuk /var/cache/apt/archives/lock em sudo rm -fr /var/cache/apt/archives/lock em sudo rm -fr /var/lib/dpkg/lock

Depois de tudo isso, você pode usar os comandos recomendados pelo aplicativo como mencionei no começo ou simplesmente tentar reinstalar o pacote que você removeu por engano. Também recomendo fazer um sudo apt-get update apenas para garantir que tudo esteja correto.

Observe que, se o pacote removeu todos esses outros pacotes, tente primeiro instalar o pacote. Por exemplo, se você fez:

sudo apt-get remove unity por engano, primeiro tente seguir as etapas que mencionei e instale o pacote preciso novamente:

sudo apt-get install unity .

Se por acaso não tiver desinstalado, faça:

sudo -apt-get install --reinstall unity

    
por Luis Alvarado 04.01.2013 / 19:02
0

Eu tive um problema semelhante uma vez e executei o comando como sugerido. Depois que você fizer isso, você pode apt-get install WRONG_PACKAGE . Deve reinstalar todos os pacotes que tentou remover. Você não precisa instalar cada um manualmente.

    
por To Do 04.01.2013 / 18:58

Tags