Я собираю пакет из собственного источника, используя 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
делать что-либо полезно. Также обратите внимание, что в первом варианте есть предшествующий слеш / path / to / pythonscript.py, так как это абсолютный путь, тогда как второй параметр относится к подкаталогу debian.
РЕДАКТИРОВАТЬ: @AlexisWilke упомянул лучшую альтернативу для варианта 2, а именно:
%:
dh $@ --with python2
override_dh_fixperms:
dh_fixperms
chmod 755 path/to/pythonscript.py
Это позволяет dh_fixperms
применить свое волшебство, сопровождаемое незначительным необходимым исправлением.
dh_fixperms
первый, chmod a+x path/to/pythonscript.py
? —, потому что тот путь dh_fixperms делает все правильно согласно debian и затем Вы чините еще несколько вещей Ваш путь. Корректный?
– paxdiablo
16.05.2020, 08:33