制作Python的.deb软件包

这是一份备忘录。

操作步骤

    1. 创建requirements.txt文件

 

    1. 使用requirements文件获取依赖关系的whl文件

 

    1. 创建setup.py文件

 

    1. 创建whl文件

 

    1. 准备用于创建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包后进行清理,但暂时先做个备忘录。