如何使用python-apt API安装包

时间:2013-07-08 23:02:11

标签: python apt

对于Python来说,我是一个相当新手,所以我事先请求原谅:)。也就是说,我试图创建一个脚本,除其他外,安装一些Linux软件包。首先,我尝试使用子程序,如here所述。虽然这最终可以奏效,但我偶然发现了python-apt API,因为我不是一个大粉丝或重新发明轮子,我决定尝试一下。

在尝试使用python-apt查找有关安装软件包的示例/教程时出现问题。在搜索文档时,我发现PackageManager类有一些安装包的方法。我尝试了一些简单的代码来实现这个目的:

apt_pkg.PackageManager.install("python")

这似乎不那么容易,安装方法需要apt_pkg.PackageManager而不是普通的String。因此,看起来更多,I found this example看起来很有希望,但我有点不愿意使用,因为我不太了解那里发生的一些事情。

然后,是否有人试图使用python-apt安装软件包,还是应该使用普通的子软件?

谢谢!

1 个答案:

答案 0 :(得分:32)

建议使用apt Debian软件包中的python-apt模块。这是基础C / C ++ libapt-xxx库的更高级别的包装器,并且具有Pythonic接口。

这是一个安装libjs-yui-doc包的示例脚本:

#!/usr/bin/env python
# aptinstall.py

import apt
import sys

pkg_name = "libjs-yui-doc"

cache = apt.cache.Cache()
cache.update()
cache.open()

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

如果您正在尝试将软件包安装作为更大脚本的一部分,那么最好只在最短时间内提升到root权限。

您可以在/usr/share/pyshared/apt/progress/gtk2.py:_test()函数中找到一个小例子,展示如何使用GTK前端安装软件包。