トップ «前の日記(2018-11-18) 最新 次の日記(2018-11-20)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2018-11-19 :-|

_

ストレージ労

_ [Pythn][pip][deb][ubuntu][debian]Pythn pip パッケージから Ubuntu パッケージを作る

ubuntu というか debian というか。

作れることは作れますが、Ubuntu パッケージのフォーマットのファイル構造を生成する、という感じです。必要な依存関係は別途自分で control に書いたり、システムによってはビルド方法が異なるので rules を修正したり、手動での調整が必要です。pkgtools/url2pkg のような感じですね。

ただ、ここで使用している stdeb は最後に リリース されたのが 2015 年だし、issue も数年間放置されています。もはやメンテナンスされてないかもしれず。

準備

py2dsc をインストールする。

sudo pip install stdeb

ubuntu のバージョンによるが、stdeb は古いやつだと Python3 向けパッケージを作れないので、今回は pip で最新をインストールした。

python-lazy-object-proxy https://github.com/ionelmc/python-lazy-object-proxy を Ubuntu パッケージにしてみる。

zip または tar.gz が必要なので、pip からダウンロードできるならそれを使う。今回は都合により古いバージョンを扱いたいので、github リポジトリ(pip のページからリンクされてる)からダウンロードするたとえばこのバージョンをパッケージ化してみる。

https://github.com/ionelmc/python-lazy-object-proxy/releases/tag/v1.2.1

% curl -O -L https://github.com/ionelmc/python-lazy-object-proxy/archive/v1.2.1.tar.gz

deb パッケージを作ります。なお python2 向けパッケージか python3 向けパッケージが作られるかは、使っている python のバージョンに依存するので注意。上書きしたい場合は --with-ナントカ で指定します。

stdeb · PyPI

Python 3 support

By default, only packages are built for the version of Python being used. To override this, use --with-python2=True or --with-python3=True as an argument to the sdist_dsc distutils command (or use both to be sure).

こんな感じで。

% py2dsc --with-python3=True python-lazy-object-proxy-1.2.1.tar.gz

ubuntu の場合は python2 は pip2 、python3 は pip3 というコマンドが入るので、python3 向けパッケージだけ作りたい場合は pip3 install と、明示的に実行すればよさそう。

deb_dist というディレクトリが作られる。中身は Ubuntu パッケージが出来上がってますね。3 つのファイルが Ubuntu パッケージです。

% ls -1 deb_dist
lazy-object-proxy-1.2.1
lazy-object-proxy_1.2.1-1.debian.tar.gz    ←これ
lazy-object-proxy_1.2.1-1.dsc              ←これ
lazy-object-proxy_1.2.1-1_source.changes
lazy-object-proxy_1.2.1.orig.tar.gz        ←これ

これを用いて deb ファイルを作ります。

% cd lazy-object-proxy-1.2.1
% debuild -us -uc

なお事前に dch をやっておくと、Changelog を編集できます。hogehoge はパッケージ名に反映されます。

dch --local hogehoge

debuild を実行します。怒られました。

% debuild -us -uc                      
dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package astroid
dpkg-buildpackage: source version 1.3.8-1
dpkg-buildpackage: source distribution unstable
dpkg-buildpackage: source changed by Logilab <pylint-dev@lists.logilab.org>
dpkg-source --before-build astroid-1.3.8
dpkg-buildpackage: host architecture amd64
dpkg-source: info: using options from astroid-1.3.8/debian/source/options: --extend-diff-ignore=\.egg-info$
dpkg-checkbuilddeps: Unmet build dependencies: python3-all
dpkg-buildpackage: warning: build dependencies/conflicts unsatisfied; aborting
dpkg-buildpackage: warning: (Use -d flag to override.)
debuild: fatal error at line 1364:
dpkg-buildpackage -rfakeroot -D -us -uc failed

python3-all なんて知らねえよと言ってます。

Ubuntu パッケージで python3-all をインストールしてない場合は怒られます。python3 しかインストールしてないので、control を書き換えます。

変更前

Build-Depends: python-setuptools (>= 0.6b3), python3-setuptools, python-all (>= 2.6.6-3), python3-all, debhelper (>= 7)

変更後

Build-Depends: python-setuptools (>= 0.6b3), python3-setuptools, python (>= 2.6.6-3), python3, debhelper (>= 7)

再度実行

% debuild -us -uc

deb が出来上がりました。

% cd ..
% ls -1
astroid-1.3.8
astroid_1.3.8-1.debian.tar.gz
astroid_1.3.8-1.dsc
astroid_1.3.8-1_amd64.build
astroid_1.3.8-1_amd64.changes
astroid_1.3.8-1_source.changes
astroid_1.3.8.orig.tar.gz
python-astroid_1.3.8-1_all.deb
python3-astroid_1.3.8-1_all.deb  ←これ