note/python-apt

tag = python debian pm

python-apt 模块笔记

Welcome to python-apt’s documentation!

我将 PacVis 移植到了 Debian 上,使用了这个模块。和 Arch Linux 不同,Debian 的包管理器复杂许多。而我 Google 了半天,也很少找到个像样的文档。所以我公开了这篇笔记,希望能帮到大家。

低级模块

不建议基于 apt_pkg 这个低级模块进行开发。

apt_pkg.Cache

apt_pkg.Cache() 实例包含所有源的数据库。使用起来类似于一个 {'name': <apt.Package>, ...} 词典。

c = apt.apt_pkg.Cache()

apt_pkg.Package

p = c['python3']

p 只包含了一些基础信息,更多的信息在 apt_pkg.Version 对象中。

属性名 类型 说明
current_state int 当前状态,取值有 apt.apt_pkg.CURSTATE_INSTALLED 等。
current_version apt_pkg.Version 当前的版本。
version_list list [<apt_pkg.Version>, ...]

apt_pkg.Version

v = p.current_ver
  • depends_list_str:
    {'PreDepends': [[<apt_pkg.Dependency>], ...],
     'Depends': [[<apt_pkg.Dependency>], ...],
     'Suggests': [[<apt_pkg.Dependency>], ...]}

高级模块

apt.cache.Cache

In [50]: apt.cache.Cache()
In [50]: <apt.cache.Cache at 0x7f8a71bb7e10>
In [51]: dict(apt.cache.Cache())
Out[51]: {'package-name': <apt.package.Package>, ...}

可使用以下代码筛选出已安装的包:

cache = apt.cache.Cache()
packages = [p for p in cache if p.is_installed]

apt.package.Package

属性名 类型 说明
installed apt.cache.Version 当前安装的版本的包。
is_installed bool 是否安装。
is_auto_installed bool 若为 True 则该包是在安装其他包时当作依赖安装的。需要注意的是,很多作为依赖安装的包都会被 apt-mark 标记为手动(manual)安装,因此这个属性不一定可靠。
section str aptitude-section

apt.package.Version

属性名 类型 说明
dependencies [<apt.package.Dependency>, ...] 一个列表,其中每一项都是一个依赖。
suggests [<apt.package.Dependency>, ...]
version str 这个版本的包的版本号。
description str 长介绍。
raw_description str 短介绍。
installed_size int 安装后的大小,单位是 kb 。
provides [str, ...] python3 当前版本的该属性值为 ['python3:any', 'python3-profiler', 'python3-profiler:any']

apt.package.Dependency

用起来和一个列表差不多。本身不包含什么信息,信息在其中的 apt.package.BaseDependency 对象里面。

In [72]: apt.cache.Cache()['python3'].installed.dependencies
Out[72]: 
[<Dependency: [<BaseDependency: name:'python3-minimal' relation:'=' version:'3.5.3-1' rawtype:'PreDepends'>]>,
 <Dependency: [<BaseDependency: name:'python3.5' relation:'>=' version:'3.5.3-1~' rawtype:'Depends'>]>,
 <Dependency: [<BaseDependency: name:'libpython3-stdlib' relation:'=' version:'3.5.3-1' rawtype:'Depends'>]>,
 <Dependency: [<BaseDependency: name:'dh-python' relation:'' version:'' rawtype:'Depends'>]>]

apt.package.BaseDependency

属性名 类型 说明
version apt.cache.Version
name str

About Me