【问题标题】:Squeak SMTPs on LinuxLinux 上的 Squeak SMTP
【发布时间】:2016-10-29 04:42:44
【问题描述】:

我正在使用 Squeak 5 类 SecureSMTPClient 通过 SSL/TLS 发送电子邮件。

它在我的 Windows 机器上运行良好(感谢that question 的回答)。

但是,在 Linux 上我得到:

Error: primitiveSSLCreate failed

它会在控制台中打印(但仅在图像第一次尝试发送邮件时):

# ioLoadModule(/home/squeak5vm/SqueakSSL):
  /home/squeak5vm/SqueakSSL: undefined symbol: clock_gettime

Squeak“原语”是与平台和库对话的函数。我的猜测是,这个 Linux 没有提供 Squeak 所期望的某些 SSL/TLS 库版本。但究竟 Squeak 期待什么?


其他信息:

ldd /home/squeak5vm/SqueakSSL 的输出为:

linux-gate.so.1 =>  (0xb7757000)
libc.so.6 => /lib32/libc.so.6 (0xb7392000)
/lib/ld-linux.so.2 (0xb7758000)

【问题讨论】:

  • 投反对票?没有说明理由?
  • 很难说可能是什么问题。 SSL 由 SqueakSSL VM 插件提供。首先,检查你是否有那个插件(应该在你的 VM 附近,有 FilePlugin 等东西)如果它在那里,那么接下来可能是看看你的系统:你有 OpenSSL 吗?哪个版本?我们还需要知道您使用的是哪个 Linux,以及它是 32 位还是 64 位。
  • @MaxLeske 我从 squeak.org 下载了标准的 Squeak 5。文件“SqueakSSL”位于 VM 的目录中(文件大小为 9,228,209)。不确定 OpenSSL,这就是为什么我要问 Squeak 期待哪些本机库(在哪些版本中)。 (我的 Linux 是 64 位的)
  • 您的 Windows 机器是 32 位还是 64 位?我的第一个疯狂猜测是,Squeak 可能只适用于所需库的 32 位版本。
  • @lurker 我的 windows 也是 64 位的

标签: linux ssl smtp smalltalk squeak


【解决方案1】:

您使用的 SqueakSSL 插件版本是针对 OpenSSL 编译的,而 OpenSSL 又需要 clock_gettime

注意manpage 所说的

 Link with -lrt (only for glibc versions before 2.17).

显然,您的 SqueakSSL 二进制文件是在 glibc 2.17 之后的系统上编译的。

这里有一些选项:

  1. 尝试来自https://github.com/squeak-smalltalk/squeakssl/releases 的 SqueakSSL 二进制文件,它与 LibreSSL 静态链接。注意:它们可能已经过时了几周。
  2. 看看您是否可以使用 glibc >= 2.17 的更新 Linux 版本
  3. 例如尝试重新链接或预加载(请参阅How to relink existing shared library with extra object file)之类的方法

    LD_PRELOAD=/usr/lib32/librt.so /path/to/squeak

我们希望尽快解决这个问题。也许你想在https://github.com/OpenSmalltalk/ 上打开一个问题

【讨论】:

  • 选项 1 对我有用。你又做了一次托拜厄斯。谢谢你(也感谢那些在 cmets 中提供帮助的人)。我还注意到图书馆站点与您在 SO 上的图像图标相同;-)
  • 是的,我是编译这个的人;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-23
  • 1970-01-01
相关资源
最近更新 更多