我使用 dh_make 和 dpkg-buildpackage 从我自己的源构建一个包。/debian 中的安装文件指定了项目文件的目标。要使安装的程序正常工作,它们需要可执行/具有 chmod 的执行权限。具体来说,它涉及一个 python 脚本和一个 .desktop 文件。
我如何在设置中设置这些权限?仅将它们复制到目的地是行不通的。如果我可以在设置结束时触发命令或类似的东西,那就没问题了,但不知道如何包含它。
答案1
您可以创建一个安装后脚本:
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
执行任何有用的操作。还请注意,在第一个选项中,前面有一个斜杠/path/to/pythonscript.py 因为它是绝对路径,而第二个选项是相对于 debian 子目录的。
编辑:@AlexisWilke 提到了选项 2 的更好的替代方案,即:
%:
dh $@ --with python2
override_dh_fixperms:
dh_fixperms
chmod 755 path/to/pythonscript.py
这可以dh_fixperms
发挥其魔力,然后进行必要的小修复。
答案2
.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
变量,负责访问文件时的执行。