#:g1: LispWorks 7.0でlibssl 1.1の読み込みに失敗する

Posted 2017-01-01 12:59:25 GMT

年末年始なのでパソコン関係の整理をしていて、OSのパッケージのアップデートなどもしていたが、ふと気づくとLispWorks 7.0でlibsslの読み込みに失敗するようになってしまっていた。

あれこれ探ってみるとどうやら昨年の8月に出たばかりのOpenSSL 1.1のライブラリを上手く扱えていないらしい。

LispWorks 7.0は2015年の5月にリリースされたものなので、まあ対応していないのはしょうがないのかもしれない。

対処方法を調べてみたが、明示的に読み込むライブラリを指定すれば良いらしい。
マニュアルによると読み込むパスの指定には、comm:set-ssl-library-pathを使う。

ということで下記のようなものを~/.lispworksとか、siteinit.lispに書けば対処できる。

(require "comm")
(comm:set-ssl-library-path "/usr/lib/x86_64-linux-gnu/libssl.so.1.0.2") ; 1.0.2は1.0系の最新

一応LispWorksにもバグ報告を上げてみたけれど、環境依存の問題ということで対処なしでクローズになるような気がしている。
libssl.soのパッケージ標準バージョンは今後1.1になって行くのだろうから対応しておいて欲しいところだが……。

追記: 回答

SSL 1.1への対応は、次期リリースのLispWorksでする予定とのことで、現状では、comm:set-ssl-library-pathで明示するのが最善の対処とのこと。

ということで、private-patches/comm.lispというものを書いて、プライベートパッチとして読み込むことにしてみた。

(lw:defadvice (require comm :around) (module-name &optional pathname)
  (cond ((string-equal module-name "comm")
         (lw:call-next-advice module-name pathname)
         (when (string= "-lssl" comm::*ssl-library-path*)
           (comm:set-ssl-library-path
            "/usr/lib/x86_64-linux-gnu/libssl.so.1.0.2")))
        (T (lw:call-next-advice module-name pathname))))


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus