1

このリンクから adblockplus をビルドしようとしています。コマンドを発行すると:

python build.py build

次のエラーメッセージが表示されます。sudo の有無にかかわらず試してみましたが、役に立ちませんでした。

    Traceback (most recent call last):
  File "build.py", line 10, in <module>
    buildtools.build.processArgs('.', sys.argv)
  File "/home/machine/projects/weird/buildtools/build.py", line 352, in processArgs
    commands[command](baseDir, scriptName, opts, args, type)
  File "/home/machine/projects/weird/buildtools/build.py", line 39, in __call__
    return self._handler(baseDir, scriptName, opts, args, type)
  File "/home/machine/projects/weird/buildtools/build.py", line 166, in runBuild
    limitMetadata=limitMetadata)
  File "/home/machine/projects/weird/buildtools/packager.py", line 274, in createBuild
    buildNum = getBuildNum(baseDir)
  File "/home/machine/projects/weird/buildtools/packager.py", line 80, in getBuildNum
    (result, dummy) = subprocess.Popen(['hg', 'id', '-n'], stdout=subprocess.PIPE).communicate()
  File "/usr/lib/python2.6/subprocess.py", line 623, in __init__
    errread, errwrite)
  File "/usr/lib/python2.6/subprocess.py", line 1141, in _execute_child
    raise child_exception
OSError: [Errno 2] No such file or directory

パッケージがありませんか?問題が何であるかについてのヒントは大歓迎です。

4

1 に答える 1

4

スタック トレースにより、問題が次の行によって引き起こされていることが明らかになります。

(result, dummy) = subprocess.Popen(['hg', 'id', '-n'], stdout=subprocess.PIPE).communicate()

subprocessパッケージのドキュメントを見ると、この行はhg id -nコマンドを実行しようとしています (数値の Mercurial リビジョンを取得します)。どうやら、Mercurial コマンド ライン ツールがシステムに存在しないため (このビルド スクリプトが考慮していなかった可能性があります)、失敗します。

免責事項: このスクリプトを書いたのは私であり、このバグを修正しました。Mercurial はビルドに必須ではありません。リビジョン番号は、出力ファイル名を決定するために必要なだけです。

于 2012-06-08T13:19:09.820 に答える