日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

终极解决方案:Emacs+Slime+Lisp启动错误:Polling /tmp/slime.50

發(fā)布時間:2025/7/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 终极解决方案:Emacs+Slime+Lisp启动错误:Polling /tmp/slime.50 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

終極解決方案:Emacs+Slime+Lisp啟動錯誤:Polling "/tmp/slime.5000 .. 25 (Abort with 'M-x slime-abort-connection'.) [730 times]"

目錄

  • 問題描述
  • 嘗試搜索無果
  • 自力更生研究報錯信息
  • 問題解決方案
  • ECL的小尾巴

問題描述

在樹莓派2上安裝了 Emacs + Slime + CCL/SBCL/CLISP/ECL 開發(fā)環(huán)境,結(jié)果啟動時總是在 minibuffer 區(qū)出現(xiàn)如下錯誤,很難連接成功:

Polling "/tmp/slime.5000 .. 25 (Abort with 'M-x slime-abort-connection'.) [730 times]

嘗試搜索無果

搜到幾種解決辦法,但是貌似都不起作用

主要參考此文:[Emacs slime mini buffer take-over] (http://stackoverflow.com/questions/15141617/emacs-slime-mini-buffer-take-over),其中有人提供了4種解決辦法,不過貌似都不起作用

1、在 ~/.emacs.d/ 目錄下新建 tmp 目錄,并在 .emacs 中增加設(shè)置:

(setq temporary-file-directory "/tmp")

2、清除掉 ~/.cache/common-lisp/

3、進(jìn)入 slime 安裝目錄下的 /slime/contrib,刪除其中的 elc 文件

cd /path/slime/contrib find ./ -name '*.elc' | xargs rm -f

4、因?yàn)槭褂米詣影惭b,導(dǎo)致缺少 swank-loader.lisp,手動下載將其拷貝到 slime 的對應(yīng)目錄下,具體描述如下:

http://iswwwup.com/t/1307c691a162/emacs-slime-mini-buffer-take-over.html The infinite polling may be due to the missing of file swank-loader.lisp. Check the variable slime-backend to see whether it contains the right path to swank-loader.lisp. On my computer I don't even have a swank-loader.lisp file(I noticed that if you install the slime using elpa, this may happen). So I downloaded the entire slime from here and got it right.

自力更生研究報錯信息

看來取巧的辦法是不存在的,最終還是得靠自己研究,先看看錯誤信息提示:

(progn (load "/usr/share/common-lisp/source/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (fun\call (read-from-string "swank:start-server") "/tmp/slime.7434")) 2 3lisp kernel support for the ARM soft-float ABI has been deprecated

等等~~ 我在 .emacs 里設(shè)置的 slime 路徑貌似不是這個啊!看看 .emacs 文件里的這個配置行:

;; 設(shè)置 slime 加載目錄 (add-to-list 'load-path "/opt/software/slime/")

恩,貌似有些明白了,上面的那個輪詢提示是因?yàn)?slime 連接不到 swank 上,那么為什么連接不上?CCL 提示 slime 版本跟 swank 版本不一致(目前看來,還是 CCL 連接 slime 的錯誤提示最完全)。

在我的環(huán)境中 slime 最初是用這個命令安裝的

sudo apt-get install slime

于是自動安裝了一堆東西到 /usr/shar/common-lisp 下,包括舊版本的 slime,cl-asdf 還有什么 common-lisp-controler,而且用下面兩個文件指定了 slime 相關(guān)路徑在這里

pi@raspberrypi /usr/share/common-lisp/source/common-lisp-controller $ ls -al total 20 drwxr-xr-x 2 root root 4096 Aug 23 21:45 . drwxr-xr-x 5 root root 4096 Aug 24 10:42 .. -rw-r--r-- 1 root root 5808 Oct 23 2012 common-lisp-controller.lisp -rw-r--r-- 1 root root 2956 Oct 23 2012 post-sysdef-install.lisp

正好剛才加載 ECL 時也提示 asdf 版本過舊,看來也可以一起試著解決一下

因?yàn)?emacs 的啟動配置文件有多個,既有 ~/.emacs,也有 ~/.emacs.d/init.el,還有 emacs/site-lisp/ 下的文件,優(yōu)先級我現(xiàn)在也記不太清楚了,所以導(dǎo)致我們修改了的文件配置在加載時被系統(tǒng)的默認(rèn)配置給覆蓋了,于是我們的配置就沒起作用。

現(xiàn)在為了保證不會有多個修改源,后面下載回來的 slime 和 cl-asdf 我們只保留一個實(shí)際拷貝,其他目錄下對它們的使用都建立符號鏈接,命令為:ln -s 原始文件夾完整路徑 目標(biāo)位置完整路徑

問題解決方案

既然貌似找到了原因,那就試著改改,先解決 minibuffer 始終顯示 polling 而連接不起來的問題,那么就手動下載 slime 最新版

cd ~/ sudo git clone https://github.com/slime/slime slime cd ./slime sudo make sudo ln -s /home/pi/slime /usr/share/common-lisp/source/slime

然后按照上面第2、第3所說的清除相關(guān)文件

再次運(yùn)行

emacs M - - M - x slime clisp

很好,編譯一段時間后,連接成功, CLISP 下的 polling 信息消失了!

繼續(xù)啟動 CCL 和 SBCL 檢查,全部 ok!看來問題初步得到了解決。

  • 教訓(xùn):需要相互配合使用的軟件,比如 Emacs + Slime + Common Lisp 最好能自己獨(dú)立下載安裝,然后花點(diǎn)時間手動配置,否則用默認(rèn)安裝的話很可能會出現(xiàn)各種奇怪的問題。

ECL的小尾巴:

不過 ECL 還是繼續(xù)報錯,報錯信息如下:

12;;; Loading "/usr/share/common-lisp/source/slime/swank-loader.lisp" 13;;; Loading #P"/usr/lib/ecl-11.1.1/cmp.fas" 14;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/backend.fas" 15;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/ecl.fas" 16;;; Loading #P"/usr/lib/ecl-11.1.1/sockets.fas" 17;;; Loading #P"/usr/lib/ecl-11.1.1/profile.fas" 18;;; Loading #P"/usr/lib/ecl-11.1.1/serve-event.fas" 19;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/gray.fas" 20;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/match.fas" 21;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/rpc.fas" 22;;; Loading "/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/swank.fas" 23;;; 24;;; Compiling /usr/share/common-lisp/source/slime/contrib/swank-asdf.lisp. 25;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3 26;;; 27;;; Loading #P"/usr/lib/ecl-11.1.1/asdf.fas" 28;;; Error: 29;;; in file swank-asdf.lisp, position 2332 30;;; at (UNLESS (OR #) ...) 31;;; * The form (IF (NOT (OR (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSION) "2.14.6"))) (PROGN (ERROR "Your ASDF is too old. ~ 32;;; The oldest version supported by swank-asdf is 2.014.6."))) was not evaluated successfully. 33;;; Error detected: 34;;; Your ASDF is too old. The oldest version supported by swank-asdf is 2.014.6.;; 35;; Error while compiling /usr/share/common-lisp/source/slime/contrib/swank-asdf.lisp: 36;; COMPILE-FILE returned NIL. 37;; Aborting. 38;; 39 40Restart ABORT is not active. 41 42Available restarts: 43 441. (RESTART-TOPLEVEL) Go back to Top-Level REPL. 45 46Broken at SWANK-LOADER::HANDLE-SWANK-LOAD-ERROR. In: #<process TOP-LEVEL>. 47 File: #P"/opt/software/slime/swank-loader.lisp" (Position #6091) 48>>

那么就手動安裝一次 cl-asdf 了

sudo apt-get install https://gitlab.common-lisp.net/asdf/asdf.git cl-asdf sudo ln -s /opt/software/cl-asdf / /usr/share/common-lisp/source/cl-asdf

接著再把前面的臨時文件清除一下

cd /usr/share/emacs/site-lisp/slime/contrib sudo find ./ -name '*.elc' | xargs rm -fcd ~/.cache mv common-lisp/ ./common-lisp-back

不過 ECL 貌似有多處臨時文件要刪,這兩個目錄:/usr/lib/ecl-11.1.1/,/home/pi/.slime/fasl/2015-08-18/ecl-11.1.1-linux-arm/ 命令如下

pi@raspberrypi ~/.slime/fasl/2015-08-18 $ sudo mv ./ecl-11.1.1-linux-arm/ ./ecl-11.1.1-linux-arm-back pi@raspberrypi /usr/lib/ecl-11.1.1 $ sudo mv ./*.fas ./fas-back

貌似把 lib 目錄下的全部 fas 文件移出去會導(dǎo)致失敗,那就先恢復(fù)原樣,只把 asdf.fas 移走試試。

繼續(xù)報錯,那就把最新下載回來的 asdf.lisp 拷貝過去,這下好了,asdf 的問題解決了。

不過出現(xiàn)了另一個錯誤:

121;;; Compiling /usr/share/common-lisp/source/slime/contrib/swank-trace-dialog.lisp. 122;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=3 123;;; 124;;; Error: 125;;; in file swank-trace-dialog.lisp, position 6458 126;;; at (DEFSLIMEFUN REPORT-PARTIAL-TREE ...) 127;;; * The macro form (LOOP FOR I FROM (LENGTH RECENTLY-FINISHED) BELOW *TRACES-PER-REPORT* WHILE (< *VISITOR-IDX* (LENGTH *TRACES*\)) FOR TRACE = (AREF *TRACES* *VISITOR-IDX*) COLLECT TRACE UNLESS (COMPLETED-P TRACE) DO (PUSH TRACE *UNFINISHED-TRACES*) DO (INCF *\VISITOR-IDX*)) was not expanded successfully. 128;;; Error detected: 129;;; Iteration in LOOP follows body code. 130;;; Current LOOP context: FOR TRACE = (AREF *TRACES* *VISITOR-IDX*) COLLECT.;; 131;; Error while compiling /usr/share/common-lisp/source/slime/contrib/swank-trace-dialog.lisp: 132;; COMPILE-FILE returned NIL. 133;; Aborting. 134;; 135 136Restart ABORT is not active. 137 138Available restarts: 139 1401. (RESTART-TOPLEVEL) Go back to Top-Level REPL. 141 142Broken at SWANK-LOADER::HANDLE-SWANK-LOAD-ERROR. In: #<process TOP-LEVEL>. 143 File: #P"/opt/software/slime/swank-loader.lisp" (Position #6091) 144>>

報錯的意思是這個 loop 宏形式?jīng)]有成功展開,看來這個錯誤得去仔細(xì)研究一下 swank-trace-dialog.lisp 中這段代碼了,不過暫時沒啥時間,而且對 ECL 用得也不多,命令行下的 REPL 就足夠用了,暫時留一個小尾巴,等以后有時間了再看。

本文最新版本:http://my.oschina.net/freeblues/blog/496640

==結(jié)束==

轉(zhuǎn)載于:https://my.oschina.net/freeblues/blog/496640

總結(jié)

以上是生活随笔為你收集整理的终极解决方案:Emacs+Slime+Lisp启动错误:Polling /tmp/slime.50的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。