Как я могу удалить ppa с помощью модуля Python apt?

Я могу добавить PPA, используя его, но не могу удалить. Я не могу найти правильный синтаксис для удаления ppa из sources.list. Вот мой код:

import aptsources.sourceslist as s
repo = ('deb', 'http://ppa.launchpad.net/danielrichter2007/grub-customizer/ubuntu', 'xenial', ['main'])
sources = s.SourcesList()
sources.add(repo)
sources.save()

#doesn't work 
sources.remove(repo)

Я попытался прочитать документы, найденные здесь, но я все еще не могу найти формат для вызова sources.remove(repo)

2 ответа

Решение

SourcesList.remove() текст справки читает remove(source_entry) что означает, что он хочет SourceEntry объект. Как это происходит, sources.add() возвращает SourceEntry объект:

import aptsources.sourceslist as sl

sources = sl.SourcesList()
entry = sources.add('deb', 'mirror://mirrors.ubuntu.com/mirrors.txt', 'xenial', ['main'])
print(type(entry))

Выходы:

<class 'aptsources.sourceslist.SourceEntry'>

Чтобы удалить запись:

sources.remove(entry)
sources.save()

Вы также можете отключить его (который оставит закомментированную запись в sources.list:

entry.set_enabled(False)
sources.save()

Я использую это для удаления сейчас.

import fileinput 

filename = '/etc/apt/sources.list'
word = 'grub-customizer'
n = ""
remove = fileinput.input(filename, inplace=1)
for line in remove:
    if word in line:
       line = n
    line.strip()
    print line,
remove.close()
Другие вопросы по тегам