debian - 使用 pybuild 在非标准目录中为 Debian 打包 Python 库
问题描述
我想创建一个 Debian 软件包以在我的公司中使用。此类自定义包的默认策略是将它们安装在非标准目录中,即不在/usr
.
我尝试尽可能多地使用 Debian 工具,但我找不到一种方法来告诉pybuild
我将我的包安装在/opt/python-mypackage/mypackageversion
.
这是实际rules
文件:
#!/usr/bin/make -f
DH_VERBOSE = 1
export PYBUILD_NAME = mypackage-0.8.2
export PYBUILD_INSTALL_ARGS=--prefix=/opt/python-mypackage/0.8.2 --install-layout=deb
%:
dh $@ --with python2,python3 --buildsystem=pybuild
打包过程的日志显示文件安装在/usr
:
(...)
running install_scripts
Installing mypackage script to /<<PKGBUILDDIR>>/debian/python-mypackage/usr/bin
I: pybuild base:170: /usr/bin/python3 setup.py install --root /<<PKGBUILDDIR>>/debian/python3-mypackage --prefix=/opt/python-mypackage/0.8.2 --install-layout=deb
running install
running build
running build_py
running install_lib
creating /<<PKGBUILDDIR>>/debian/python3-mypackage
creating /<<PKGBUILDDIR>>/debian/python3-mypackage/usr
creating /<<PKGBUILDDIR>>/debian/python3-mypackage/usr/lib
creating /<<PKGBUILDDIR>>/debian/python3-mypackage/usr/lib/python3.4
creating /<<PKGBUILDDIR>>/debian/python3-mypackage/usr/lib/python3.4/dist-packages
copying /<<PKGBUILDDIR>>/.pybuild/pythonX.Y_3.4/build/mypackage.py -> /<<PKGBUILDDIR>>/debian/python3-mypackage/usr/lib/python3.4/dist-packages
byte-compiling /<<PKGBUILDDIR>>/debian/python3-mypackage/usr/lib/python3.4/dist-packages/mypackage.py to mypackage.cpython-34.pyc
(...)
关于如何根据pybuild
我的需要进行调整的任何想法(除了不使用pybuild
)?
解决方案
我找到的唯一解决方案是覆盖dh_install
目标,从而产生以下rules
文件:
#!/usr/bin/make -f
#DH_VERBOSE = 1
export PYBUILD_NAME = mypackage-0.8.2
MYPACKAGE_DIR = /opt/python-mypackage/0.8.2
%:
dh $@ --with python2,python3 --buildsystem=pybuild
override_dh_install:
dh_install
mkdir -p $(CURDIR)/debian/python-mypackage-0.8.2$(MYPACKAGE_DIR)
mv $(CURDIR)/debian/python-mypackage-0.8.2/usr/* $(CURDIR)/debian/python-mypackage-0.8.2$(MYPACKAGE_DIR)
rmdir $(CURDIR)/debian/python-mypackage-0.8.2/usr
mkdir -p $(CURDIR)/debian/python3-mypackage-0.8.2$(MYPACKAGE_DIR)
mv $(CURDIR)/debian/python3-mypackage-0.8.2/usr/* $(CURDIR)/debian/python3-mypackage-0.8.2$(MYPACKAGE_DIR)
rmdir $(CURDIR)/debian/python3-mypackage-0.8.2/usr
推荐阅读
- sublimetext3 - 在 Sublime Text 中删除直到空白
- c# - Visual Code 仍然运行旧项目并且不运行新项目
- javascript - 无法删除事件监听器
- c# - 让多节车厢的火车在贝塞尔路径上行驶
- algorithm - 算法可以是一条指令吗?
- html - 阻止网络刮刀在 R 中显示 404 错误
- android - 如何通过 Xamarin 表单中的依赖服务更新视图模型?
- azure-keyvault - 尝试将自定义角色“秘密读者”分配给 Azure Key Vault 的对象 ID 时出错
- javascript - javascript 如何在不影响键的情况下将对象推入数组?
- php - APT 说“软件包没有安装候选者”虽然它显示在 apt 列表中