以FreeBSD作为远程主机的CLion完全远程模式

时间:2019-04-11 13:24:33

标签: c++ c remote-debugging freebsd clion

当前,CLion的Full Remote Mode仅支持将Linux作为远程主机OS。可以有一个FreeBSD远程主机吗?

3 个答案:

答案 0 :(得分:2)

是的,可以!

但是,请注意,我回顾性地回顾了这些步骤,所以我可能错过了一两个步骤。如果您遇到任何问题,请随时在下面发表评论。

  1. 租用FreeBSD服务器:)

  2. 将系统更新到最新版本。否则,在安装软件包时,您可能会遇到诸如"libdl.so.1" not found之类的奇怪错误。我正在使用的是FreeBSD 12.0-RELEASE-p3。

  3. 创建一个用户帐户。不要忘记使其成为wheel的成员,并取消对%wheel ALL=(ALL) ALL/usr/local/etc/sudoers行的注释。

  4. 设置SSH。此步骤特别棘手,因为我们需要同时使用公共密钥和密码身份验证。

    1. 在某些情况下,由于known bug,远程主机必须使用密码身份验证,否则在设置工具链时会出现错误。您可以通过在PasswordAuthentication yes中设置/etc/ssh/sshd_config,然后设置sudo /etc/rc.d/sshd restart来启用密码验证。
    2. CLion似乎使用rsync和SSH在本地和远程主机之间同步文件。由于某些原因,我无法解释,如果主机服务器不支持无密码的SSH密钥登录,则此过程将永远挂起。按照this answer创建SSH密钥作为其他身份验证方法。
  5. CLion假定远程主机操作系统为Linux,因此我们必须修复GNU / Linux与FreeBSD之间的一些不兼容性。

    1. 使用sudo pkg install coreutils安装GNU实用程序。
    2. stat重命名BSD实用程序sudo mv /usr/bin/stat /usr/bin/_stat
    3. 使用代码段1 中的内容创建一个“新”文件/usr/bin/stat。这种黑客利用了CLion在远程服务器上运行命令之前将环境变量JETBRAINS_REMOTE_RUN设置为1的事实。
    4. 执行sudo chmod a+x /usr/bin/stat以使其可执行。
    5. 再次,用ls重命名BSD实用程序sudo mv /bin/ls /bin/_ls
    6. 像以前一样,使用代码段2 中的内容创建一个“新”文件/bin/ls
    7. 最后,sudo chmod a+x /bin/ls
  6. 使用sudo pkg install rsync cmake gcc gdb gmake安装依赖项。

  7. 现在您可以按照official instructions并连接到闪亮的FreeBSD主机了!

enter image description here


代码段1

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/usr/bin/_stat" "$@"
else
        exec "/usr/local/bin/gnustat" "$@"
fi

代码段2

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/bin/_ls" "$@"
else
        exec "/usr/local/bin/gls" "$@"
fi

答案 1 :(得分:1)

此外,您还需要修复GNU / Linux与FreeBSD之间的另一种不兼容性。

  1. 如果没有gtar,请检查pkg install gtar是否已安装
  2. tar重命名BSD实用程序mv /usr/bin/tar /usr/bin/_tar
  3. 使用摘要3中的内容创建一个“新”文件/usr/bin/tar,就像以前一样。
  4. 最后,sudo chmod a+x /usr/bin/tar

代码段3

#!/bin/sh
if [ -z "$JETBRAINS_REMOTE_RUN" ]
then
        exec "/usr/bin/_tar" "$@"
else
        exec "/usr/local/bin/gtar" "$@"
fi

答案 2 :(得分:1)

  1. 从CLion 2020.1开始,关于 gnustat 和“ ls”的指令不再适用。因为CLion 2020.1在 jsch-nio 库(https://github.com/lucastheisen/jsch-nio/commit/410cf5cbb489114b5da38c7c05237f6417b9125b

    中包含了正确的修补程序,
  2. 启动CLion 2020.2时不使用tar --dereference选项,因此有关 gtar (gnutar)的说明也不再适用。