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

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

我使用 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变量,负责访问文件时的执行。

相关内容