Je voulais une nouvelle installation de Python et j'ai lancé Sudo apt-get remove --purge python
. Apparemment, il a tué presque tout ce que j'avais installé dans mon système.
En regardant le history.log
je suppose que je pourrais réinstaller manuellement les paquets, mais il y en a des centaines, je ne peux pas simplement copier-coller.
Ironiquement, python est toujours installé. Pourrais-je effectuer quelques remplacements de regex afin de pouvoir réparer ce gâchis? Ou avec bash.
J'ai d'abord lancé Sudo apt-get install ubuntu-desktop
comme je l'avais dit dans les commentaires, puis j'ai copié la partie de /var/log/apt/history.log
relative à l'action de purge et y ai exécuté le script python que j'ai créé. Probablement quelqu'un de plus expérimenté en regex pleurerait en voyant comment je le faisais, mais cela a fonctionné pour moi:
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)
Ensuite, je pouvais voir un bloc Install
et un bloc Purge
dans replaced.txt
, de sorte que je voudrais simplement Sudo apt-get install
tous les packages du premier bloc, puis du second.
Et voilà, apparemment.
J'avais un problème similaire. Le script de @ dabadaba a très bien fonctionné, mais l'installation de chaque paquet manuellement a été fastidieuse.
Voici un script python que j'ai écrit pour automatiser l'installation des packages répertoriés dans le fichier replaced.txt
créé dans la réponse de @ 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'