.deb
シンボリックリンクを作成する postinst スクリプトを含む Debian パッケージがあります。パッケージをインストールしようとすると--root
(パッケージをインストールする場所を変更したいため)、次のエラーが発生します。
dpkg (subprocess): unable to execute installed post-installation script: No such file or directory
subprocess installed post-installation script returned error exit status 2
dpkg
は、 postinst スクリプトを で検索しようとしています/var/lib/dpkg/info
。 理解できないのは、dpkg
マニュアル ページによると、--root
オプションを使用すると も に変更されるというadmindir
ことです。newdir/var/lib/dpkg
では、なぜ postinst スクリプトを で検索しようとしているのでしょうか/var/lib/dpkg/info/
。
このメンテナー スクリプトを含まない別のパッケージを作成し、同じ-i --root=newdir
オプションを使用してインストールしてみましたが、エラーは発生しませんでした。
どうすればこれが機能するか教えてください。
答え1
dpkg
postinstスクリプトが見つかりました/your/root/var/lib/dpkg/info
— 実行しようとしました。問題はローダーが見つかりません: dpkg
postinst スクリプトが見つかりますが、スクリプトのインタープリタ プログラムが存在しない (たとえば、Python スクリプトでpython-minimal
インストールされていない) ため、実行しようとすると「そのようなファイルまたはディレクトリはありません」というエラーが発生します。別の instdir を使用する場合、インタープリタは instdir の下に存在する必要があります (dpkg はパッケージ スクリプトを実行する前に instdir に chroot します)。
インタープリターが のタグが付いたパッケージによって提供されていない場合はEssential
、パッケージがインタープリターを提供するパッケージに依存していることを確認してください。