web-dev-qa-db-ja.com

WindowsからのLinux開発に最適なセットアップ?

WindowsワークステーションからLinuxアプリを開発するための最良のセットアップは何ですか?現在、SSH経由でLinux開発サーバーに接続しており、Eclipseを使用して、PuTTY経由でSSH経由で、Windowsワークステーションで実行されているパブリックドメインバージョンのXmingに転送しています。それは機能しますが、それは素晴らしいことではありません。 Eclipseの応答時間はそれほど速くなく(非常に遅いWindowsワークステーションでネイティブに実行されているEclipseよりも著しく悪い)、一部のダイアログボックスのサイズを変更できず、フォントを再構成するための適切な方法がわかりません。

より良いセットアップが利用できますか?

編集:これはC/C++開発用です。

27
Josh Kelley

Linux on Windowsのオプション:

ツールのみ

Eclipseを使用している場合、完全なIDEが必要であると想定しますが、GNU/Linuxツールだけでうまくいく場合は、いくつかの選択肢があります。

  • cygwin は、X11サーバーを含む多くのツールを備えたbashシェルを提供します。これはしばらく前からあり、成熟しています。
  • msys は、cygwinの小型で軽量な代替手段です。
  • Win32用のGNUユーティリティ はもう1つの軽量な代替手段です。これらはツールのネイティブバージョンであり、Linux上で実行されていると思わせるためにツールを偽造するためにcygwin DLL)を必要とするcygwinとは対照的です。

WindowsプロセスのLinux

仮想化のようにPC全体をシミュレートせずに、LinuxをWindowsプロセスとして実行するパッケージがいくつかあります。彼らは Cooperative Linux 、別名coLinuxを使用します。これは32ビットシステムに制限されています。これらには仮想化のオーバーヘッドがなく、仮想PCを起動していないため、起動が速くなります。これは実験的な側面であり、一部の仮想化オプションほど安定していない可能性があります。

仮想化

仮想化ソフトウェアを使用すると、ホストOSとハードウェアを共有する仮想PCで別のOSを起動できます。これはかなり実証済みです。ここには、特定の状態でVirtual PCのスナップショットを作成したり、Virtual PCを一時停止/再開したりするための優れたオプションがあります。仮想PCを試して、いくつかのパッケージを追加してから、前のスナップショットに戻して、 「クリーンスタート」。

私の場合...

ご使用の環境にはさまざまなパフォーマンス特性があるようですが、私の状況は次のとおりです。WindowsラップトップでEclipseを使用して開始し(Rails開発)、これが遅いことに気付き、PuTTYを使用してSSH接続するように切り替えました。高速なLinuxボックス。Xmingを使用してWindowsに表示されるLinuxサーバーで実行されているemacsを介して編集を行います。または、Windowsでネイティブemacsを使用して、NFSを介して共有されるファイルを編集します。後者は保存が遅いため環境内で遅くなります。 。

自宅で仕事をしているときは、リモートクライアントでは遅すぎるためXを捨て、PuTTYウィンドウ内でemacs -nwを実行するだけです。次に、GNU screenを使用して、複数の「ウィンドウ」を作成し、ネットワーク接続が途絶えた場合に中断したところから簡単に再開できるようにします。

27
Pete TerMaat

私が見つけた最善のアプローチは次のとおりです。

  1. コードを移植可能に保つ
  2. デスクトップでネイティブに開発する
  3. oSの依存関係を確認します(これらを可能な限り最小化します)
  4. ターゲットに定期的にデプロイし、そこでテストとデバッグを行います

これが直接的な答えではないことは知っていますが、Xを介した開発にIDEを使用することは、ほとんどの無料ツールでは苦痛です。私がこの方法で仕事をするために生産的に行ってきた唯一の方法はデスクトップでUNIXライクを実行していたので、Xはネイティブでした。このアプローチを使用する場合は、デスクトップで商用Xソリューションを試してください。

それ以外は、IDEを捨てて、SSH、ターミナルエディター(vi、pico、ee、emacsなど)、make/ant、gdbを介して開発とデバッグを行うことを検討してください。

あなたにとって最良のアプローチは、あなたのプログラミング言語とあなたが開発しているアプリケーションのタイプによって動かされるでしょう。 GUIアプリケーションを実行している場合は、Xを使用することが許容できる唯一のアプローチである可能性があります。バックオフィス/デーモン開発を行っている場合は、SSHとターミナルのアプローチがおそらく機能しますが、viまたはemacsのいずれかを本当に快適に使いたいと思うでしょう。

[〜#〜] edit [〜#〜]:C/C++開発を行っていることに気づきました。まだ使用していない場合は、クロスプラットフォームフレームワークの使用を検討してください。 Qt[〜#〜] apr [〜#〜][〜#〜] ace [〜#〜] 、または Poco Linux環境へのデプロイ/デバッグ手順を使用して、Windowsでネイティブに開発できるようにする必要があります。

9
D.Shawley

セットアップが簡単なオプションは、EclipseをWindowsでネイティブに実行することですが、Linuxマシン(別のドライブとしてマウントできます)(またはSMB)の場合はSSH/SCP)にSamba共有を介してコードをデプロイしますオプションではありません)、SSHコンソールを介してそこで実行します。

セットアップが簡単なもう1つのオプションは、本格的なXセッションの代わりに freenx または同様のツールを使用して、Linuxで開発することです。次の回答を確認してください。 https://serverfault.com/questions/ 11367/remote-desktopping-from-windows-to-linux/11372#11372

他のオプション(仮想化、Windows内で実行されるLinux、Cygwin)は確かに有効ですが、マシンの負荷が高い、セットアップが難しい、実際のLinux環境と同等ではないなどの欠点がありますが、あなたはマシンを持っていて、シナリオはそれらの使用を正当化します。

お使いのマシンがWindowsの場合、Linux側ですべてを実行すると、常にいくつかの欠点があります。

私は個人的に、他のすべての人がWindowsを持っていてVM内でWindows開発を行うLinuxボックスを持っていますが、それは私に多くのRAMといくつかのネットワークセットアップの苦痛を要しました。

7
Vinko Vrsalovic

開発には、通常、WindowsボックスでLinux仮想マシンを使用します。 Linuxユーザーをバスルームに走らせて手を洗うことになるでしょうが、私はすべての開発をVisual Studioで行い、仮想マシンを介してG ++を呼び出し、出力をVS出力ウィンドウにパイプするカスタムVisualStudioプラグインを持っています。 。コンボボックスをすばやく変更するだけで、WindowsまたはLinux用にビルドしてテストできます。

7
Gerald

coLinux Windows for Linuxで開発する場合、非常に役立ちます。基本的には、Windows OSと並行して(つまりサービスとして)実行されるLinuxシステムであり、基本的にLANに表示されるように構成できます。仮想マシンのように。また、CygWinよりもはるかにフル機能であり、そのパフォーマンスは非常に優れています。coLinuxで重要なものを簡単に実行でき、90fps以上でシミュレーターを実行できます。

また、coLinuxはX11やgnome/KDEなどのウィンドウマネージャーを実行するように簡単に設定できるため、たとえばvncなどを使用してLinuxデスクトップにアクセスできます。

Cooperative Linuxは、MicrosoftWindows上でLinuxをネイティブに最適に実行するための最初の無料のオープンソース手法です。より一般的には、Cooperative Linux(略称coLinux)は、Linuxカーネルのポートであり、単一のマシン上の別のオペレーティングシステムと協調して実行できるようにします。たとえば、VMwareなどの商用PC仮想化ソフトウェアを使用せずに、汎用PC仮想化ソフトウェアを使用するよりもはるかに最適な方法でWindows 2000/XP上でLinuxを自由に実行できます。

colinux screenshot
(ソース: colinux.org

5
none

複数の解決策があります、私はNo.1をお勧めします

  1. Vagrant のようなツールを使用できます。 Vagrantは、単一のワークフローで仮想マシン環境を構築および管理するためのツールです。使いやすいワークフローと自動化に重点を置いたVagrantは、開発環境のセットアップ時間を短縮し、本番環境の同等性を高めます。したがって、Windows PCでコーディングし、Vagrantを使用してLinuxシステムでアプリケーションをコンパイル/実行します。 Vagrantは無料です!同様のツール: Docker も使用できます。このセットアップでは、任意のIDEを使用できます。インテリセンスを備えたC/C++には非常に便利なVSCodeをお勧めしますが、Eclipseも機能するはずです。

  2. A VM(仮想マシン)Windows内のゲストオペレーティングシステムとしてLinuxのフレーバーを実行しています。無料の VirtualBox から始めてください。

  3. 廃止されたNitrous.ioのようなWebベースのツールですが、Nitrousの独自のオープンソースバージョンをホストできますIDE Nitrous Soloと呼ばれ、Nitrousの独自のインスタンスをホストできますIDEお好みのクラウドプロバイダー。

  4. Windows 10が提供するもの Windows Subsystem for Linux 、それを使用してプロジェクトをコンパイルおよび実行してみてください。これには、64ビットバージョンのWindows 10 Anniversary Update以降(ビルド1607+)が必要です。

  5. Cygwin / MinGW はWindowsで人気のあるbashツールであり、アプリケーションをコンパイルおよび/または実行できる可能性があります。

5
tymspy

Cygwin 役立つかもしれません。

4
GvS

私はあなたがやりたいことをまったく同じ理由で行いました:出力の完全な制御(現在のソリューションでフォントの問題が発生しています)とリモートLinux開発ボックスよりもはるかに遅いWindowsマシン。

ほとんどの答えは偽物です。「Linux開発環境」を持つことは、単に「IDEを持つこと」ではありません。それはあなたの指先で全体のUn * xパワーを持つことについてです。

ローカルまたはリモートのLinuxサーバーですか?帯域幅の問題? LANでは、古い100 MBit/s LANでも、FreeNX flys。そのLinuxサーバーの負荷はどうですか?

Linuxシステムに無料のFreeNXをセットアップし、Windowsマシンとbingoに無料のFreeNXクライアントをインストールすると、Linux開発環境をすぐに利用できます。

FreeNXはVNCよりもはるかに効率的です、それは夜の日です(VNCは、Windowsのリモートデスクトップと比較しても、実際にはかなり悪いパフォーマンスです...しかしFreeNXは飛ぶ)。

速度に関しては、ずっと前に、IntelliJ IDEA)を使用してフルタイムで開発していたメインのLinuxワークステーション(当時はPentium 4/2GBのメモリでした)をセットアップしました。 (別のIDE)、別の開発者がリモートで表示していた完全なXセッション(ウィンドウマネージャーなどを完備)を提供するために...別のIntelliJインスタンスを実行します(そしてすべてのUn * x機能にアクセスします)。それはLAN上にありました。 100 Mbit/sで、アプリが他の開発者にとってローカルであるかのようでした。

とにかく、今日のハードウェアでは、これがどのように機能しないか想像できません。メインデスクトップとギガビットLANとしてCore 2 Duo/4GBのRAMがあります。

このような設定は4年前は完全に機能していましたが、今日は完全に機能します。

帯域幅に問題がある、アカウントを持っているLinuxマシンに高負荷がかかっている、またはLANにない、と言った場合は、状況が異なる可能性があります...

強力なUn * xシステムを必要としている若い開発者は、私が最近相談している会社(Windowsデスクトップしかない)でどのようにそれを行っていますか?それらのほとんどは、光沢のあるMacBook Proを持ってきて、それを使って開発します;)

4
SyntaxT3rr0r

Xwin32やhummingbirdなど、Windows上の他のXサーバーを試すこともできます。これらは商用実装であることに注意してください。

別の解決策は、WindowsボックスにVMサーバーをインストールし、VMにLinuxをインストールすることです。オプションには VMware (非フリー)および Microsoft Virtual PC (無料ダウンロード)。VMwareはVirtualPCよりもはるかに優れています(64ビットサポート、LinuxクライアントOSをサポートするためのより多くのインセンティブなど)。

3
Mr Fooz

私もxmingを使用していますが、Eclipseでも同じ問題が発生します。どうやら、どちらもcygwinに切り替えても十分な速度にはなりません。最終的に私はxmingを介してvimでの開発に切り替えました。すべてのキーの組み合わせに慣れるのにそれほど時間はかからず、パフォーマンスは非常にスムーズです。実は今では、ネイティブで作業しているときでもvimを使うことがあります。

3
FireAphis

Linuxベースの開発環境を備えた仮想マシン、またはツールチェーンに依存しないIDE(Notepad ++、可能な限りMinGWまたはCygWinを介してテストを行う)のローカルコピー)、またはNotepad ++で記述し、開発マシンにアップロードしてそこでテストを続けるだけです。これが私が行っていることです。

Linuxボックスにsvnサーバーをセットアップしてから、 TeamCity のようなものを使用してコミット時にビルドを実行することを検討できます。コードをローカルに記述し、コンパイルしたいときにコミットすることができます。

1
albertjan

より現代的なルートがあるかどうかはわかりませんが、私の時代の標準的な方法は、MicrosoftWindowsでXWindowsを実行することでした。これにより、Ubuntuマシンで任意の数のアプリケーションを実行し、それらを制御してMicrosoftWindowsで表示できます。

チェック チェック アウト。

0
Kondal

Windows用のLinuxディストリビューションのいずれかを使用してみることができます。WindowsストアにもWindows用のubuntu、SUSEなどがあり、これによりコーディングの労力を減らすことができます。このLinuxディストリビューションには、Linuxシェル、カーネルなどが含まれているため、コードをデバッグまたはテストするたびにLinuxシステムを必要としません。

また、Eclipseと比較してはるかに優れた高速なVisual Studio Codeを使用することもでき、LinuxやMacでもサポートされています。

Windowsストアのubuntuディストリビューションについて this を確認してください。

Linuxディストリビューションは他のソースからダウンロードすることもできますが、MicrosoftはWindowsストアからダウンロードすることをお勧めします。

0
Avi