跳转到主要内容

与Debian仓库内容文件一起工作的实用程序

项目描述

pydebcontents:搜索Debian内容文件

Debian(及其衍生版)发布的软件包仓库有许多不同的索引文件,描述了发布、软件包、源和软件包的文件内容。Debian维基百科有关于仓库格式的完整描述

通过python-debian模块提供对Release、Packages和Sources文件中数据的访问,该模块可在Debian存档和PyPI中获取。

此模块提供对内容文件的访问。

需求

此模块不需要stdlib之外的Python模块。

然而,搜索内容文件依赖于外部zgrep程序在您的PATH上;zgrep用于透明地搜索gzip压缩的Contents.gz文件。

内容文件需要按在Debian镜像上找到的顺序排列: dists/{release}/{component}/Contents-{arch}.gz

使用apt-cacher-ng软件包的用户可能希望使用其本地文件缓存来访问期望格式的内容文件。

安装

从PyPI

pip install pydebcontents

从git

git clone https://salsa.debian.org/debian-irc-team/pydebcontents
cd pydebcontents
pip install .

用法

该模块附带一个简单的命令行界面,感觉有点像标准的apt-file程序。

例如,要查找所有包含在软件包中的README文件

py-apt-file --base /var/cache/apt-cacher-ng/debrep/ search --mode glob  usr/share/doc/*/README

目前py-apt-file知道的唯一动词是search

$ py-apt-file search --help
usage: py-apt-file search [-h] [--release RELEASE] [--arch ARCH] [--component COMP] [--mode {glob,regex,fixed}]
[--max MAX]
PATTERN

positional arguments:
PATTERN               glob, regular expression or fixed string

options:
-h, --help            show this help message and exit
--release RELEASE     release to search (default: sid)
--arch ARCH, --architecture ARCH
architecture to search (default: amd64)
--component COMP      archive components to search (default: all of them)
--mode {glob,regex,fixed}
match mode for pattern
--max MAX             maximum number of packages to return

从Python,可以使用模块

import pydebcontents

contents = pydebcontents.ContentsFile("/var/cache/apt-cacher-ng/debrep/", "sid", "amd64", ["contrib"])

contents.search("usr/share/doc/.*/README")

返回一个ContentsDict结构,它是一个dict,其键是包条目(在Contents文件中使用的{section}/{package}格式),值是匹配的文件名列表。

ContentsFile.search使用的搜索词是正则表达式的字符串表示。在pydebcontents中提供了处理搜索模式的便利函数,包括处理一些zgrep和Contents文件格式的怪癖。

  • glob2re将glob语法转换为正则表达式
  • fixed2re将固定字符串转换为正则表达式
  • re2re清理现有的正则表达式
  • pattern2re用于程序化选择上述三个函数之一。

待办事项列表/限制

  • 之前尝试的纯Python实现速度太慢,无法用于搜索Contents文件;这可以重新审视。
  • 镜像现在携带其他压缩格式,如xz,目前找不到或使用。
  • 没有提供获取Contents文件并在磁盘上以合适的树形结构排列它们的实用程序。
  • 没有能力简单地指向一个不在所需树形格式中的磁盘上的Contents文件。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

pydebcontents-0.3.1.tar.gz (12.9 kB 查看哈希值)

上传时间

构建分发

pydebcontents-0.3.1-py3-none-any.whl (16.1 kB 查看哈希值)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面