28

サーバー用にdebパッケージをコンパイルしようとしています。ビルドに行くと、dh_usrlocalビルドが停止してmakeがエラーを返すまで、すべてが正常に見えます。問題は、私がこれを初めて試していることであり、問​​題をどこで探すべきか本当にわかりません。

これは私の端末からの出力です。出力の下部に実行したコマンドも含めました。

make[2]: Leaving directory `/home/ian/Desktop/scst-2.1.0/src'
make[1]: Leaving directory `/home/ian/Desktop/scst-2.1.0'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_installexamples
   dh_installman
   dh_installcatalogs
   dh_installcron
   dh_installdebconf
   dh_installemacsen
   dh_installifupdown
   dh_installinfo
   dh_pysupport
   dh_installinit
   dh_installmenu
   dh_installmime
   dh_installmodules
   dh_installlogcheck
   dh_installlogrotate
   dh_installpam
   dh_installppp
   dh_installudev
   dh_installwm
   dh_installxfonts
   dh_bugfiles
   dh_lintian
   dh_gconf
   dh_icons
   dh_perl
   dh_usrlocal
dh_usrlocal: debian/scst/usr/local/include/scst/scst.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_user.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/Module.symvers is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_debug.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_const.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_sgv.h is not a directory
rmdir: failed to remove `debian/scst/usr/local/include/scst': Directory not empty
dh_usrlocal: rmdir debian/scst/usr/local/include/scst returned exit code 1
make: *** [binary] Error 1
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
ian@vm01:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot

どんな助けでもいただければ幸いです。

4

3 に答える 3

33

dh_usrlocalの実行をスキップする必要があります。これを行うには、これをdebian/rulesファイルに追加するだけです。override_dh_usrlocal:

一般的に、特定のターゲットに問題がある場合は、debian/rulesファイルにoverride_{target}を追加してオーバーライドするだけです。
たとえば、dh_iconsに問題があります。これをdebian/rulesファイルに追加するだけです。

override_dh_icons:
    {insert your processing commands or do nothing to skip it when building package}
于 2012-08-21T13:18:17.090 に答える
5

適切なDebianパッケージは、そこに空のディレクトリを生成することは許可されていません。そのため、ディレクトリを削除できないと不平を言っています。それはファイルがそこにあることを期待していません。あなたが持つことができる唯一のものは/usr/ localのディレクトリであり、それはdh_usrlocalが処理しようとするものですが、あなたはファイルを持つべきではありません

ユーザーはファイルを/usr/local/にのみ配置します。

また、ディレクトリパスにusr / local名がある場合は、正しいusr / localでなくても、同様にエラーが発生すると思います。問題を引き起こす可能性のあるものの例もあります。ビルドソフトウェアの正規表現はusr/localを探すと思います。

/var/tmp/usr/local/

私はこれが古い投稿であることを知っていますが、それはグーグルで第1位にランクされているので、人々がこの問題を素早く解決するために良い答えが必要です。

于 2016-04-08T20:54:38.637 に答える
3

重要:このエラーは、にインストールしようとした場合にのみ発生します/usr/local/

インストールするパッケージをからに移動し/usr/local/lib/python3/dist-packages/まし/usr/lib/python3/dist-packagesたが、エラーは消えました。dh_usrlocalが壊れているか、パッケージが期待するルールに準拠していないようです。


debianパッケージにファイルを追加した後、エラーが発生し始めたpackage.installので、パッケージの内容がファイルシステムにコピーされます。(当時はにインストールして/usr/local/いました)

失敗したときのインストールファイルの内容:

usr/* usr/

正しく動作する場合の内容:

usr/ usr/

debianパッケージのファイル構造:

packagename-0.1/
  debian/
  usr/
    local/
      lib/
        python3/
          packagename/

編集: これは、ルートディレクトリをコピーする場合にのみ機能するようです。usr /を超えてコピーするように指定しようとすると、同じエラーで壊れます。私の解決策を見つけるために答えの上部を参照してください。

于 2013-09-13T18:14:17.517 に答える