【问题标题】:connect emacs cider to vagrant host clojure project将 emacs cider 连接到 vagrant 主机 clojure 项目
【发布时间】:2015-10-10 20:54:02
【问题描述】:

我正在尝试同时使用vagrantClojureemacs。具体来说,我无法将cider 连接到我的vagrant 机器。

当我在我的项目中运行 cider-jack-in 时,它在本地工作。 但我不知道在 vagrant 机器上的同一个项目(通过 vagrant 共享文件夹同步)中执行此操作的步骤是什么。

到目前为止,这是我的尝试:

  • ssh vagrant,然后是 cd my-project-dir,然后是 lein repl
  • 在emacs中,cider-connect,输入vagrant@192.168.50.50,端口22

我收到以下消息:

SSH 端口转发失败。检查 nrepl-tunnel 缓冲区。

在那个缓冲区内:

OpenSSH_6.2p2, OSSLShim 0.9.8r 2011 年 12 月 8 日 特权端口只能是 由root转发。

进程 nrepl-tunnel 异常退出,代码为 255

我应该以 root 身份运行它吗?真的是问题吗?我应该使用另一个端口吗?我是否必须在我的 Clojure 代码中添加特定内容才能启用它? here 给出的方向对我来说有点不清楚。

注意:它与this question 不同,因为emacs 在主机上运行,​​而不是在vagrant 机器上运行

编辑

感谢@Shlomi 的回答,这是我所做的详细步骤:

  • 通过添加以下内容来编辑 .ssh/config(根据您的Vagrantfile 编辑 IP):

    寄宿家庭 主机名 192.168.50.50 端口 22 用户无业游民 ForwardAgent 是的

  • 在主机中,使用lein repl 开始我的项目。注意消息中的端口:nREPL server started on port 42018 on host 127.0.0.1 - nrepl://127.0.0.1:42018

  • 在 emacs 中,M-x cider-connect,输入 vagrant,你的密码和前面lein 命令记录的端口。

  • 就是这样:)

【问题讨论】:

    标签: emacs ssh clojure vagrant cider


    【解决方案1】:

    您使用的端口似乎是 ssh 端口而不是 nrepl 端口。

    我通常使用emacs进行远程访问的方式是通过tramp:

    1. Add an entry in .ssh/config 代表你的远程主机,比如 vagrant
    2. 在emacs中,cider-connect,输入vagrant
    3. 在最新版本的 cider 中,它会自动查找该主机上所有活动的 nrepl 会话,并显示它们的项目名称和端口,因此选择正确的,您应该可以开始工作了。

    【讨论】:

    • 3.不能立即工作,还是我没有在 vagrant 机器上正确启动 nrepl ?我被问到 A - 我的密码 B - 一个连接端口(我试过 59258) C - 我的密码再次(“在缓冲区 nrepl-tunnel)vagrant@192.168.50.50 的密码”) D -连接已关闭(“nREPL,连接意外关闭...”)。
    • 哦,我必须注意 nRepl 中的消息:“nREPL 服务器在主机 127.0.0.1 上的端口 42018 上启动 - nrepl://127.0.0.1:42018”。现在它可以工作了,谢谢 (+1)。
    • 您还应该检查ssh-copy-id,这将允许您跳过已知主机的密码输入。在你的情况下可能真的很有用
    • @Schlomi 您是否也有重新加载 REPL 的工作流程?我可以杀死 vagrant REPL,然后与 cider-connect 重新连接,但感觉不太理想。
    • 对不起,但我不......我做的和你描述的一样:杀死并重新启动repl,而不是重新连接cider-connect
    猜你喜欢
    • 1970-01-01
    • 2015-10-04
    • 1970-01-01
    • 1970-01-01
    • 2021-06-20
    • 2019-04-26
    • 2015-04-05
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多