3

我在本地 archlinux 机器上安装了 p4 库,一切运行顺利。我现在试图在几个虚拟机上做同样的事情(同样的操作系统也是 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,我找不到任何其他应该有用的库。

任何想法?

编辑:显然唯一的区别是P4 P4API.so的错误安装在“ldd”输出中缺少librt(并且librt实​​际上在那里)。不确定它与 TLS 问题有何关系,并尝试重新安装 glibc 然后 p4python 但仍然没有运气..

4

1 回答 1

1

针对“rt”和“ssl”库重建 P4Python 可以解决此问题。

  1. 从 perforce 站点上取下 P4 API(例如,对于 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.cfg以指向 P4API 目录
  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 回答