Полностью удаленный режим CLion с FreeBSD в качестве удаленного хоста

#c #c #remote-debugging #freebsd #clion

#c #c #удаленная отладка #freebsd #clion

Вопрос:

В настоящее время полностью удаленный режим CLion поддерживает только Linux в качестве ОС удаленного хоста. Возможно ли иметь удаленный хост FreeBSD?

Комментарии:

1. Обязательно Задавать свои вопросы и отвечать на них можно самостоятельно

Ответ №1:

Да, вы можете!

Однако обратите внимание, что я вспоминаю эти шаги ретроспективно, поэтому, вероятно, я пропустил один или два шага. Если вы столкнетесь с какой-либо проблемой, пожалуйста, не стесняйтесь оставить комментарий ниже.

  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. Из-за известной ошибки в некоторых случаях удаленный хост должен использовать аутентификацию по паролю, иначе вы получите сообщение об ошибке при настройке набора инструментов. Вы можете включить аутентификацию по паролю, установив PasswordAuthentication yes значение in /etc/ssh/sshd_config , за которым следует a sudo /etc/rc.d/sshd restart .
    2. Похоже, что CLion синхронизирует файлы между локальным и удаленным хостом с rsync помощью и SSH. По некоторым причинам, которые я не могу объяснить, этот процесс будет зависать вечно, если хост-сервер не поддерживает вход по SSH-ключу без парольной фразы. Следуйте этому ответу, чтобы создать SSH-ключ в качестве дополнительного способа аутентификации.
  5. CLion предполагает, что ОС удаленного хоста — Linux, поэтому мы должны исправить некоторые несовместимости между GNU / Linux и FreeBSD.

    1. Установите утилиты GNU с sudo pkg install coreutils помощью .
    2. Переименуйте утилиту BSD stat с sudo mv /usr/bin/stat /usr/bin/_stat помощью .
    3. Создайте «новый» файл /usr/bin/stat с содержимым из фрагмента 1. Этот взлом использует тот факт, что CLion устанавливает переменную окружения JETBRAINS_REMOTE_RUN 1 в значение перед выполнением команд на удаленном сервере.
    4. Сделайте sudo chmod a x /usr/bin/stat , чтобы сделать его исполняемым.
    5. Опять же, переименуйте утилиту BSD ls с sudo mv /bin/ls /bin/_ls помощью .
    6. Создайте «новый» файл /bin/ls с содержимым из фрагмента 2, как и раньше.
    7. Наконец, sudo chmod a x /bin/ls .
  6. Установите зависимости с sudo pkg install rsync cmake gcc gdb gmake помощью .

  7. Теперь вы можете следовать официальным инструкциям и подключиться к вашему блестящему хосту 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.

  1. Проверка gtar установлена, если нет pkg install gtar
  2. Переименуйте утилиту BSD tar с mv /usr/bin/tar /usr/bin/_tar
  3. Создайте «новый» файл /usr/bin/tar с содержимым из сниппета 3, как и раньше.
  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
  

Комментарии:

1. Начиная с CLion 2020.2, это не требуется.

Ответ №3:

  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) также больше не актуальна.