再びpython-debianのお話¶
この記事は Debian/Ubuntu Advent Calendar 2017 12月14日の記事です。
昨日で投稿が止まってしまいそうだったので急遽書いてみました。
python-debianとは¶
python-debian は debian/control
や .changes
などのフォーマットを扱うのに便利ならライブラリです。Debianパッケージとして提供されているので、 sudo apt install python-debian
としてインストールすることができます。
使い方¶
オンラインマニュアルは無いのですが、Debian Sourcesのpython-debianのページ から任意のバージョンの README
, README.deb822
や、 examples
以下のサンブルコードを参考にすることはできます。
でも結局Debianパッケージをインストールしないと使えないので、 /usr/share/doc/python-debian
以下を参照すれば良いだけですが。
なぜ「再び」かというと¶
I made debsign of Python libary that can be run without a TTY でもpython-debianのネタを書いていました。JenkinsでDebianパッケージのカスタムビルドパッケージをビルドして、GPGサインしてローカルアーカイブにアップロードするために:code:debsign コマンドの代わりに python-debianを使ったPythonパッケージを作った ときのネタでした。
changesファイルを読み取り、GPGで署名後のハッシュで上書きする¶
やっていることは上記の記事に書いてあるのですが、実際の処理は書いていなかったので抜き出してみると、下記のような感じです。
import deb822
with open('path/to/changes_file', 'rb') as fileobj:
changes = deb822.Changes(fileobj)
return [changes['Files'],
changes['Checksums-Sha1'],
changes['Checksums-Sha256']]
ビルドしたdebianパッケージの .changes
ファイルのmd5, sha1, sha256のチェックサムを読み取って、 .changes
ファイルのエントリを書き換え、署名するのですが、python-debian パッケージに含まれる、 deb822.Changes
クラスでバイナリモードで読み取った .changes
を読み込むだけで、上記のように簡単に対象のエントリにアクセスできる便利なやつです。
python-debianに含まれるモジュール¶
deb822以外にも
arfile
changelog
copyright
debfile
debian_support
debtags
などが含まれるのでpython-debianパッケージをインスールしていれば、 pydoc
コマンドでdocstringのドキュメントを読むことができます。実際に使うときはそちらを参照するのが良いでしょう。
まとめ¶
python-debianという便利なDebianパッケージがあるよ
以前作ったPythonパッケージでは、
deb822.Changes
だけでアクセスできて便利だったよドキュメントはpython-debianパッケージ自体に含まれているよ
というお話でした。