Удаленная разработка NetBeans с дополнительной настройкой

Я пытаюсь использовать NetBeans (7.3.1) для работы над удаленным проектом.

Моя конфигурация следующая:

  • Моя локальная машина — это ноутбук с Windows 7. У него нет никаких инструментов. В частности, ни компилятор, ни отладчик. Но, например, у него есть IDE NetBeans и PuTTY.
  • Исходный код, сценарии Make и (в конечном итоге) результаты сборки находятся в удаленном хранилище, совместно используемом серверами и «локальными». (Я мог бы переключиться на хранилище только с одним сервером, так как это быстрее, но я не думаю, что это вообще имеет значение.)
  • Я получаю к нему доступ с помощью диспетчера SSHFS. SSHFS Manager принимает имя сервера, путь на сервере, имя пользователя и закрытый ключ SSH. В результате он монтирует этот каталог на сервере как диск в Windows. Это прекрасно работает. (Хотя некоторые каталоги, возможно, ссылки, представлены в виде файлов в проводнике Windows, я не знаю, имеет ли это значение...)
  • Проект NetBeans расположен на локальной машине, но я не думаю, что это имеет значение, и я мог бы разместить его и удаленно. Но я бы предпочел оставить его «вне исходного кода», чтобы мне не приходилось добавлять игнорирование в систему контроля версий.
  • В NetBeans я выполнил процедуру, описанную в Руководстве по удаленной разработке. Кажется, это удалось. NetBeans подключился к серверу и обнаружил коллекцию компиляторов GNU.
  • Затем я добавил проект, используя File | Новый проект..., есть C/C++ | Проект C/C++ с существующими исходными кодами. Кажется, это удалось. Все файлы видны и все такое штатное.

Однако проблема в том, что наша рабочая «процедура» требует, чтобы мы сначала настроили среду. Поэтому, когда я вхожу в систему, например, с помощью PuTTY, я должен сначала вызвать setsee с правильным аргументом. И это сильно влияет на среду, добавляя множество переменных, например, в том числе:

  • GCC_HOME, которому присвоено значение /opt/gcc/linux64/ix86/gcc_4.3.2-7p3, в отличие от /user/bin/g++, который показан NetBeans в коллекции компиляторов GNU для компилятора C++ и
  • CPLUS_INCLUDE_PATH, который указывает на какой-то путь (хотя NetBeans не видит многих включений, вероятно, без этого пути).

Итак, есть ли способ указать NetBeans вызывать setsee на удаленном сервере, прежде чем делать что-либо еще?


person Adam Badura    schedule 21.08.2013    source источник


Ответы (1)


Выяснилось, что setsee более или менее внутренний инструмент. Тем не менее остается «основной вопрос»: как выполнить произвольный сценарий от имени сеанса SSH, созданного IDE, до того, как IDE фактически использует этот сценарий.

Ответ на вопрос “Как я могу установить переменные среды для удаленного процесса rsync?" Вопрос о суперпользователе говорит сам за себя.

Подводя итог: в ~/.ssh/authorized_keys нужно изменить запись, соответствующую ключу, с которым IDE будет входить в систему. Там нужно добавить параметр command, который представляет собой сценарий, который будет выполняться после входа в систему, но до «возвращение контроля».

Есть еще одна вещь, связанная с этим решением. Если скрипт, который будет выполняться с параметром command, выведет что-нибудь, это сломает многие инструменты (возможно, и IDE). Такие инструменты часто ожидают на выходе того, что делает вызванный инструмент. Обработка такого вывода не удалась, а затем то, что выводит скрипт command.

Простое решение — использовать tail. Но недостатком этого является то, что вы теряете «прогресс». Длительная операция будет выглядеть как зависание, а потом выводить все одним выстрелом. Кроме того, в некоторых случаях это просто не работает (например, выполнение git clone --progress через SSH на Tortoise Git завершится ошибкой, если скрипт command что-нибудь выведет).

person Adam Badura    schedule 10.09.2013