Ответ 1
Рекомендуется использовать модуль apt
из пакета python-apt
Debian. Это оболочка более высокого уровня вокруг базовых библиотек C/С++ libapt-xxx
и имеет интерфейс Pythonic.
Вот пример script, который установит пакет libjs-yui-doc
:
#!/usr/bin/env python
# aptinstall.py
import apt
import sys
pkg_name = "libjs-yui-doc"
cache = apt.cache.Cache()
cache.update()
pkg = cache[pkg_name]
if pkg.is_installed:
print "{pkg_name} already installed".format(pkg_name=pkg_name)
else:
pkg.mark_install()
try:
cache.commit()
except Exception, arg:
print >> sys.stderr, "Sorry, package installation failed [{err}]".format(err=str(arg))
Как и при использовании apt-get
, это должно выполняться с привилегиями суперпользователя для доступа и изменения кэша APT.
$ sudo ./aptinstall.py
Если вы пытаетесь установить пакет как часть более крупного script, вероятно, неплохо было бы только повысить привилегии root до минимального требуемого времени.
Вы можете найти небольшой пример в функции /usr/share/pyshared/apt/progress/gtk2.py:_test()
, показывающий, как установить пакет с помощью интерфейса GTK.