質問

スライムの下で SBCL を起動するのに苦労しています。物事が台無しになってしまい、回復方法がわかりません。これは私がやるまでは正常に動作していました...

asdf 経由でパッケージをロードする際に問題が発生しました。その時点で、何が問題なのかを確認するために、SBCL に付属している asdf.lisp のデバッグを開始しました。私が行った唯一の変更は、何が間違っているかを理解した後に削除した(ブレーク)を入れることでした。次に SBCL を開始しようとするまでは、すべて順調でした。

その後、asdf.fasl が asdf.lisp ファイルよりも古いという気の利いたコンパイル エラーが発生しました。それは私にとって理にかなっていたので、asdf.faslを再コンパイルしました。現在取得している出力は次のとおりです。

(progn (load "c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "c:\\Users\\GILESR~1\\AppData\\Local\\Temp\\slime.3068" :coding-system "iso-latin-1-unix"))

This is SBCL 1.0.37, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.

This is experimental prerelease support for the Windows platform: use
at your own risk.  "Your Kitten of Death awaits!"
* 
; loading #P"c:\\emacs-23.1\\site-lisp\\slime\\swank-loader.lisp"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-backend.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-path-parser.fasl"
; loading #P"c:\\hacking\\emacs\\.slime\\fasl\\2010-07-30\\sbcl-1.0.37-win32-x86\\swank-source-file-cache.fasl"

; compiling file "c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp" (written 22 JUL 2010 08:15:02 AM):

; file: c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp
; in: EVAL-WHEN (:COMPILE-TOPLEVEL :LOAD-TOPLEVEL :EXECUTE)
;     (REQUIRE 'SWANK-BACKEND::SB-BSD-SOCKETS)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-INTROSPECT)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-POSIX)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.

;     (REQUIRE 'SWANK-BACKEND::SB-CLTL2)
; 
; caught ERROR:
;   (during compile-time-too processing)
;   The function ASDF::MODULE-PROVIDE-ASDF is undefined.
; 
; compilation unit aborted
;   caught 1 fatal ERROR condition
;   caught 4 ERROR conditions
;
; compilation aborted because of fatal error:
;   SB-INT:SIMPLE-READER-PACKAGE-ERROR at 1839 (line 62, column 18) on #<SB-SYS:FD-STREAM
;                                                                        for "file c:\\emacs-23.1\\site-lisp\\slime\\swank-sbcl.lisp"
;                                                                        {24564B89}>:
;     package "SB-POSIX" not found
;   ; compilation aborted after 0:00:00.045

;; 
;; Error while compiling c:\emacs-23.1\site-lisp\slime\swank-sbcl.lisp:
;;   COMPILE-FILE returned NIL.
;; Aborting.

そのため、再コンパイルされた asdf で必要なものが見つかりません。これを解決するために、SBCL を完全にアンインストールして再インストールしました。喜びはありません。.sbclrc にも何もありません。

アップデート:asdf.lisp ソース コードを見ると、欠落している関数が確実にファイル内にあります。コンパイルを妨げているのは、次の行だと思います。

#+(and sbcl sbcl-hooks-require)

私の lisp の知識は、現時点では、上記の条件付きコンパイル ステートメントをトリガーする環境で asdf ファイルをコンパイルするには十分ではありません。

役に立ちましたか?

解決

次の手順を使用して問題を解決しました。

  1. Windows のスタート メニューから sbcl を起動します。
  2. 次のコードを実行して、sbcl-hooks-require シンボルを機能リストに追加します。

    (プッシュ:sbcl-hooks-require 特徴)

  3. asdf.lispを再コンパイルします。これを行うには、インストールされている C:\Program files\Steel... の外で asdf を再コンパイルする必要がありました。Windows Vista 上の UAC は、fasl の書き込みを停止するためです。例えば:

    (コンパイルファイル "C:\foobar\asdf.lisp")

  4. 生成された fasl を C:\Program files\Steel... にコピーして戻します。元の fasl を上書きします。

アップデート:stackoverflow のフォーマットにより、コード ビットの一部が失われています。コードは次のようになります。

(push :sbcl-hooks-require *features*)
(compile-file "C:\\foobar\\asdf.lisp")
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top