2009-03-02 2 views
8

내 Windows 컴퓨터에서 개발 작업을하고 있지만 원격 Linux 컴퓨터에서는 컴파일 중입니다. 현재 Windows에서 X 서버를 시작하고 Linux 컴퓨터에서 ssh를 실행 한 다음 원격으로 개발합니다.원격 프로그래밍

내가하고 싶은 것은 Windows 컴퓨터에서 내 소스를 편집하고 저장할 때 파일을 Linux 시스템에 자동으로 복사하는 것입니다. 또한 원격 시스템에서 빌드를 수행하기 위해 내장 된 컴파일 명령을 사용하고 싶습니다.

차이가 나는 경우 소스는 모두 GCC를 사용하여 C로 표시됩니다. 선호도가 내림차순으로, 나는 바탕 화면에 Emacs, Vi, Netbeans을 가지고 있으며 마지막으로 다른 IDE를 설치하려고합니다.

답변

13

하나의 옵션은 이맥스 (22)와 새에 내장 된 TRAMP 원격 편집 패키지를 (사용하는 것입니다 ... 당신에게 오류를 보내, 구축, 테스트를 실행할 수 있으며, 이전 버전에 설치할 수 있습니다). 파일을 저장할 때마다 Emacs는 ssh를 통해 내용을 전송합니다 (기본적으로 모든 세부 사항은 완전히 구성 가능합니다). M-x compileM-x grep과 같은 명령은 TRAMP를 인식하고 원격 호스트에서 실행됩니다.

0

한 가지 해결 방법은 파일의 타임 스탬프가 변경되었는지 확인하는 일종의 폴링 앱을 사용하는 것일 수 있습니다. 그런 다음 저장하고 컴파일하면됩니다. 이런 식으로 해킹하지만 실용적 일 것입니다.

6

환경에 대한 지속적인 통합을 검토합니다. 이렇게하면 소스 컨트롤에 변경 사항을 적용하고 Linux 상자를 빌드 서버로 사용할 수 있습니다. 빌드와 관련하여 테스트를 수행하고 관련 재미있는 작업을 수행 할 수 있습니다.

업데이트 1 : 또한이 당신을 위해 일 수 있습니다 http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html를 (그것도 가치가 비슷한 도구에 대한 몇 가지 검색을 수행 시도)

+0

하지만 빌드 체크 인에 의존하지 않으; 체크인하기 전에 먼저 빌드를하고 싶습니다. –

2

당신은 삼바를 사용하여 리눅스와 윈도우 시스템간에 디스크를 공유하는 시도 할 수 또는 그런 식으로. 그런 다음 로컬 시스템에서 편집 할 수 있으며 드라이브는 두 시스템 모두에서 볼 수 있으므로 원격 시스템에서 즉시 볼 수 있습니다.

나는 모든 Linux 컴퓨터와 Windows 컴퓨터에서 액세스 할 수있는 NFS의 모든 파일을 가지고 있습니다. 대기업에서 일하면서 IT가 나에게서 추상화 되었기 때문에이를 설정하는 것이 얼마나 어려운지 알 수 없지만 간단한 디스크 공유는 매우 간단해야합니다.

1

samba 공유를 사용하여 파일을 원격 시스템에 직접 저장할 수 있습니까? 저는 종종 PHP를 이렇게합니다.

그런 다음 원격 상자에서 명령을 실행하기 위해 퍼티 창이 열려 있어야합니다.

아니면 뭔가 빠졌습니까?

2

Windows에서 X 서버를 시작하는 이유는 무엇입니까? 개인적으로 필자는 VMware VMVM 또는 원하는 VM 기술 (VMware는 무료이며 잘 작동 함)을 사용하여 Linux VM을 설정합니다. 그런 다음 원하는 Linux 배포판을 선택하십시오. 매우 기본적인 기능 만 필요합니다. 대부분 표준 "도구 체인"입니다. Centos, Ubuntu, Fedora, Debian을 선택할 수 있습니다. 나는 보통 Centos 또는 Debian을 사용합니다. 그것을 설정하고 퍼티를 VM에 사용하십시오. 거기에서 scp 파일을 원격 서버로 보낼 수 있습니다. 이런 식으로 cygwin 또는 X 서버 또는 그 중 어떤 것을 사용하지 않아도됩니다.

5

다른 사람은 SAMBA를 제안했는데, 이는 리눅스 박스에서 가능하지 않을 수 있습니다. 좋은 대안은 Windows 박스에 Dokan SSHFS을 사용하여 SSH를 통해 원격 디렉토리를 마운트하는 것입니다.

24

이것은 확실히 vim에서 가능합니다. vim 내에서 scp : // 프로토콜을 사용하여 원격 파일을 편집하고 로컬 복사본을 작성하는 명령을 설정할 수 있습니다. vim이 사용하는 프로그램을 변경할 수도 있습니다 : make를 사용하여 서버에서 ssh 만들기를 수행하십시오.

계속 힘들이지 않게 ssh 키를 설정해야합니다 (그렇지 않으면 항상 비밀번호를 입력하게됩니다).하지만 상당히 쉽습니다.

또 다른 대안은 원격으로 편집하는 대신 make 명령의 일부로 원격 저장소에 푸시하는 것입니다.


편집 :

첫째, 정력 내에서 scp:// 프로토콜을 사용하여. :help netrw-start에서 (또는 :help scp에서 페이지 아래)

Netrw이 URL을 를 (참조 | netrw 투명 |)를 사용하여 다른 컴퓨터에있는 파일의 "투명"편집을 지원합니다. 예를 들어 다른 컴퓨터에 계정이 있다고 가정 해 보겠습니다. scp를 사용할 수 있다면 다음을 시도하십시오 :

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

ssh/scp를 사용하기 쉽게 만드시겠습니까? 체크 아웃 | netrw-ssh-hack |!

당신은 또한 당신이 정상적인 경로를 사용할 수 있다는 것을 정말 어디 :edit 명령에 scp:// 경로를 사용하거나 할 수 있습니다. :help netrw-ssh-hack 언급에서

그리고, 당신의 SSH 키 설정하는 방법에 대한 지침 :

개선 브라우징 *의 netrw-listhack * * netrw-SSH-해킹 * {{{2

을 특히 원격 디렉토리 브라우저를 사용하면 비밀번호 을 계속 입력하는 것은 지루합니다. 리눅스/유닉스 시스템의

,이 책은 "리눅스 서버 해킹 - 100 산업용 강도 팁 & 도구"롭 Flickenger에 의해 (오라일리, ISBN 0-596-00461-3)이없는 설정에 대한 팁 을 제공합니다 -password ssh 및 scp 및 관련 보안에 대해 설명합니다. 문제. 이전에는 http://hacks.oreilly.com/pub/h/66, 에 있었지만 그 주소는 현재 일부 "hackzine"으로 리디렉션되고 있습니다. 나는 그 기사와 벤 슈미트에서 통신을 기반으로 요약을 시도 할 수 있습니다 :

(1) 로컬 컴퓨터 (ssh 클라이언트)에 공개/개인 키 쌍을 생성합니다

ssh-keygen -t rsa 

(~/.ssh/id_rsa에 파일을 저장하라는 메시지가 표시됩니다.)

(2) 암호문을 묻는 메시지가 나타나면 암호 문구를 입력하십시오. 암호를 사용하는 경우 ssh-agent도 사용해야하므로 세션 당 암호를 한 번만 입력하면됩니다. 암호를 사용하지 않는 경우 로컬 컴퓨터에 로그온하거나 키 파일에 액세스하는 것만으로도 으로 로그인 할 수있는 키가있는 모든 ssh 서버에 액세스 할 수 있습니다.

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

(4) 대상 시스템에서 (ssh 서버) :

(3)이 두 개의 파일을 생성

cd 
mkdir -p .ssh 
chmod 0700 .ssh 

(5) 로컬 시스템 (ssh 클라이언트)에서 : OpenSSH의 대 (한 줄)

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

또는, (한 줄)

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

당신은

ssh {serverhostname} 

그것을 밖으로 테스트 할 수 있습니다 당신은 더 아무 것도 입력 할 필요없이 서버 컴퓨터에 로그온해야합니다.

당신이 암호를 사용하기로 결정하는 경우

는 수행

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

SSH를-추가 사용할 때 키 암호를 입력하라는 메시지가 표시됩니다,하지만 이후 당신은 SSH를 사용하는 경우. 정력에 사용하기 위해, 당신은

ssh-agent vim 

을 사용할 수 있으며, 경우 다음 정력 내에서,

:!ssh-add 

또는 사용, 당신의 정력을 실행 에 당신이 계획하고있는 터미널에 SSH 에이전트를 적용 할 수 있습니다 :

ssh-agent xterm & 

필요하면 언제든지 ssh-add를 수행하십시오.

Windows의 경우 vim 메일 링리스트에있는 사람들은 Pageant가 에 암호를 입력해야하는 필요성을 피하면서 도움이된다고 언급했습니다.

킹스톤 봉이 암호를 입력 할 필요가 지속적으로 방지하기 위해 다른 방법에 대해 쓴 : SCP의 암호 매번 입력 할 필요가 없도록하기 위해

을, 당신의 문서에 해킹을 제공 비밀 번호가 아닌 ssh 계정을 설정하십시오. 더 좋은 방법은 : 암호를 입력 할 필요없이 암호를 사용하여 자료에 액세스하는 일반 ssh 계정을 사용할 수 있습니다. 보안과 편리함에 좋습니다. 나는 이것을 구현하는 ssh 공개 키 인증 + ssh-agent를 시도해 보았다.여기에 지침이 개 링크입니다 :

원격 시스템에 결정을 위해, 당신은 ssh를 메이크업을 에 makeprg 변수를 설정해야합니다. :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의 man 페이지를'scp '에 복사 해줘서 고마워.하지만 그 사람이 필요로하는 것은 아니야. 그는 모든 파일에 대해 그렇게해야 할 것입니다. 전체 프로젝트에서 원격으로 작업하는 방법에 대한 아이디어가 있습니까? –

+0

adrien-giboire : 글쎄, 개인적으로, 나는 기계에 ssh하고, tmux 나 스크린을 작동시키고, 그런 식으로 원격으로 작업한다. 그러나 질문자는 구체적으로 현지에서 개발하고 싶다고 말했습니다. 게다가 'scp : //'접두사를 사용하여 vim에서 원격 디렉토리를로드 할 수 있으며, 파일 뷰어를 사용하여 작업 할 대상을 선택할 수 있습니다. 쉬워요. – rampion

1

소스 제어 시스템을 설정하고 사용하십시오. 그런 다음 IDE에 저장 한 후 커밋 할 수 있으며 서버에서는 커밋 중에 어떤 일이 발생할 수 있습니다.

0

나는 개인적으로 XMingPuTTY을 사용합니다. XMing이 실행되는 동안 PuTTY를 사용하여 ssh를 실행합니다. 어떤 편집기 (gvim, emacs, gedit 등)도 열어 볼 수 있습니다.

당신은 비록 퍼티에 대한 몇 가지 설정을 수행해야합니다

  • 체크인 X11에 SSH를
  • 클릭을 확장

    1. 확장 연결
    2. 하여 텍스트에서
    3. "X11 포워딩을 사용" 입력란에 따옴표없이 "localhost : 0"을 입력하십시오.
    4. 세션을 저장하고 연결하십시오.