debian/ubuntu.deb包实用程序
debpkgr的Python项目详细描述
DEBPKGR
debian/ubuntu打包和存储库实用程序的纯python实现。
允许在 非Debian系统,在没有提供典型系统的情况下 公用设施(如apt)。
示例
检查包装
fromdebpkgr.debpkgimportDebPkgpkg=DebPkg.from_file('/path/to/foo.deb')print(pkg.name)print(pkg.nevra)print(pkg.md5sum)print(pkg.package)
创建回购
fromdebpkgr.aptrepoimportcreate_reponame='test_repo_foo'arches=['amd64','i386']description='Apt repository for Test Repo Foo'files=[]forroot,_,flinos.walk(temp_dir):forfinfl:iff.endswith('.deb'):files.append(os.path.join(root,f))repo=create_repo(self.new_repo_dir,files,name=name,arches=arches,desc=description)
签名支持
可以使用包装脚本对存储库元数据进行签名/ 围绕gpg或另一个gpg签名工具(如[hardware security module](https://en.wikipedia.org/wiki/Hardware_security_module)执行。
为此,您需要将signoptions对象传递到较低级别 aptrepo将其分类为gpg\u符号选项参数:
gpg_sign_options=SignOptions(cmd="/usr/local/bin/sign.sh",key_id="45BA0816")repo=AptRepo(repo_dir,repo_name,gpg_sign_options=gpg_sign_options)
提供的sign命令必须是可执行的。
它将提供要签名的版本文件的路径,并且 应在与 发布文件。
此外,sign命令将在以下环境中传递 变量:
- gpg\u命令
- gpg_key_id(如果在配置文件中指定的话)
- GPG存储库名称
- gpg_dist
sign命令可以根据存储库名称决定要使用的密钥id 或者正在签名的dist。
使用gpg的最小符号命令可以是:
#!/bin/bash -e KEYID=${GPG_KEY_ID:-45BA0816} gpg --homedir /var/lib/debpkgr/gpg-home \ --detach-sign --default-key $KEYID\ --armor --output ${1}.gpg ${1}
您可以导入这样的无密码GPG密钥:
mkdir /var/lib/debpkgr/gpg-home
chmod 0700 /var/lib/debpkgr/gpg-home
gpg --homedir /var/lib/debpkgr/gpg-home --import <path-to-secret-keys>