Como adicionar permissões aos arquivos instalados pelo dpkg-buildpackage ou debuild

2

Eu construo um pacote da minha própria fonte usando dh_make e dpkg-buildpackage. O arquivo de instalação em / debian especifica os destinos dos arquivos de projeto. Para fazer o programa instalado funcionar, eles precisam ser executáveis / ter permissões de execução com chmod. Em particular, é sobre um script python e um arquivo .desktop.

Como defino essas permissões na configuração? Apenas copiando-os para seus destinos, isso não é feito. Seria bom para mim se eu pudesse acionar um comando no final da instalação, ou algo assim, mas não sei como incluir isso.

    
por user2366975 20.09.2013 / 00:37

2 respostas

2

O arquivo .desktop não precisa de permissões de execução, seu script .py faz.

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

Você deve antes de empacotar o bit executável no script python, que o dpkg irá cuidar do resto.

O arquivo .desktop é um arquivo de configuração lido pelo xdg e possui variáveis próprias configuradas para executar o binário necessário:

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;

Como você verá, ele tem uma variável Exec que cuida da execução quando o arquivo é acessado.

    
por Braiam 20.09.2013 / 00:52
4

Você pode criar um script de pós-instalação:

gedit debian/packagename.postinst

Este é apenas um script normal, portanto, as instruções a seguir serão:

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

Como alternativa, você pode excluir o arquivo de ter suas permissões alteradas por dh_fixperms . Isso pode ser feito em debian/rules :

%:
    dh  $@ --with python2

override_dh_fixperms:
    dh_fixperms --exclude path/to/pythonscript.py

A primeira opção é preferível porque dh_fixperms faz outras coisas úteis, como alterar o proprietário de um arquivo, e excluir o arquivo evita dh_fixperms fazer algo útil. Observe também que na primeira opção, há uma barra anterior / b / path / to / pythonscript.py, pois é um caminho absoluto, enquanto a segunda opção é relativa ao subdiretório debian.

EDIT: @AlexisWilke mencionou uma alternativa melhor para a opção 2, ou seja:

%:
    dh  $@ --with python2

override_dh_fixperms:
    dh_fixperms
    chmod 755 path/to/pythonscript.py

Isso permite que dh_fixperms trabalhe sua mágica, seguida pela menor correção necessária.

    
por Charlie 09.10.2014 / 07:48