web-dev-qa-db-ja.com

dpkg-buildpackageまたはdebuildによってインストールされたファイルに許可を追加する方法

Dh_makeとdpkg-buildpackageを使用して、自分のソースからパッケージをビルドします。/debianのインストールファイルは、プロジェクトファイルの宛先を指定します。インストールされたプログラムを機能させるには、実行可能であるか、chmodで実行権限が必要です。特に、pythonスクリプトと.desktop-fileについてです。

セットアップでこれらの権限を設定するにはどうすればよいですか?それらを宛先にコピーするだけでは実行されません。セットアップの最後にコマンドをトリガーできるか、このようなものがあればいいのですが、これを含める方法がわかりません。

2
user2366975

.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変数があります。

2
Braiam

ポストインストールスクリプトを作成できます。

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は絶対パスなので、2番目のオプションはdebianサブディレクトリに相対的です。

編集:@AlexisWilkeは、オプション2のより良い代替案を言及しています:

%:
    dh  $@ --with python2

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

これにより、dh_fixpermsがマジックを実行し、その後に必要なマイナーな修正が可能になります。

4
Charlie