- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想做的是为 Python3 应用程序创建一个 Debian 包,并让该包安装相关的 systemd 服务,并在包被删除或更新时删除/更新它。
我有一个 Python3 程序,我想将其捆绑到 Ubuntu 18.04 上的 Debian 软件包中。我已经能够使用 setup.py
成功地做到这一点和 py2dsc
stdeb3
附带的程序.
$ python setup.py sdist
$ py2dsc dist/mypackage-0.0.1.tar.gz
$ (cd deb_dist/mypackage-0.0.1/ && dpkg-buildpackage -rfakeroot -uc -us)
除了奇怪的 py2dsc
之外,这会创建一个可安装的 .deb。依赖于 Python 3.6,即使我使用的是 3.8,它也运行良好。
py2dsc
创建一个 debian staging 树,包括 debian/rules
与:
#!/usr/bin/make -f
export PYBUILD_NAME=mypackage
%:
dh $@ --with python3 --buildsystem=pybuild
接下来我想让这个包安装一个将运行 Python3 程序的 systemd 服务单元。 我认为服务文件需要调用 python3-mypackage.service
匹配<package-name>.service
,因为 py2dsc
前置python3-
到包名。
我做了一些研究并发现,而不是破解 pre
/postinst
脚本,dh
命令 debian/rules
应该有 --with systemd
添加了选项,我需要 dh-systemd
安装在我的 Ubuntu 18.04 系统上。为此,我在运行 py2dsc
后暂停, 将相关条目添加到 debian/rules
, 然后运行 dpkg-buildpackage
.
由于我不明白的原因,没有提到dh-systemd
在 dpkg-buildpackage
的输出中:
...
dh_installdocs -O--buildsystem=pybuild
dh_installchangelogs -O--buildsystem=pybuild
dh_python3 -O--buildsystem=pybuild
dh_perl -O--buildsystem=pybuild
dh_link -O--buildsystem=pybuild
dh_strip_nondeterminism -O--buildsystem=pybuild
dh_compress -O--buildsystem=pybuild
dh_fixperms -O--buildsystem=pybuild
dh_missing -O--buildsystem=pybuild
dh_installdeb -O--buildsystem=pybuild
dh_gencontrol -O--buildsystem=pybuild
dh_md5sums -O--buildsystem=pybuild
dh_builddeb -O--buildsystem=pybuild
...
我四处搜索,虽然我可以找到人们构建 python 包的示例,以及人们使用 systemd Units 构建包的示例,但我无法找到有人打包 python 项目和相关 systemd Unit 的示例,所以我不确定从这里去哪里。我想知道是否使用 pybuild
与 --with systemd
的使用冲突?
最佳答案
如果您打算使用 dpkg-buildpackage,您应该根据 python packaging documentation 创建 debian/目录和所有文件。 .这将创建一个完全符合政策的 Debian 软件包。 stdeb 软件包只提供了一种创建 Debian 软件包的快速而肮脏的方法。如果您打算在 Debian 存储库中发布此软件包,使用 stdeb 会适得其反。
使用此方法,you can use the dh_systemd helper , 并使用 debcompat >= 10 自动激活它。服务文件必须是 Debian 目录中的 packagename.service。
关于debian-packaging - 我如何使用 stdeb3/py2dsc 和 dpkg-buildpackage 将 python 应用程序与 systemd 单元打包在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64345965/
$ sudo apt-get -f install Reading package lists... Done Building dependency tree Reading state
删除更新: cd/var/lib/dpkg/updates 须藤 rm * 尝试更新和升级: sudo apt 更新 sudo apt升级 它仍然说: E: 无法获得锁/var/lib/dpkg/lo
我正在尝试安装 .deb 文件...例如: 例子.deb。 但是该程序已经安装在 Debian 最小服务器上的旧版本中。 这样做dpkg -i example.deb正在创建一个对话框,如果我想保留配
我正在尝试安装 .deb 文件...例如: 例子.deb。 但是该程序已经安装在 Debian 最小服务器上的旧版本中。 这样做dpkg -i example.deb正在创建一个对话框,如果我想保留配
dpkg-buildflags 提到可用于配置的/etc/dpkg/buildflags.conf 文件 dpkg-buildpackage .我找不到文件应该是什么样子的任何示例。例如,我怎样才能让
今天我在我的wsl系统上卸载了bash(因为我想变得很有趣)。但我认为 bash 引用了 apt和 dpkg .所以在我运行命令 sudo apt remove bash 之后一切都消失了。 这不是一
有些东西肯定是困惑的,它与 dpkg 有关。不知道是什么原因造成的。以下是症状: 命令 sudo apt upgrade , sudo apt install , sudo apt remove 和
我能够在亚马逊上的 openssl 更新之前安装 webmin,但我不得不卸载它。然后,当我收到来自亚马逊的电子邮件时,我得到了 openssl 更新。今天,我正在尝试再次安装 webmin: sud
lintian在什么情况下会抛出错误unknown-control-file ?正在创建包时没有警告,但 lintian 发出警告和错误 empty-binary-package 我的目录结构是 de
我编写了一个小型 CDN 服务器,当新的 pool-content-packages 安装到注册表池中时,它会重建其注册表池。 我不想让每个pool-content-package调用cdn-serv
当尝试通过 apt-get 安装某些东西或使用 dpkg -i 安装 deb 文件时,进程卡在读取数据库中。输出的最后几行如下所示: Extracting templates from package
我正在尝试创建一个 Debain .deb 包。包已成功创建,但在尝试安装时出现以下错误: unable to open file '/var/lib/dpkg/tmp.ci//opt': Is a
试图在 Ubuntu 9.10 上从源代码构建 php 以启用 GD2,但是当我运行 dpkg-buildpackage 时,它只是退出给我这个错误: QUILT_PATCHES=debian/p
没有直接安装 .deb 包的模块。当您必须将 dpkg 作为命令运行时,它总是将安装任务标记为已更改的任务。我在正确配置它时遇到了一些麻烦,所以我在这里作为公共(public)笔记本发布。 这是使用
我正在使用 Ubuntu 16.04。 当我更新时,我收到以下消息 $ sudo apt-get update .... E: dpkg was interrupted, you must manua
我正在使用Ubuntu 16.04-64位。我试图用.deb文件安装Start UML,并从Ubuntu Software获得此消息: This software comes from a 3rd p
我想安装一些 deb 包 dpkg -i modeller_9.13-1_amd64.deb 由一些python模块组成。我应该向 dpkg 提供什么片段以在安装期间设置安装路径而不是默认目录(默认为
我目前正在运行 Ubuntu 12.04。我创建了一个 debian 包,目前安装成功并启动了三个新进程。我还通过将以下脚本放在/etc/init.d 中,使这三个进程在运行时启动: # This e
我正在运行带有内核 3.13 的 ubuntu 14.04 我正在关注 eudyptula 挑战,该挑战要求我从 linus 的 git 下载内核源代码并构建、安装,我这样做了,现在我有两个内核,3.
我正在尝试进行一些包操作(a la dpkg),虽然我只能 popen 或 subprocess.call 我宁愿用 python 方式做事如果可能的话。 不幸的是,我一直无法找到一个 python
我是一名优秀的程序员,十分优秀!