标签: debhelper

为分发Python程序创建debian包的标准方法?

有很多关于如何做到这一点的信息,但由于"有一种方法可以给猫皮肤",所以涵盖一些过程的所有教程/手册似乎都做出了与其他不同的某些假设.教程,我仍然无法掌握它.

到目前为止,这是我认为我理解的.

  1. 我的最终目标应该是创建一个"二进制".deb包.这样的包将是平台独立的(32/64位),因为所有的python程序都是这样的.
  2. 要创建"二进制"包,我首先需要创建一个源包.
  3. 要创建源包,我可以使用CDBSdebhelper.Debhelper是初学者的推荐方式.
  4. 创建源包的核心是在源目录中填充DEBIAN目录,其中包含许多文件,说明文件需要复制的位置,它们受到的版权和许可方案,它们具有哪些依赖关系等等......
  5. 如果 python源还附带了distutils 脚本,那么步骤#4可以在很大程度上自动化DEBIAN命令.dh_make

现在我的问题:

  1. 我对这个过程的理解是否正确?我有什么遗失,或者我错了什么?
  2. 第五步真的让我感到困惑:特别是对我来说最难以理解的两点是:
    • 如何编写setup.py安装独立程序的脚本? 编辑:通过独立程序我的意思是一个程序供桌面用户使用(而不是我理解的模块,就像导入后其他软件使用的功能集合).在我的具体情况下,我实际上需要两个这样的"程序":主软件和一个单独的实用程序(实际上是第二个"程序",应该与另一个程序包在同一个程序包中).
    • DEB包的这种脚本有什么特点?官方文档似乎只涉及RPM和Windows的东西......

顺便说一句:这些是迄今为止我能找到的最好的信息来源.如果你有什么比这更好的,请分享!:)

python debian packaging distutils debhelper

71
推荐指数
4
解决办法
3万
查看次数

dpkg:如何使用触发器?

我写了一个小的cdn服务器,如果在池中安装了新的东西(pool-content-packages),它将重建他的池注册表.

相反,每个pool-content-package都调用cdn-server的init.d,我想使用触发器.安装所有软件包后,在安装运行结束时只重启服务器一次.

我有什么办法在debhelper支持的包中使用触发器?

debian triggers dpkg debhelper

15
推荐指数
1
解决办法
6004
查看次数

debian规则文件制作符号链接

我正在创建一个小的deb包来安装一些文件.其中一些将位于/ usr/lib/mypackage /中,我想从/ usr/lib/mypackage/mybin创建一个符号链接到/ usr/bin/mybin

对于/ usr/lib/mypackage文件夹,我正在使用mypackage.install并将文件复制到那里.这似乎工作正常.

但是,为了创建我的符号链接,我知道我需要在那里使用debian规则文件,我不知道如何继续,这里是我需要添加的行,它应该添加到哪里以及如何添加?谢谢

ln -s /usr/lib/mypackage/mybin /usr/bin/mybin
Run Code Online (Sandbox Code Playgroud)

debian deb debhelper

14
推荐指数
1
解决办法
1万
查看次数

为debian打包python程序简单直接的方法?

我在浏览python和debian的分发工具迷宫时遇到了麻烦; cdbs,debhelper,python-support,python-central,等等等等..

我的应用程序是一个相当简单的 - 一个python包(包含模块和a的目录__init__.py),一个用于运行程序(script.py)的脚本和一些图标(.png)和菜单项(.desktop文件).

从这些文件中,如何在不使用上面列出的无意义工具的情况下从头构建一个简单,干净的.deb文件?

我主要针对的是ubuntu,但是如果这个软件包直接用于debian,我会很喜欢

python debian deb cdbs debhelper

7
推荐指数
2
解决办法
1433
查看次数

在构建python deb包时遇到问题,抱怨修改后的二进制文件

我在使用debhelper之前构建了我的包,但是我遇到了一个非常令人沮丧的问题.

这是我的文件树:

usr/
`-- share
    |-- applications
    |   `-- create-launcher.desktop
    `-- create-launcher
        |-- bin
        |   |-- callbacks.py
        |   |-- callbacks.pyc
        |   |-- create_launcher.py
        |   |-- create_launcher.pyc
        |   |-- file_handler.py
        |   |-- file_handler.pyc
        |   |-- make_launcher.py
        |   |-- make_launcher.pyc
        |   |-- message_dialog.py
        |   |-- message_dialog.pyc
        |   `-- session
        |-- data
        |   `-- gui.glade
        |-- images
        |   `-- icon_48x48.png
        `-- README
Run Code Online (Sandbox Code Playgroud)

你可以看到,我有一些python pyc文件是二进制文件和图像二进制文件.我不知道这是不是我的问题,但我已经跑了

dh_make
Run Code Online (Sandbox Code Playgroud)

生成debian目录,我修改了所有必要的文件.

如果我跑:

dh_install
Run Code Online (Sandbox Code Playgroud)

一切都进入正确的debian/create-launcher/usr ...位置.

如果我跑:

debuild -uc -us
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

 dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: source package …
Run Code Online (Sandbox Code Playgroud)

python dpkg package deb debhelper

7
推荐指数
1
解决办法
5359
查看次数

package.init没有安装

我有一个project.init在debian目录文件(连同rules,control等等),我有dh_installinit我的rules文件(在binary-arch规则).

dpkg-buildpackage完成后,启动脚本已被复制到debian/project/etc/init.d/project,并已经创造了各种预/后脚本.

但是,当我实际安装.deb(with dpkg -i)时,init.d脚本没有安装,因此我必须缺少此过程的一部分." 新维护者指南 "在init.d详细信息上相当稀疏(它基本上表示不使用它们,因为它们太先进了).

dh_installinit命令的详细输出是:

dh_installinit
    install -p -m755 debian/project.init debian/project/etc/init.d/project
    echo "# Automatically added by dh_installinit">> debian/project.postinst.debhelper
    sed "s/#SCRIPT#/project/;s/#INITPARMS#/defaults/;s/#ERROR_HANDLER#/exit \$?/" /usr/share/debhelper/autoscripts/postinst-init >> debian/project.postinst.debhelper
    echo '# End automatically added section' >> debian/project.postinst.debhelper
    echo "# Automatically added by dh_installinit">> debian/project.prerm.debhelper
    sed "s/#SCRIPT#/project/;s/#INITPARMS#/defaults/;s/#ERROR_HANDLER#/exit \$?/" /usr/share/debhelper/autoscripts/prerm-init >> debian/project.prerm.debhelper
    echo '# End automatically added section' >> debian/project.prerm.debhelper
    echo "# Automatically added by dh_installinit">> debian/project.postrm.debhelper …
Run Code Online (Sandbox Code Playgroud)

debian packaging dpkg deb debhelper

6
推荐指数
2
解决办法
9044
查看次数

Debian打包:将文件部署到用户主目录

我使用Debhelper创建Debian包.要部署文件和目录,我使用debian/installdebian/dirs文件.

现在我希望我的包将默认用户配置文件部署到$ HOME/.mypackagerc(就像.bashrc和朋友一样).

Debhelper是否提供了这样做的方法,或者我应该:

  • 在postinst脚本中执行此操作
  • 或者甚至在我的程序中执行此操作,首次执行

debian packaging software-packaging debian-based debhelper

6
推荐指数
1
解决办法
1919
查看次数

如何使用 CPackDeb 创建自启动 C++ systemd 服务?

我是 Debian 打包的新手,我相信这是一个相当基本的问题,但我很尴尬地说我已经在 Google 上被淘汰了。

我有一个 C++ 项目,它使用 CMake 构建并使用 CPack 打包一个 debian。这个项目有一个服务组件(systemd 风格)。我的目标是在安装包时启用和自动启动服务。

我的研究产生了两种方法:

1)systemctl在 Debian 的 {pre,post}{inst,rm} 脚本中运行各种命令。需要小心正确处理安装、删除和升级方案。

2) 只需将其project.service放在debian目录中,让debhelper(使用dh_systemd_enable)处理服务安装并“自动”启动。

选项 #2 显然是首选,因为 {pre,post}{inst,rm} 是非常手动的,因此容易出错,但我不知道是否有一种受支持的方法可以debhelper从 CPack 中进行利用。

问题:我想避免在我的项目的 CMake 中重写 debian 打包的东西,因为它已经存在了一段时间并且运行良好。我不清楚CPackDeb和之间的关系(如果有的话)debhelper——CPack 可以利用这些dh_systemd_enable功能还是我必须在 {pre,post}{inst,rm} 脚本中手动管理服务?

c++ cmake cpack systemd debhelper

6
推荐指数
0
解决办法
377
查看次数

在stdeb bdist_deb调用时覆盖或禁用$ {python:Depends}

我试图用stdeb打包我的Python软件:

python setup.py --command-packages=stdeb.command bdist_deb
Run Code Online (Sandbox Code Playgroud)

哪个工作正常.

不幸的是,stdeb将变量添加${python:Depends}debian/control文件中.此占位符由dh_python2from 自动处理,debhelper并由包含多个Python版本的字符串替换,例如:"python2.7, python (>= 2.7.1-0ubuntu2), python (<< 2.8)".

如何摆脱这些自动添加的Python版本或如何覆盖${python:Depends}

注意:实际问题是python依赖性.目标系统为包python2.7提供版本2.7.3,但python仍处于2.6.6.

python debian packaging setup.py debhelper

5
推荐指数
1
解决办法
1565
查看次数

防止创建conffiles

我正在尝试构建一个包含一些/etc不是配置文件的包.conffiles即使我package.conffilesdebian目录中创建一个空,它们也会自动包含在内.

我怎么能停止dh_installdeb这样做?

configuration debian packaging debhelper

4
推荐指数
2
解决办法
1464
查看次数