我试图使用slime-connect函数来访问使用sbcl的远程服务器。我按照Marco Baringer,的slime.mov电影中的所有步骤进行了操作,但是在为slime创建ssh连接时我遇到了困难。这是在已经启动远程计算机上的swank服务器之后。我是这样做的:
ssh -L 4005:127.0.0.1:4005 user@server.com
我在本地SLIME上遇到了这个错误:
Lisp连接意外关闭:远程对等方断开连接
...并在远程服务器上:
频道3:开启失败:连接失败:拒绝连接
可能出现什么问题?
答案 0 :(得分:4)
您是否检查过您使用的SLIME和SWANK版本是否相同?当我使用SLIME会话的两半不匹配版本时,我发生了奇怪的事情。
答案 1 :(得分:2)
我不知道,但您可以尝试在本地连接到远程计算机上的swank。
ssh user@server.com
telnet 127.0.0.1:4005
可能在那里你会发现错误。您也可以尝试使用localhost:4005而不是127.0.0.1,并检查localhost接口是否已正确配置。
答案 2 :(得分:2)
最容易错过的是swank服务器侦听的tcp端口。我最近没有做过很多远程开发,但我记得我第一次做的时候,我在理解如何告诉swank要绑定哪个端口或者找出它选择哪个端口时遇到了一些麻烦。
您是否介意扩展实际启动swank服务器的方式?
答案 3 :(得分:0)
对我来说,问题在于Emacs的slime
(v2.22)函数以附加参数from-emacs t
开始,而swank-loader.lisp
不支持(v2.22)。
对我有用的是编辑slime-v2.22/swank-loader.lisp:init
以接受一个新的参数from-emacs
,该参数未在函数的主体中使用,因为我不知道该参数应采用哪种方式治疗。但是slime
现在可以正常工作了。
在启动slime
时,我还会收到有关不兼容版本的警告:粘液v2.23和swank v2.22,但是当我使用list-packages
并仅通过文件夹名称进行检查时,我有了{{ 1}}和slime
均为v2.22版本。现在对我来说这是一个困惑。
如果有人知道有关它的详细信息,请发表评论。