Desfazer apt-get remove --purge

3

Eu queria uma nova instalação do Python e executei sudo apt-get remove --purge python . Aparentemente, ele matou quase tudo que eu tinha instalado no meu sistema.

Olhando para o history.log , acho que posso instalar manualmente os pacotes novamente, mas existem centenas deles, não posso simplesmente copiar e colar.

Ironicamente, o python ainda está instalado. Poderia eu executar algum regex de substituição com isto assim eu posso consertar esta bagunça? Ou com o bash.

    
por dabadaba 11.09.2014 / 11:01

2 respostas

6

Primeiro eu executei sudo apt-get install ubuntu-desktop como me foi dito nos comentários, depois copiei a parte de /var/log/apt/history.log referente à ação de limpeza e executei o seguinte script python que fiz. Provavelmente alguém mais habilidoso em regex iria chorar ao ver como eu fiz isso, mas funcionou para mim:

import re

f = open('remove.log', 'r')
s = ""
for i in f:
    s += i + '\n'

s = re.sub(':.*?', '', s)
s = re.sub(r'\([^)]*\)', '', s)
s = re.sub(',', '', s)
s = re.sub('amd64', '', s)

f = open('replaced.txt', 'w')
f.write(s)

Então, eu pude ver um Install block e Purge block em replaced.txt , então eu apenas sudo apt-get install de todos os pacotes no primeiro bloco, e depois no segundo.

E voilà, aparentemente.

    
por dabadaba 11.09.2014 / 11:32
3

Eu tive um problema semelhante. O script do @dabadaba funcionou muito bem, mas eu achei a instalação manual de cada pacote um pouco tediosa.

Aqui está um script python que escrevi para automatizar a instalação dos pacotes listados no arquivo replaced.txt criado na resposta do @dabadaba

import subprocess

f = open('replaced.txt', 'r')

for line in f:
    if line.startswith('Install') or line.startswith('Purge'):
        packages = line.split()
        for in in range(1, len(packages):
            print 'Do you want to install ' + packages[i] + '? [y/n]'
            input = raw_input()
            if input == 'y':
                print 'beginning install'
                p = subprocess.Popen('apt-get install ' + packages[i], shell=True)
                p.wait()
            else:
                print 'not installing'
    
por JohannB 18.08.2017 / 01:57