如何解决SBCL搭配SLIME使用时出现的name service错误?
错误含义
Name service error in "getaddrinfo": -2 (Name or service not known) 是系统底层域名解析函数getaddrinfo抛出的错误,含义是当前系统的主机名无法被解析到对应的IP地址。SLIME启动时会拉起Swank后端服务,Swank默认会尝试绑定到系统主机名对应的IP地址,解析失败就会触发该报错。
你选择中止后Swank没有完成初始化,仅启动了SBCL的原生REPL,因此Org Mode执行Lisp代码块时找不到可用的Slime连接,就会一直轮询临时连接文件抛出你看到的Polling提示。
修复步骤
- 第一步:先获取当前系统的主机名,终端执行命令:
hostname
记住输出的主机名字符串。 - 第二步:编辑
/etc/hosts文件,添加对应主机名的解析记录,示例如下(把<你的主机名>替换为上一步拿到的实际输出):
127.0.0.1 localhost <你的主机名> ::1 localhost <你的主机名>
保存文件后重试启动Slime,绝大多数情况该问题就会被修复。
- 第三步:如果修改hosts后问题仍然存在,可以直接在Emacs配置中强制指定Swank绑定的IP地址,添加如下配置:
(setq slime-swank-interface "127.0.0.1")
强制Swank绑定到本地回环地址,跳过主机名解析步骤,重启Emacs后再启动Slime即可。
内容的提问来源于stack exchange,提问作者Simponic
相关产品推荐
相关产品推荐

