Как добавить разрешения для файлов, установленных dpkg-buildpackage или debuild

Я собираю пакет из собственного источника, используя dh_make и dpkg-buildpackage. Файл установки в / debian указывает места назначения для файлов проекта. Чтобы заставить установленную программу работать, они должны быть исполняемыми / иметь права на выполнение с помощью chmod. В частности, речь идет о скрипте Python и файле .desktop.

Как установить эти разрешения в настройке? Только копируя их по назначению, это не делается. Было бы хорошо, если бы я мог запустить команду в конце установки или что-то в этом роде, но не знаю, как это включить.

2
задан 15 March 2014 в 02:04

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, которая заботится выполнения при доступе к файлу.

0
ответ дан 15 March 2014 в 02:04

Вы можете создать сценарий после установки:

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 применить свое волшебство, сопровождаемое незначительным необходимым исправлением.

0
ответ дан 15 March 2014 в 02:04

Другие вопросы по тегам:

Похожие вопросы: