#c #c #remote-debugging #freebsd #clion
#c #c #удаленная отладка #freebsd #clion
Вопрос:
В настоящее время полностью удаленный режим CLion поддерживает только Linux в качестве ОС удаленного хоста. Возможно ли иметь удаленный хост FreeBSD?
Комментарии:
1. Обязательно Задавать свои вопросы и отвечать на них можно самостоятельно
Ответ №1:
Да, вы можете!
Однако обратите внимание, что я вспоминаю эти шаги ретроспективно, поэтому, вероятно, я пропустил один или два шага. Если вы столкнетесь с какой-либо проблемой, пожалуйста, не стесняйтесь оставить комментарий ниже.
-
Арендуйте сервер FreeBSD, конечно 🙂
-
Обновите свою систему до последней версии. В противном случае вы можете получить странные ошибки, например
"libdl.so.1" not found
, при установке пакетов. Я использую FreeBSD 12.0-RELEASE-p3. -
Создайте учетную запись пользователя. Не забудьте сделать его членом
wheel
и раскомментировать%wheel ALL=(ALL) ALL
строку/usr/local/etc/sudoers
. -
Настройте SSH. Этот шаг особенно сложен, потому что нам нужно использовать аутентификацию с открытым ключом и паролем.
- Из-за известной ошибки в некоторых случаях удаленный хост должен использовать аутентификацию по паролю, иначе вы получите сообщение об ошибке при настройке набора инструментов. Вы можете включить аутентификацию по паролю, установив
PasswordAuthentication yes
значение in/etc/ssh/sshd_config
, за которым следует asudo /etc/rc.d/sshd restart
. - Похоже, что CLion синхронизирует файлы между локальным и удаленным хостом с
rsync
помощью и SSH. По некоторым причинам, которые я не могу объяснить, этот процесс будет зависать вечно, если хост-сервер не поддерживает вход по SSH-ключу без парольной фразы. Следуйте этому ответу, чтобы создать SSH-ключ в качестве дополнительного способа аутентификации.
- Из-за известной ошибки в некоторых случаях удаленный хост должен использовать аутентификацию по паролю, иначе вы получите сообщение об ошибке при настройке набора инструментов. Вы можете включить аутентификацию по паролю, установив
-
CLion предполагает, что ОС удаленного хоста — Linux, поэтому мы должны исправить некоторые несовместимости между GNU / Linux и FreeBSD.
- Установите утилиты GNU с
sudo pkg install coreutils
помощью . - Переименуйте утилиту BSD
stat
сsudo mv /usr/bin/stat /usr/bin/_stat
помощью . - Создайте «новый» файл
/usr/bin/stat
с содержимым из фрагмента 1. Этот взлом использует тот факт, что CLion устанавливает переменную окруженияJETBRAINS_REMOTE_RUN
1
в значение перед выполнением команд на удаленном сервере. - Сделайте
sudo chmod a x /usr/bin/stat
, чтобы сделать его исполняемым. - Опять же, переименуйте утилиту BSD
ls
сsudo mv /bin/ls /bin/_ls
помощью . - Создайте «новый» файл
/bin/ls
с содержимым из фрагмента 2, как и раньше. - Наконец,
sudo chmod a x /bin/ls
.
- Установите утилиты GNU с
-
Установите зависимости с
sudo pkg install rsync cmake gcc gdb gmake
помощью . - Теперь вы можете следовать официальным инструкциям и подключиться к вашему блестящему хосту FreeBSD!
Фрагмент 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. Начиная с версии 2020.1, CLion использует jsch-nio с соответствующим исправлением, в результате он корректно работает с bsd
stat
иls
командами.
Ответ №2:
Дополнительно вам необходимо исправить еще одну несовместимость между GNU / Linux и FreeBSD.
- Проверка
gtar
установлена, если нетpkg install gtar
- Переименуйте утилиту BSD
tar
сmv /usr/bin/tar /usr/bin/_tar
- Создайте «новый» файл
/usr/bin/tar
с содержимым из сниппета 3, как и раньше. - Наконец,
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
Комментарии:
1. Начиная с CLion 2020.2, это не требуется.
Ответ №3:
-
Начиная с 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) также больше не актуальна.