Linux 上的 Squeak SMTP

Squeak SMTPs on Linux

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

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

然而,在 Linux 我得到:

Error: primitiveSSLCreate failed

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

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

Squeak "primitives" 是与平台和库对话的函数。我的猜测是,这个 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)

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

请注意 man 页面说

 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
  3. 的更新 Linux 版本
  4. 尝试重新链接或预加载(参见 How to relink existing shared library with extra object file),例如

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

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

打开一个问题