制作Python的.deb软件包
这是一份备忘录。
操作步骤
-
- 创建requirements.txt文件
-
- 使用requirements文件获取依赖关系的whl文件
-
- 创建setup.py文件
-
- 创建whl文件
-
- 准备用于创建deb的文件
- 创建deb包
创建 requirements.txt
-
- 依存関係にあるpipパッケージを記載する
- 要求するバージョンも記載する
coloredlogs>=9.0
websocket-client==1.1.0
获取requirements中依赖关系的whl文件。
-
- 以下のコマンドで依存関係のwhlファイルを取得する
wheelhose/配下にダウンロードされる
python3 -m pip wheel -r requirements.txt -w wheelhouse --no-build-isolation
创建setup.py文件
-
- whlを作るためのsetup.pyを作る
package_dir配下のpy_modulesのファイルをパッケージに含める
この場合/src/test.pyがパッケージに含まれる
pkg_name = 'test-tools'
version = '0.0.1'
install_requires = [
'coloredlogs>=9.0',
'websocket-client',
]
setup(
name=pkg_name,
version=version,
author="user",
author_email="user@test.com",
description="test tools package",
url='https://github.com/hogehoge/test-tools',
py_modules=["test"],
package_dir={'': 'src'},
install_requires=install_requires,
)
创建一个whl文件
-
- 以下のコマンドでwhlを作る
/dist/test-tools-0.0.1-py3-none-any.whlな感じにできる
python3 setup.py bdist_wheel
准备用于创建deb文件的文件。
需要的三个东西是:
– dev.json
– debian/postinst
– debian/prerm
{
"name": "test-tools",
"maintainer": "user <user@test.com>",
"description": "test-tools",
"changelog-cmd": "git log --pretty='format:%cd %h %s %d [%an]' --date=iso --merges",
"homepage": "https://github.com/hogehoge/test-tools",
"files": [
{
"from": "dist/test_tools-*.whl",
"to": "/tmp",
"base": "build/",
"fperm": "0644"
}
],
"postinst-file": "debian/postinst",
"prerm-file": "debian/prerm",
"copyrights": [
{
"files": "*",
"copyright": "Copyright (c) 2022, hogehoge, Inc. All rights reserved.",
"license": "",
"file": ""
}
]
}
#!/bin/bash -e
pip3 install /tmp/test_tools-*.whl
#!/bin/bash -e
pip3 uninstall -y test_tools
创建一个.deb软件包
- 以下のコマンドでdebパッケージが作られる
go-bin-deb generate --arch amd64 --version 0.0.1 --file ./deb.json --wd pkg-build
因为会产生大量中间文件,所以我认为最好使用makefile一次性处理,并在生成deb包后进行清理,但暂时先做个备忘录。