Журнал всех зависимостей установлен с пакетом

Я установил xinit и рабочий стол человечности на моем веб-сервере как эксперимент. Я хочу удалить их, таким образом, я работал apt-get autoremove для каждого из них. Намного меньше пространства было освобождено, чем использовалось в установке. Я собирался удалить все пакеты, но мой терминал не прокрутит достаточно далеко для наблюдения зависимостей, которые были также установлены. Существует ли запись, которой были установлены зависимости, так, чтобы я мог удалить их? В противном случае есть ли общий список зависимостей? Я не установил много перед этим помимо апача и некоторых пакетов Python, поэтому возможно, существует список, которых пакетов я должен удалить? Я использовал почти 2,5% своих доступных 20 ГБ, устанавливающих их.

0
задан 19 January 2016 в 21:34

1 ответ

Я использовал этот сценарий Python для парсинга файла журнала для всех пакетов, которые были установлены как зависимости xinit и ubuntu-desktop:

REMOVETHESE='xinit','ubuntu-desktop'

#Return an input string with everything parenthesized removed. 
def removeParenthesized(inp):
    while "(" in inp:
        opening=inp.find("(")-1
        ending=inp.find(")")+1
        inp=inp[:opening]+inp[ending:]
    return inp
#Load the log file
with open("/var/log/apt/history.log","r") as logfile:
    log=logfile.read()
#Separate each log entry. 
entries=log.split("\n\n")
#Dict pairs the name of an installed package with the full log entry for that installation
entries={e.split("\n")[1].split(" ")[-1] : "\n".join(e.split("\n")[2:-2])[8:] for e in entries if e.split("\n")[1].split(" ")[2]=="install"}
#Entries of packages to remove
toRemove=[entries[rt] for rt in REMOVETHESE]
#To be removed
removals=[]

for entry in toRemove:
    #Remove the parenthesized information
    entry = removeParenthesized(entry)
    #Split entries by comma, removing the initial space
    packages = [e[1:] for e in entry.split(',')]
    #Remove the info after the colon
    packages=[p.split(':')[0] for p in packages]
    #Add dependencies for this package to list
    removals.extend(packages)
#Print all dependencies 
print ' '.join(removals)

Затем я вставил вывод на конце apt-get autoremove. Вывод сделал меня очень счастливым: приблизительно минуту спустя пакеты были все удалены! Спасибо за Вашу справку, @theodorn.

0
ответ дан 26 July 2019 в 09:18

Другие вопросы по тегам:

Похожие вопросы: