如何为dpkg-buildpackage或debuild安装的文件添加权限

我使用dh_make和dpkg-buildpackage从我自己的源代码构建了一个包。 / debian中的安装文件指定项目文件的目标。 要使安装的程序正常工作,它们需要具有可执行性/具有chmod的执行权限。 特别是它是关于python脚本和.desktop文件。

如何在设置中设置这些权限? 通过仅将它们复制到目的地,它没有完成。 如果我可以在设置结束时触发命令,或类似的东西,但我不知道如何包含它。

.desktop文件不需要执行权限,您的.py脚本可以。

braiam@bt:~$ ls -l /usr/share/app-install/desktop/deluge.desktop -rw-r--r--. 1 root root 1276 Aug 6 2012 /usr/share/app-install/desktop/deluge.desktop braiam@bt:~$ ls -l /usr/bin/deluge -rwxr-xr-x 1 root root 289 Jan 27 2013 /usr/bin/deluge 

你应该在打包之前在python脚本上设置可执行位,dpkg将负责其余部分。

.desktop文件是由xdg读取的配置文件,并且具有自己设置的变量以执行所需的二进制文件:

 cat /usr/share/app-install/desktop/deluge.desktop [...] GenericName=BitTorrent Client X-GNOME-FullName=Deluge BitTorrent Client Comment=Download and share files over BitTorrent Exec=deluge-gtk %U Icon=deluge Terminal=false Type=Application Categories=Network;FileTransfer;P2P;GTK StartupNotify=true MimeType=application/x-bittorrent;x-scheme-handler/magnet; 

如您所见,它有一个Exec变量,可以在访问文件时处理执行。

您可以创建一个安装后脚本:

 gedit debian/ packagename .postinst 

这只是一个普通的脚本,因此以下说明将会:

 #!/bin/sh set -e chmod 755 /path/to/pythonscript.py exit 0 

或者,您可以排除该文件的权限由dh_fixperms更改。 这可以在debian/rules

 %: dh $@ --with python2 override_dh_fixperms: dh_fixperms --exclude path/to/pythonscript.py 

第一个选项是首选,因为dh_fixperms执行其他有用的操作,如更改文件的所有者,以及排除文件阻止dh_fixperms执行任何有用的操作。 另请注意,在第一个选项中,有一个前面的斜杠/路径/到/ pythonscript.py,因为它是绝对路径,而第二个选项是相对于debian子目录。

编辑:@AlexisWilke提到了选项2的更好的替代方案,即:

 %: dh $@ --with python2 override_dh_fixperms: dh_fixperms chmod 755 path/to/pythonscript.py 

这允许dh_fixperms发挥其魔力,然后进行微小的必要修复。