2009-03-02 2 views
8

Я занимаюсь разработкой своей машины под Windows, но компилирую ее на удаленную машину Linux. В настоящее время я запускаю X-сервер на Windows, ssh в машину Linux, а затем удаляю разработку.Удаленное программирование

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

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

ответ

13

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

0

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

6

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

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

+0

Но я не хочу зависеть от чеков для сборки; Я хочу сначала создать, чтобы убедиться, что это хорошо до регистрации. –

2

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

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

1

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

Затем просто запустите окно шпатлевки для запуска команд на удаленной коробке.

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

2

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

5

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

24

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

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

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


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

Во-первых, с использованием протокола scp:// в пределах Vim. Из :help netrw-start (или вниз страниц из :help scp)

Netrw поддерживает "прозрачное" редактирование файлов на других машинах, используя URLs (см | netrw прозрачных |). В качестве примера предположим, что у вас есть учетная запись на другой машине; если вы можете использовать scp, попробуйте:

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

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

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

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

ПОВЫШЕНИЕ ОБЗОР * netrw-listhack * * netrw-SSH-хак * {{{2

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

Для систем Linux/Unix, книга "Linux Server Hacks - 100 промышленных прочность советы & инструменты" Роб Flickenger (O'Reilly, ISBN 0-596-00461-3) дает подсказку для настройки нет -password ssh и scp и обсуждает связанные с ними проблемы безопасности . Раньше он был доступен по адресу http://hacks.oreilly.com/pub/h/66, , но, видимо, этот адрес теперь перенаправляется на какой-то «хакзин». я попытка резюме на основе этой статьи и на связи с Бен Шмидт:

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

ssh-keygen -t rsa 

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

(2) Просто нажмите, когда вас попросят ввести парольную фразу (дважды) для no passphrase. Если вы используете кодовую фразу, вам также нужно будет использовать ssh-агент , поэтому вам нужно только ввести парольную фразу один раз за сеанс. Если вы не используете кодовую фразу, просто войти на ваш локальный компьютер или получить доступ к ключевому файлу каким-либо образом будет достаточно для доступа к любым серверам 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} 

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

ssh-agent vim 

и, когда в следующий раз в Vim, используйте

:!ssh-add 

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

ssh-agent xterm & 

и делать ssh-add, когда вам нужно.

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

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

Для того, чтобы избежать необходимости ввести пароль для УПП каждый раз, когда вы обеспечить хак в Документах настройте учетную запись без пароля ssh. Я нашел лучший способ сделать это: я могу использовать обычную учетную запись ssh, которая использует пароль для доступа к материалу без необходимости вводить пароль каждый раз. Это хорошо для безопасности и удобства. Я попробовал открытый ключ ssh авторизация + ssh-agent, реализующий это, и он работает!Вот два ссылки с инструкциями:

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

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

Обратите внимание, что символ '|' должен быть экранирован дважды: один раз для «: set» и один раз для интерпретация команды. При использовании фильтра под названием «MyFilter» сделать это следующим образом:

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

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

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

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

+0

Мне бы хотелось узнать подробности об использовании протокола scp: //. Может быть полезно включить указатель на инструкции ssh-keys. – dreeves

+0

Спасибо за копию страницы пользователя Vim на 'scp', но это не то, что нужно парню. Он должен был сделать это для всех своих файлов. Любая идея о том, как работать удаленно по всему проекту? –

+0

adrien-giboire: ну, лично, я бы просто ssh на машине, запустил tmux или экран и работал удаленно таким образом. Но спрашивающий сказал, что они хотят развиваться на местном уровне. Кроме того, вы можете использовать префикс 'scp: //' для загрузки удаленного каталога в vim и просто использовать средство просмотра файлов, чтобы выбрать, с чем вы хотите работать. Очень просто. – rampion

1

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

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

0

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

Вам нужно будет сделать некоторые настройки на PuTTY, хотя:

  1. Expand Подключение
  2. Expand SSH
  3. Нажмите на X11
  4. флажок "Enable X11 Forwarding"
  5. В тексте поле для отображения, введите (без кавычек): «localhost: 0»
  6. Сохраните сеанс и подключитесь.
Смежные вопросы