通过 Quicklisp 在 Mac 上安装 SBCL CFFI 软件包时出现软件包锁定错误
Package lock error while installing SBCL CFFI package on Mac via Quicklisp
我正在尝试使用 Common Lisp 中的 curses
,而常用的 cl-charms
和 croatoan
库需要 cffi
。在 Mac 上的 SBCL 中,ql:quickload
通常工作正常...但是安装 cffi
(直接安装或作为其他库之一的依赖项)失败:
(ql:quickload :cffi)
给我 REPL 输出:
; caught ERROR:
; READ error during COMPILE-FILE:
;
; Lock on package SB-ALIEN violated when interning SHARED-OBJECT-FILE while in
; package CFFI-SYS.
和堆栈跟踪:
Error while trying to load definition for system cl-charms from pathname
/Users/jacobsen/quicklisp/dists/quicklisp/software/cl-charms-20181210-git/cl-charms.asd:
COMPILE-FILE-ERROR while
compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">
[Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]
Restarts:
0: [RETRY] Retry compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">.
1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl"> as having been successful.
[...]
--more--
Backtrace:
0: ((FLET "H0" :IN ASDF/ACTION:PERFORM) #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10039748F3}>)
1: (SB-KERNEL::%SIGNAL #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10039748F3}>)
2: (ERROR UIOP/LISP-BUILD:COMPILE-FILE-ERROR :CONTEXT-FORMAT "~/asdf-action::format-action/" :CONTEXT-ARGUMENTS ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cffi" "src" "cffi-sb..
3: (UIOP/LISP-BUILD:CHECK-LISP-COMPILE-RESULTS NIL T T "~/asdf-action::format-action/" ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">)))
[...]
--more--
当我 brew uninstall sbcl
从源安装 SBCL 时也是如此。我的SBCL是最新版本(1.5.6)。
需要什么额外的设置才能使 SBCL 与需要 FFI 的库一起使用?
Addendum/edit:使用 Roswell 安装 SBCL 而不是直接使用 Homebrew 安装 SBCL 也会以同样的方式失败。
我对 Homebrew 设置进行了全面清理(遵循 apple.stackexchange.com 上 this answer 中的建议)并重新安装了 sbcl
和 quicklisp
。加载 cffi
和 cl-charms
现在可以正常工作。
我正在尝试使用 Common Lisp 中的 curses
,而常用的 cl-charms
和 croatoan
库需要 cffi
。在 Mac 上的 SBCL 中,ql:quickload
通常工作正常...但是安装 cffi
(直接安装或作为其他库之一的依赖项)失败:
(ql:quickload :cffi)
给我 REPL 输出:
; caught ERROR:
; READ error during COMPILE-FILE:
;
; Lock on package SB-ALIEN violated when interning SHARED-OBJECT-FILE while in
; package CFFI-SYS.
和堆栈跟踪:
Error while trying to load definition for system cl-charms from pathname
/Users/jacobsen/quicklisp/dists/quicklisp/software/cl-charms-20181210-git/cl-charms.asd:
COMPILE-FILE-ERROR while
compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">
[Condition of type ASDF/FIND-SYSTEM:LOAD-SYSTEM-DEFINITION-ERROR]
Restarts:
0: [RETRY] Retry compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">.
1: [ACCEPT] Continue, treating compiling #<CL-SOURCE-FILE "cffi" "src" "cffi-sbcl"> as having been successful.
[...]
--more--
Backtrace:
0: ((FLET "H0" :IN ASDF/ACTION:PERFORM) #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10039748F3}>)
1: (SB-KERNEL::%SIGNAL #<UIOP/LISP-BUILD:COMPILE-FILE-ERROR {10039748F3}>)
2: (ERROR UIOP/LISP-BUILD:COMPILE-FILE-ERROR :CONTEXT-FORMAT "~/asdf-action::format-action/" :CONTEXT-ARGUMENTS ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cffi" "src" "cffi-sb..
3: (UIOP/LISP-BUILD:CHECK-LISP-COMPILE-RESULTS NIL T T "~/asdf-action::format-action/" ((#<ASDF/LISP-ACTION:COMPILE-OP > . #<ASDF/LISP-ACTION:CL-SOURCE-FILE "cffi" "src" "cffi-sbcl">)))
[...]
--more--
当我 brew uninstall sbcl
从源安装 SBCL 时也是如此。我的SBCL是最新版本(1.5.6)。
需要什么额外的设置才能使 SBCL 与需要 FFI 的库一起使用?
Addendum/edit:使用 Roswell 安装 SBCL 而不是直接使用 Homebrew 安装 SBCL 也会以同样的方式失败。
我对 Homebrew 设置进行了全面清理(遵循 apple.stackexchange.com 上 this answer 中的建议)并重新安装了 sbcl
和 quicklisp
。加载 cffi
和 cl-charms
现在可以正常工作。