Вопрос

Я занимаюсь разработкой на своем компьютере с Windows, а компилирую на удаленном компьютере с Linux.Сейчас я запускаю X-сервер в Windows, подключаюсь по SSH к машине с Linux, а затем выполняю разработку удаленно.

Что я хотел бы сделать, так это отредактировать свой исходный код на компьютере с Windows и сделать так, чтобы он автоматически копировал файлы в систему Linux при сохранении.Я также хотел бы, чтобы мои встроенные команды компиляции выполняли сборку в удаленной системе.

Если это имеет значение, исходный код полностью написан на C с использованием GCC.В порядке убывания предпочтений у меня на рабочем столе установлены Emacs, Vi и Netbeans, и я готов установить еще одну IDE в крайнем случае.

Это было полезно?

Решение

Один из вариантов — использовать БРОДЯГА пакет удаленного редактирования (встроен в Emacs 22 и новее, его можно установить в более старые версии).Каждый раз, когда вы сохраняете файл, Emacs отправляет его содержимое по ssh (по умолчанию;конечно, каждая деталь полностью настраивается) на машине с Linux.Такие команды, как M-x compile и M-x grep поддерживают TRAMP и выполняются на удаленном хосте.

Другие советы

Это, безусловно, выполнимо в vim.Вы можете использовать протокол scp:// в vim для редактирования удаленных файлов и настроить команду, которая записывает локальную копию.Вы также можете изменить программу, которую vim использует для :make, чтобы вместо этого она выполняла ssh make на вашем сервере.

Вам нужно будет настроить ssh-ключи, чтобы это было безболезненно (иначе вам придется постоянно вводить пароль), но это довольно просто.

Другой альтернативой может быть отправка в удаленные репозитории как часть команды make вместо удаленного редактирования.


РЕДАКТИРОВАТЬ:

Во-первых, используя scp:// протокол внутри vim.От :help netrw-start (или вниз по странице с :help scp)

NetRW поддерживает «прозрачное» редактирование файлов на других машинах с использованием URL-адресов (см. | NetRW-Transparent |).В качестве примера этого, давайте предположим, что у вас есть учетная запись на какой -то другой машине;если вы можете использовать scp, попробуйте:

vim scp://hostname/path/to/file

Хотите упростить использование ssh/scp?Проверьте |netrw-ssh-hack|!

Вы также можете использовать scp:// пути в :edit команды или где угодно, где вы могли бы использовать обычный путь.

И из упомянутого :help netrw-ssh-hack, инструкции по настройке ключей SSH:

УЛУЧШЕНИЕ ПРОСМОТРА *netrw-listhack* *netrw-ssh-hack* {{{2

Особенно с браузером удаленного каталога, постоянное вход в пароль утомительно.

Для систем Linux/Unix книга «Hacks Linux Server-100 советов по промышленности и инструментам» от Rob Flickengen Обсуждает связанные вопросы безопасности.Раньше он был доступен на http://hacks.oreilly.com/pub/h/66 , но, очевидно, этот адрес сейчас перенаправляется на какой -то «хакзин».Я попробую резюме на основе этой статьи и на общении от Бена Шмидта:

(1) Сгенерировать публичную/частную пару ключей на локальной машине (клиент SSH):

  ssh-keygen -t rsa

(сохранение файла в ~/.ssh/id_rsa по запросу)

(2) Просто нажмите, когда попросят фразу (дважды) без пассис.Если вы используете PassFrase, вам также нужно будет использовать SSH-AGENT, чтобы вам нужно было набрать фразу PassFrase только один раз за сеанс.Если вы не используете PassFrase, просто входите на локальный компьютер или получите доступ к файлу ключа, будет достаточно, чтобы получить доступ к любым SSH -серверам, которые имеют этот ключ, авторизованный для входа в систему.

(3) При этом создаются два файла:

  ~/.ssh/id\_rsa
  ~/.ssh/id\_rsa.pub

(4) На целевой машине (ssh-сервере):

 cd
 mkdir -p .ssh
 chmod 0700 .ssh

(5) На вашем локальном компьютере (ssh-клиент):(одна линия)

 ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys2' < ~/.ssh/id_rsa.pub

или, для OpenSSH, (одна строка)

 ssh {serverhostname} cat '>>' '~/.ssh/authorized\_keys' < ~/.ssh/id_rsa.pub

Вы можете проверить это с помощью

 ssh {serverhostname}

И вы должны войти на серверную машину, не нуждаясь в том, чтобы что -либо набрать.

Если вы решили использовать парольную фразу, выполните следующие действия:

 ssh-agent $SHELL
 ssh-add
 ssh {serverhostname}

Вам будет предложено для вашего ключа PassFrase, когда вы используете SSH-ADD, но не впоследствии при использовании SSH.Для использования с vim вы можете использовать

 ssh-agent vim

и в следующий раз в vim используйте

 :!ssh-add

В качестве альтернативы, вы можете применить SSH-Agent к терминалу, который вы планируете запустить Vim в:

 ssh-agent xterm &

и делайте ssh-add всякий раз, когда вам нужно.

Для Windows люди в списке рассылки VIM упомянули, что конкурс помогает избежать постоянной необходимости ввести пароль.

Kingston Fung написал о другом способе избежать постоянного ввода паролей:

Чтобы избежать необходимости вводить пароль для SCP каждый раз, вы предоставляете взлом в документах для настройки учетной записи SSH не пароль.Я нашел лучший способ сделать это:Я могу использовать обычную учетную запись SSH, которая использует пароль для доступа к материалу без необходимости каждый раз внедрять пароль.Это хорошо для безопасности и удобства.Я попробовал SSH Public Key Authorization + SSH-AGENT, реализуя это, и это работает!Вот две ссылки с инструкциями:

Для работы в удаленных системах вам необходимо настроить makeprg переменная, чтобы сделать SSH Make.От :help makeprg

Программа, используемая для команды «:make».См. |:make_makeprg|.Эта опция может содержать символы «%» и «#», которые расширяются до текущего и альтернативного имени файла.|: _%| |: _#| Переменные среды расширены |: set_env |.Смотрите | Опция Backslash | о включении пробелов и обратной ссоры.

Обратите внимание, что '|' ' Должен быть сбежал дважды:один раз для ": set" и один раз для интерпретации команды.Когда вы используете фильтр под названием «Myfilter», сделайте это так:

 :set makeprg=gmake\ \\\|\ myfilter

Заполнитель "$*" может быть дана (даже несколько раз), чтобы указать, где будут включены аргументы, например:

 :set makeprg=latex\ \\\\nonstopmode\ \\\\input\\{$*}

Эта опция не может быть установлена ​​из | модели | или в песочнице |, по соображениям безопасности.

Я бы рассмотрел возможность непрерывной интеграции для вашей среды.Таким образом, вы можете зафиксировать изменения в системе управления версиями и заставить Linux действовать как сервер сборки.Вы можете иметь связанные тесты и другие интересные вещи, которые вы хотите запускать в сборках.

Обновление 1: Также это может сработать для вас: http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html (также стоит попробовать поискать похожие инструменты)

Другие предложили SAMBA, что может быть невозможно на вашем компьютере с Linux.Хорошей альтернативой является использование Докан СШФС на вашем компьютере с Windows, чтобы смонтировать удаленный каталог через SSH.

Вы можете попробовать совместно использовать диск между вашими компьютерами с Linux и Windows, используя Samba или что-то в этом роде.Тогда вы сможете редактировать на своих локальных компьютерах, и файлы будут сразу же видны на удаленном компьютере, поскольку диск будет виден обоим.

Там, где я работаю, все файлы хранятся в NFS, доступ к которому возможен со всех компьютеров с Linux и Windows.Я не знаю, насколько сложно это настроить, поскольку я работаю в крупной корпорации и ИТ-отдел от меня абстрагирован, но простой общий доступ к диску должен быть довольно простым.

Почему вы запускаете X-сервер в Windows?Лично я бы установил виртуальную машину Linux с VMware или любой другой вашей любимой технологией виртуальных машин (VMware бесплатна и работает хорошо).Затем выберите любой дистрибутив Linux, который вам нужен.Вам просто нужны очень основные функции, в основном стандартные «инструментальные инструменты». Вы можете выбрать Centos, Ubuntu, Fedora, Debian, что угодно.Обычно я использую Centos или Debian.Настройте его и просто используйте PuTTY в своей виртуальной машине.Оттуда вы можете переносить файлы на удаленный сервер и так далее.Таким образом, вам не придется беспокоиться о Cygwin, X-сервере или чем-то подобном.

Можете ли вы просто использовать общий ресурс Samba для сохранения файлов непосредственно на удаленном компьютере?Я часто использую PHP таким образом.

Затем просто откройте окно putty для запуска команд на удаленном компьютере.

Или я что-то упускаю?

Установите систему контроля версий и используйте ее.Затем вы можете просто сделать фиксацию после сохранения в своей IDE, и на сервере что-то произойдет при фиксации.

Это может вызвать тестирование, сборку, отправку вам сообщений об ошибках...

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

Я лично использую XMing с Шпатлевка.Я использую PuTTY по SSH во время работы XMing.Я могу открыть любой редактор (gvim, emacs, gedit и т. д.), и он появится.

Однако вам нужно будет выполнить некоторые настройки PuTTY:

  1. Развернуть соединение
  2. Развернуть SSH
  3. Нажмите на X11
  4. Установите флажок «Включить переадресацию X11».
  5. В текстовом поле местоположения отображения введите (без кавычек):"локальный хост: 0"
  6. Сохраните сеанс и подключитесь.
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top