当前,CLion的Full Remote Mode仅支持将Linux作为远程主机OS。可以有一个FreeBSD远程主机吗?
答案 0 :(得分:2)
是的,可以!
但是,请注意,我回顾性地回顾了这些步骤,所以我可能错过了一两个步骤。如果您遇到任何问题,请随时在下面发表评论。
租用FreeBSD服务器:)
将系统更新到最新版本。否则,在安装软件包时,您可能会遇到诸如"libdl.so.1" not found
之类的奇怪错误。我正在使用的是FreeBSD 12.0-RELEASE-p3。
创建一个用户帐户。不要忘记使其成为wheel
的成员,并取消对%wheel ALL=(ALL) ALL
中/usr/local/etc/sudoers
行的注释。
设置SSH。此步骤特别棘手,因为我们需要同时使用公共密钥和密码身份验证。
PasswordAuthentication yes
中设置/etc/ssh/sshd_config
,然后设置sudo /etc/rc.d/sshd restart
来启用密码验证。rsync
和SSH在本地和远程主机之间同步文件。由于某些原因,我无法解释,如果主机服务器不支持无密码的SSH密钥登录,则此过程将永远挂起。按照this answer创建SSH密钥作为其他身份验证方法。CLion假定远程主机操作系统为Linux,因此我们必须修复GNU / Linux与FreeBSD之间的一些不兼容性。
sudo pkg install coreutils
安装GNU实用程序。stat
重命名BSD实用程序sudo mv /usr/bin/stat /usr/bin/_stat
。/usr/bin/stat
。这种黑客利用了CLion在远程服务器上运行命令之前将环境变量JETBRAINS_REMOTE_RUN
设置为1
的事实。sudo chmod a+x /usr/bin/stat
以使其可执行。ls
重命名BSD实用程序sudo mv /bin/ls /bin/_ls
。/bin/ls
。sudo chmod a+x /bin/ls
。使用sudo pkg install rsync cmake gcc gdb gmake
安装依赖项。
代码段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之间的另一种不兼容性。
gtar
,请检查pkg install gtar
是否已安装tar
重命名BSD实用程序mv /usr/bin/tar /usr/bin/_tar
/usr/bin/tar
,就像以前一样。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)
从CLion 2020.1开始,关于 gnustat 和“ ls”的指令不再适用。因为CLion 2020.1在 jsch-nio 库(https://github.com/lucastheisen/jsch-nio/commit/410cf5cbb489114b5da38c7c05237f6417b9125b)
中包含了正确的修补程序,启动CLion 2020.2时不使用tar --dereference
选项,因此有关 gtar (gnutar)的说明也不再适用。