我想重新安装 Python 并运行sudo apt-get remove --purge python
。显然它几乎毁掉了我系统中安装的所有东西。
看着这些,history.log
我想我可以再次手动安装这些软件包,但是它们有数百个,我不能只是复制粘贴。
讽刺的是,python 仍然安装着。我能用它执行一些替换正则表达式来修复这个烂摊子吗?或者用 bash。
答案1
首先,我sudo apt-get install ubuntu-desktop
按照评论中的方法运行,然后我复制了/var/log/apt/history.log
有关清除操作的部分,并在其上运行了我编写的以下 Python 脚本。可能更精通正则表达式的人看到我的做法会哭,但对我来说,它确实有效:
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)
然后我可以看到一个Install
块并Purge
阻止replaced.txt
,所以我只会sudo apt-get install
在第一个块中看到所有包,然后在第二个块中看到所有包。
显然,这就是事实。
答案2
我遇到了类似的问题。@dabadaba 的脚本运行良好,但我发现手动安装每个包有点繁琐。
replaced.txt
下面是我编写的一个 Python 脚本,用于自动安装@dabadaba 的答案中创建的文件中列出的软件包
import subprocess
f = open('replaced.txt', 'r')
for line in f:
if line.startswith('Install') or line.startswith('Purge'):
packages = line.split()
for i 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'