有很多关于如何做到这一点的信息,但由于"有一种方法可以给猫皮肤",所以涵盖一些过程的所有教程/手册似乎都做出了与其他不同的某些假设.教程,我仍然无法掌握它.
到目前为止,这是我认为我理解的.
CDBS
或debhelper
.Debhelper是初学者的推荐方式.DEBIAN
命令.dh_make
现在我的问题:
setup.py
安装独立程序的脚本? 编辑:通过独立程序我的意思是一个程序供桌面用户使用(而不是我理解的模块,就像导入后其他软件使用的功能集合).在我的具体情况下,我实际上需要两个这样的"程序":主软件和一个单独的实用程序(实际上是第二个"程序",应该与另一个程序包在同一个程序包中).顺便说一句:这些是迄今为止我能找到的最好的信息来源.如果你有什么比这更好的,请分享!:)
我写了一个小的cdn服务器,如果在池中安装了新的东西(pool-content-packages),它将重建他的池注册表.
相反,每个pool-content-package都调用cdn-server的init.d,我想使用触发器.安装所有软件包后,在安装运行结束时只重启服务器一次.
我有什么办法在debhelper支持的包中使用触发器?
我正在创建一个小的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) 我在浏览python和debian的分发工具迷宫时遇到了麻烦; cdbs
,debhelper
,python-support
,python-central
,等等等等..
我的应用程序是一个相当简单的 - 一个python包(包含模块和a的目录__init__.py
),一个用于运行程序(script.py
)的脚本和一些图标(.png
)和菜单项(.desktop
文件).
从这些文件中,如何在不使用上面列出的无意义工具的情况下从头构建一个简单,干净的.deb文件?
我主要针对的是ubuntu,但是如果这个软件包直接用于debian,我会很喜欢
我在使用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) 我有一个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) 我使用Debhelper创建Debian包.要部署文件和目录,我使用debian/install
和debian/dirs
文件.
现在我希望我的包将默认用户配置文件部署到$ HOME/.mypackagerc(就像.bashrc和朋友一样).
Debhelper是否提供了这样做的方法,或者我应该:
我是 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} 脚本中手动管理服务?
我试图用stdeb打包我的Python软件:
python setup.py --command-packages=stdeb.command bdist_deb
Run Code Online (Sandbox Code Playgroud)
哪个工作正常.
不幸的是,stdeb将变量添加${python:Depends}
到debian/control文件中.此占位符由dh_python2
from 自动处理,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
.
我正在尝试构建一个包含一些/etc
不是配置文件的包.conffiles
即使我package.conffiles
在debian
目录中创建一个空,它们也会自动包含在内.
我怎么能停止dh_installdeb
这样做?