3

ローカルの archlinux マシンに p4 ライブラリをインストールすると、すべてがスムーズに動作します。私は今、いくつかの仮想マシン(同じOSも64ビット)で同じことをしようとしていましたが、実行できません...

インストールはうまくいき、文句はありませんが、インポートしようとすると次のようになります。

Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "P4.py", line 312, in <module>
    import P4API
ImportError: /usr/lib/python2.7/site-packages/P4API.so: undefined symbol: TLSv1_method

nm -A /usr/lib/python2.7/site-packages/P4API.so でシンボルを調べると

実際、SSL関連のシンボルはすべて未定義であることがわかります(動作中のシンボルで定義されていますが)が、一体なぜでしょうか? openssl がインストールされており、Python もまったく同じ方法でインストールされています。役に立つはずの他のライブラリが見つかりません。

何か案が?

EDIT:明らかに唯一の違いは、P4 P4API.soの間違ったインストールでは、「ldd」出力からlibrtが欠落していることです(実際にはlibrtがあります)。それが TLS の問題とどのように関連するかは不明で、glibc を再インストールしてから p4python を再インストールしようとしていますが、まだうまくいきません..

4

1 に答える 1

1

「rt」および「ssl」ライブラリに対して P4Python を再構築すると、これが修正されます。

  1. P4 API を perforce サイトから取得します (たとえば、Linux の場合は、http: //filehost.perforce.com/perforce/r13.2/bin.linux26x86_64/p4api.tgzを取得します) 。
  2. P4Python のソース コードをhttp://public.perforce.com/guest/robert_cowham/perforce/API/python/main/p4python.zipから取得します。
  3. tar xfP4 API アーカイブ
  4. p4pthon アーカイブを解凍します
  5. setup.cfgP4API ディレクトリを指すように編集します。
  6. 編集setup.pyして120行目に行き、「ssl」と「rt」を追加すると、次のようになります

    else: # Assume Linux
        libraries = ["client", "rpc", "supp", "ssl", "rt"]    # P4API libs
        extra_compile_args = ["-DOS_LINUX", "-D%s" % p4_api_ver]
    
  7. 行うsudo python setup.py install

于 2013-07-16T09:15:37.843 に答える