【发布时间】:2010-01-31 20:02:11
【问题描述】:
好的,所以我有一个 earlier problem with PIL 仍未解决。其他人遇到了这个问题,并通过removing the old JPEG library 获得了成功。但是,我不能在我的机器上真正做到这一点,因为它是 RHEL,很多东西都依赖于 libjpeg 和 libjpeg-devel(当我尝试 yum remove libjpeg 只是为了查看时,总共有 252 个包删除!)
我在 /usr/local/lib 中安装了 jpeg-8。它被 python 正确使用,但 not 被 apache 使用。这是来自 lsof 的列表:
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
httpd xxxxx root mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
python xxxxx jordan DEL REG 253,3 xxxxx63 /usr/local/lib/libjpeg.so.8.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
httpd xxxxx apache mem REG 253,3 xxxxx0 xxxxx34 /usr/lib64/libjpeg.so.62.0.0
所以,这就是我想知道的。鉴于我无法卸载 libjpeg-6b,有什么办法可以强制 apache 改用 libjpeg-8?
好的,所以最近运行的lsof 显示 apache 现在正在加载 libjpeg.so.8.0.0 also 但仍然遇到错误,这表明它仍在使用 62 版本.有没有办法让 8 版本优先?
更新 #1
对 lib64/modules 中的所有模块运行 ldd 时没有引用 libjpeg。在 PIL 的 _imaging.so 文件上运行 ldd 表明它正在使用新版本的 libjpeg。我很确定我的系统上只有一个版本的 PIL -- 我已经进行了相当彻底的搜索。
有没有人知道哪些与 httpd 或 python 相关的程序或模块可能会加载 libjpeg?我知道 something 正在通过 apache 加载它,因为它显示在 lsof 中。
【问题讨论】:
-
对 httpd 和所有 Apache 的 dso 模块运行 'ldd' 以查看问题所在...
-
我对 httpd.conf 和 conf.d 文件中使用 LoadModule 调用的每个模块运行 ldd,但没有匹配项。 “ldd -v -r /usr/sbin/httpd”也没有出现。还有其他我需要看的吗?
标签: apache python-imaging-library libjpeg lsof