2009-03-02 9 views
8

自分のWindowsマシンで開発作業をしていますが、リモートLinuxマシンでコンパイルしています。私が現在行っていることは、Windows上でXサーバを起動し、Linuxマシンにsshをインストールしてから、リモートで開発を行うことです。遠隔プログラミング

私がしたいことは、Windowsマシン上で自分のソースを編集し、保存時に自動的にファイルをLinuxシステムにコピーすることです。また、リモートシステムでビルドを実行するための組み込みのコンパイルコマンドが必要です。

GCCを使用すると、ソースはすべてC言語で表示されます。環境設定の降順に、Emacs、Vi、Netbeansがデスクトップにあり、最後の手段として別のIDEをインストールします。

答えて

13

一つのオプションは、Emacsの22およびそれ以降に組み込まれてTRAMPリモート編集パッケージを(使用することです...あなたにすべてのエラーを郵送し、構築、テストをトリガすることができ、あなたが古いバージョンにそれをインストールすることができます)。ファイルを保存するたびに、Emacsはsshを介してその内容を送信します(デフォルトではもちろん、すべての詳細は完全に設定可能です)。 M-x compileおよびM-x grepのようなコマンドは、TRAMP対応であり、リモートホスト上で実行されます。

0

解決策の1つとして、ファイルのタイムスタンプをチェックして変更されているかどうかを確認するポーリングアプリケーションがあります。彼らがそれを保存してからコンパイルするのであれば。こんにちは、この方法でハックしますが、それは実行可能です。

6

あなたの環境に継続的な統合を検討します。こうすることで、ソース管理に変更をコミットし、linuxボックスをビルドサーバーとして動作させることができます。関連するテストや関連する興味深いものをビルドで実行することができます。

アップデート1:また、これはあなたのために働くかもしれない:http://metamod-p.sourceforge.net/cross-compiling.on.windows.for.linux.html(それはまた、同様のツールをいくつかの検索を行う試してみる価値がある)

+0

しかし、私はビルドのためにチェックインに依存したくありません。チェックインの前にまずそれを確認してください。 –

2

あなたがサンバを使用して、LinuxとWindowsマシン間でディスクを共有して試みることができますかそんな感じ。次に、ローカルマシン上で編集することができ、ドライブは両方に見えるので、ファイルはリモートマシン上ですぐに表示されます。

ここではすべてのLinuxマシンとWindowsマシンからアクセスできるNFS上のすべてのファイルがあります。私は大企業で働いており、ITは私から離れて抽象化されているので、それを設定することがどれほど難しいか分かりませんが、シンプルなディスク共有はかなり単純です。

1

リモートマシン上で直接ファイルを保存するためにsamba共有を使用できますか?私はしばしばPHPをこのようにします。

次に、リモートボックスでコマンドを実行するためのパテウィンドウを開いてください。

何か不足していますか?

2

WindowsでXサーバを起動するのはなぜですか?個人的には、私はVMware VMWareや、あなたのお気に入りのVMテクノロジー(VMwareは無料で、うまく動作します)を使ってLinux VMをセットアップします。次に、必要なLinuxディストリビューションを選択します。ちょうど非常に基本的な機能、ほとんどの場合標準の「ツールチェーン」が必要です。あなたはCentos、Ubuntu、Fedora、Debianなどを選ぶことができます。私は通常、CentosまたはDebianを使用します。設定し、あなたのVMにPuTTYを使用してください。そこから、scpファイルをリモートサーバーなどに送ることができます。この方法では、cygwinやXサーバ、あるいはそのいずれかを気にする必要はありません。

5

他の人があなたのLinuxボックスでは実現できないSAMBAを提案しています。良い選択肢は、WindowsのボックスにDokan SSHFSを使用して、SSH経由でリモートディレクトリをマウントすることです。

24

これは確かにvimで実行可能です。 vimでscp://プロトコルを使用してリモートファイルを編集し、ローカルコピーを作成するコマンドを設定することができます。 vimが使うプログラムを変更することもできます:makeを使ってサーバー上でssh makeを実行します。

これを無痛に保つためにsshキーを設定する必要があります(それ以外の場合は常にパスワードを入力します)が、それはかなり簡単です。

もう1つの方法は、リモートで編集するのではなく、makeコマンドの一部としてリモートreposにプッシュする方法です。


EDIT:

まず、VIM内scp://プロトコルを使用。 :help netrw-startから(または:help scpからページダウン)

netrwのは、URLの を(参照| netrwの透明|)を使用して、他のマシン上のファイルの「透明」の編集をサポートしています。たとえば、他のマシンに アカウントがあるとします。 scpを使用することができます:

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

ssh/scpを使いやすくしたいですか? netrw-ssh-hack |をチェックしてください!

また、あなたは、通常のパスを使用することができることを本当にどこにでも:editコマンドでscp://パスを使用するか、またはすることができます。

そして、あなたのSSHキーを設定する方法について述べた:help netrw-ssh-hack、指示から:

向上ブラウジング* netrwの-listhack * * netrwの-SSH-ハック* {{{2

特に、リモートディレクトリブラウザでは、常にパスワード を入力するのは面倒です。 Linux/Unixシステムの場合

、書籍「Linuxサーバのハッキング - 100工業用強度 ヒント&ツール」ロブFlickenger(オライリー、ISBN 0-596-00461-3)によっては、無設定するためのヒントを与える -password sshとscpを実行し、関連するセキュリティについて説明します issue。以前はhttp://hacks.oreilly.com/pub/h/66、 で利用可能でしたが、明らかにそのアドレスはいくつかの "hackzine"にリダイレクトされています。 私はその記事にして ベン・シュミットからの通信に基づいて要約を試みます:

(1)ローカルマシン (sshクライアント)上の公開鍵/秘密鍵のペアを生成します。

ssh-keygen -t rsa 

(プロンプトで〜/ .ssh/id_rsaにファイルを保存)

(2)パスフレーズ( パスフレーズがない場合は、パスフレーズを使用する場合は、 ssh-agentも使用する必要があります。そのため、セッションごとにパスフレーズを1回入力するだけで済みます。 パスフレーズを使用しない場合は、ローカルの コンピュータにログインするか、またはキーファイルへのアクセス権を得るだけで、 であればログイン用の鍵を持つsshサーバにアクセスできます。

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

(4)ターゲットマシン上で(SSHサーバー):

(3)これは、2つのファイルを作成

cd 
mkdir -p .ssh 
chmod 0700 .ssh 

(5)ローカルマシン(sshクライアント)の場合: (1行)

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

または、OpenSSHのための、(1行)

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

あなたは

ssh {serverhostname} 

でそれをテストすることができますし、さらに 何も入力する必要がなく、サーバー・マシンにログオンする必要があります。

あなたはパスフレーズを使用することを決定した場合は、操作を行います。

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

sshを使用するときに、その後のssh-追加ではなく を使用するときは、あなたの鍵のパスフレーズの入力を求められます。 vimので使用する場合、あなたは次のvimの内、また

:!ssh-add 

を使用

ssh-agent vim 

とを、使用することができ、あなたがでVimを実行している を計画している端末へのssh-agentを適用することができます:

ssh-agent xterm & 

必要に応じていつでも追加できます。

Windowsの場合、vimメーリングリストの人々は、Pageantがパスワードを入力する必要性を避けて を助けると述べています。

キングストンフォンは常に パスワード入力する必要を避けるために別の方法について書いた:SCPのためのパスワードを毎回入力する必要性を避けるために

を、あなたがするドキュメントにハックを提供 パスワード以外のsshアカウントを設定します。 より良い方法を見つけました:パスワード を毎回入力せずに パスワードを使用して資料にアクセスする通常のsshアカウントを使用できます。セキュリティと利便性に優れています。私はssh公開鍵 の認証+ ssh-agentを試してみました。ここでは説明を持つ2つの リンクです:

リモートシステム上で行うためには、あなたは、SSHメイクを行う にごmakeprg変数を設定する必要があります。 〜から::help makeprg

":make"コマンドに使用するプログラム。 |:make_makeprg |を参照してください。 このオプションには、 '%'と '#'文字を含めることができ、現在のファイル名と代替ファイル名である に展開されます。 |:_%| |:_#| 環境変数は|:set_env |展開されています。参照|オプション - バックスラッシュ| にはスペースとバックスラッシュを含めてください。

「 '|」は、 2回エスケープする必要があります:1回は ":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など)を開くことができ、それが表示されます。

あなたはしかし、PuTTYの上のいくつかのセットアップを実行する必要があります。

  1. は、テキストでは、 "有効にX11フォワーディング"
  2. をチェックX11
  3. にSSH
  4. クリックを展開して接続
  5. を展開フィールドを表示する場所を入力する(引用符なし): "localhost:0"
  6. セッションを保存して接続します。
関連する問題