web-dev-qa-db-fra.com

La meilleure configuration pour le développement Linux à partir de Windows?

Quelle est la meilleure configuration pour développer des applications Linux à partir d'un poste de travail Windows? Actuellement, je suis connecté via SSH à notre serveur de développement Linux et j'utilise Eclipse, transmis via SSH via PuTTY, à la version pour domaine public de Xming fonctionnant sur mon poste de travail Windows. Cela fonctionne, mais ce n'est pas génial; Les temps de réponse d'Eclipse sont loin d'être rapides (nettement pire qu'Eclipse s'exécutant de manière native sur mon poste de travail Windows beaucoup plus lent), je ne peux pas redimensionner certaines boîtes de dialogue et je n'ai pas trouvé de moyen de reconfigurer mes polices.

Existe-t-il une meilleure configuration disponible?

Edit: Ceci est pour le développement C/C++.

28
Josh Kelley

Options pour Linux sous Windows:

Outils uniquement

Étant donné que vous utilisez Eclipse, je suppose que vous voulez un IDE complet, mais si vous pouvez vous en tirer avec les outils GNU/Linux, vous avez le choix.

  • cygwin vous donne un shell bash avec de nombreux outils, y compris un serveur X11. Cela a été autour pendant un certain temps et est mature.
  • msys est une alternative plus petite et légère à cygwin.
  • GNU utilitaires pour Win32 est une autre alternative légère. Ce sont des versions natives des outils, par opposition à cygwin qui nécessite un DLL pour simuler ses outils en pensant qu'ils fonctionnent sous Linux.

Linux dans un processus Windows

Plusieurs packages exécuteront Linux en tant que processus Windows, sans simuler un PC entier comme le fait la virtualisation. Ils utilisent Cooperative Linux , a.k.a. coLinux, qui est limité aux systèmes 32 bits. Celles-ci ne nécessitent pas la virtualisation et démarrent plus rapidement car vous ne démarrez pas un PC virtuel. C'est un peu plus expérimental et peut-être pas aussi stable que certaines des options de virtualisation.

Virtualisation

Le logiciel de virtualisation vous permet de démarrer un autre système d'exploitation sur un PC virtuel, qui partage du matériel avec le système d'exploitation hôte. C'est assez éprouvé. Il existe ici de bonnes options pour prendre des instantanés de votre PC virtuel dans un état particulier, suspendre/reprendre un PC virtuel, etc. Il est agréable de pouvoir expérimenter avec un PC virtuel, d’ajouter quelques paquets, puis de revenir à un instantané précédent. "démarrer propre". 

Dans mon cas ...

Votre environnement a des caractéristiques de performances différentes, mais voici ma situation: j’ai commencé avec Eclipse sur mon ordinateur portable Windows (développement Rails), j’ai trouvé cela lent, puis j’ai basculé vers l’utilisation de PuTTY vers ssh dans une machine Linux rapide. Je fais mes montages via un emacs fonctionnant sur le serveur Linux et affiché sous Windows avec Xming. Ou j'utilise emacs natif sur Windows, en modifiant les fichiers partagés via NFS. Ce dernier est plus lent dans mon environnement en raison de sauvegardes lentes. 

Lorsque je travaille à la maison, je laisse tomber X parce qu’il est trop lent avec les clients distants et il suffit d’exécuter emacs -nw dans une fenêtre de PuTTY. J'utilise ensuite GNU screen afin d'avoir plusieurs "fenêtres" et de pouvoir reprendre facilement où je me suis arrêté si ma connexion réseau s'estompe.

26
Pete TerMaat

La meilleure approche que j'ai trouvée est de:

  1. gardez votre code portable
  2. développer nativement sur votre bureau
  3. vérifier les dépendances du système d'exploitation (minimisez-les autant que possible)} _
  4. déployer régulièrement sur votre cible, y tester et déboguer

Je sais que ce n'est pas une réponse directe, mais utiliser un IDE pour le développement via X est pénible avec la plupart des outils gratuits. La seule façon pour laquelle j'ai été productif de travailler de cette façon a été lorsque j'exécutais une application de type UNIX sur mon bureau, donc X était natif. Si vous comptez utiliser cette approche, essayez une solution X commerciale sur le bureau.

Sinon, pensez à abandonner IDE et à effectuer votre développement et votre débogage via SSH, un éditeur de terminal (par exemple, vi, pico, ee, emacs), make/ant et gdb.

La meilleure approche pour vous dépendra de votre langage de programmation et du type d’application que vous développez. Si vous utilisez des applications à interface graphique, l’utilisation de X pourrait être la seule approche acceptable. Si vous développez un back-office/démon, l'approche SSH et terminal fonctionnera probablement bien que vous souhaitiez probablement vous familiariser vraiment avec vi ou emacs.

EDIT: je viens de remarquer que vous faites du développement en C/C++. Pensez à utiliser un cadre multiplateforme si vous ne l'êtes pas déjà. Utiliser quelque chose comme Qt , APR , ACE ou Poco devrait permettre de développer nativement sous Windows avec une étape de déploiement/débogage dans votre environnement Linux. .

9
D.Shawley

Une option facile à configurer consisterait à exécuter Eclipse de manière native dans Windows, mais à déployer le code via un partage Samba sur la machine Linux (que vous pouvez monter en tant que lecteur) (ou SSH/SCP si SMB n'est pas un option) puis exécutez-le via la console SSH.

Une autre option facile à configurer est de simplement développer sur Linux via freenx ou un outil similaire au lieu d’une session X épanouie, vérifiez cette réponse: https://serverfault.com/questions/11367/remote-desktopping -de-windows-a-linux/11372 # 11372

Les autres options (virtualisation, Linux sous Windows, Cygwin) sont certes valables mais présentent des inconvénients, comme être plus exigeantes en machines, plus difficiles à configurer, ou pas assez équivalentes à l'environnement Linux actuel, mais peuvent très bien en valoir la peine. vous avez la machine et le scénario justifie son utilisation.

Faire tout du côté Linux aura toujours des inconvénients Si votre machine est Windows. 

Personnellement, j’ai une machine sous Linux où tout le monde a Windows et Fait Windows dev dans une machine virtuelle, mais cela m’a coûté beaucoup de RAM et quelques problèmes d’installation du réseau.

7
Vinko Vrsalovic

Pour le développement, j'utilise généralement une machine virtuelle Linux sur ma machine Windows. Cela va probablement envoyer les utilisateurs de Linux se précipiter dans la salle de bain pour se laver les mains, mais je réalise tout mon développement dans Visual Studio et j'ai un plugin personnalisé pour Visual Studio qui appelle G ++ via la machine virtuelle et dirige la sortie dans la fenêtre de sortie du VS . Avec un changement rapide d'une zone de liste déroulante, je peux construire et tester pour Windows ou Linux.

7
Gerald

Je trouve coLinux extrêmement utile lors du développement sous Windows pour Linux. Il s’agit essentiellement d’un système Linux fonctionnant en parallèle avec votre système d’exploitation Windows (c’est-à-dire en tant que service) et qui peut être configuré pour s’afficher simplement sur votre réseau local, comme un système virtuel. la machine fait. En outre, il est beaucoup plus complet que CygWin et ses performances sont vraiment remarquables: je peux facilement exécuter des tâches non triviales sous coLinux, tout en utilisant des simulateurs à plus de 90 fps.

En outre, coLinux peut être facilement configuré pour exécuter X11 et des gestionnaires de fenêtres comme gnome/KDE, afin que vous puissiez par exemple utiliser quelque chose comme vnc pour accéder à votre bureau Linux.

Cooperative Linux est la première méthode de travail libre et open source permettant d'exécuter Linux de manière optimale sur Microsoft Windows en mode natif. Plus généralement, Cooperative Linux (coLinux en abrégé) est un port du noyau Linux qui lui permet de fonctionner en coopération avec un autre système d'exploitation sur une seule machine . Par exemple, il permet d’exécuter librement Linux sur Windows 2000/XP, sans utiliser un logiciel de virtualisation de PC commercial Tel que VMware, d’une manière bien plus optimale que celle de tout logiciel de virtualisation de PC à usage général.

capture d'écran colinux http://colinux.org/screenshots/network.png

5
none

Cygwin pourrait être utile.

4
GvS

Il y a plusieurs solutions, je recommanderais le n ° 1

  1. Vous pouvez utiliser un outil tel que Vagrant . Vagrant est un outil permettant de créer et de gérer des environnements de machines virtuelles dans un seul flux de travail. Grâce à son flux de travail convivial et à son automatisation, Vagrant réduit le temps de configuration de l’environnement de développement et augmente la parité de production. Vous codez donc sur votre PC Windows et compilez/exécutez l'application sur un système Linux à l'aide de Vagrant. Le vagabond est gratuit! Un outil similaire: Docker peut également être utilisé. Pour cette configuration, vous pouvez utiliser n’importe quel IDE, je recommanderais que VSCode soit assez pratique pour C/C++ avec intellisense mais Eclipse devrait aussi fonctionner.

  2. A VM (machine virtuelle) exécutant une sorte de linux en tant que système d'exploitation invité sous Windows. Commencez avec VirtualBox qui est gratuit.

  3. Outil basé sur le Web tel que Nitrous.io qui est abandonné, mais vous pouvez héberger votre propre version open source de Nitrous IDE appelée Nitrous Solo qui vous permet d’héberger votre propre instance de Nitrous IDE sur votre fournisseur de cloud préféré.

  4. Windows 10 fournit/ Sous-système Windows pour Linux , utilisez-le pour compiler et exécuter votre projet. Cela nécessite une version 64 bits de Windows 10 Anniversary Update ou version ultérieure (version 1607+).

  5. Cygwin / MinGW sont des outils bash populaires pour Windows. Ils pourraient peut-être compiler et/ou exécuter votre application.

4
tymspy

Vous pouvez essayer d’autres serveurs X sous Windows, tels que xwin32 et hummingbird. Notez que ce sont des implémentations commerciales.

Une autre solution consiste à installer un serveur VM sur votre machine Windows et à installer Linux sur la machine virtuelle. Les options incluent VMware (non libre) et Microsoft Virtual PC (téléchargement gratuit). VMware est bien plus sympathique que VirtualPC (support 64 bits, incitation supplémentaire à prendre en charge les systèmes d'exploitation client Linux, etc.). Il peut aussi

3
Mr Fooz

J'utilise aussi xming et souffre des mêmes problèmes avec Eclipse. Apparemment, le passage à cygwin ne le rend pas assez rapide. Finalement, je suis passé au développement dans vim via xming. Cela ne prend pas autant de temps que je craignais de m'habituer à toutes les combinaisons de touches et les performances sont absolument fluides. En fait, maintenant, j’utilise parfois vim même lorsque je travaille en mode natif.

3
FireAphis

Soit une machine virtuelle avec un environnement de développement basé sur Linux, soit une copie locale de certains IDEagnostiques de chaînes d’outils (par exemple, Notepad ++, avec des tests effectués avec MinGW ou CygWin autant que possible), ou tout simplement en écriture Notepad ++ et continuez à télécharger sur votre machine de développement et à y tester, ce que je fais.

J'ai fait ce que vous voulez faire pour exactement la même raison: un contrôle total sur la sortie (vous rencontrez des problèmes de polices avec votre solution actuelle) et une machine Windows beaucoup plus lente que la boîte de développement Linux distante.

La plupart des réponses sont fausses: avoir un "environnement de développement Linux" ne signifie pas simplement "avoir un IDE". Il s'agit d'avoir toute la puissance Un * x à portée de main.

Est-ce un serveur Linux local ou distant? problèmes de bande passante? Parce que sur un réseau local, même un vieux réseau local de 100 Mbit/s, FreeNX vole . Quelle est la charge sur ce serveur Linux?

Installez FreeNX gratuitement sur le système Linux, installez le client FreeNX gratuit sur la machine Windows et bingo, vous avez votre environnement de développement Linux à portée de main.

FreeNX est beaucoup plus efficace que VNC, il fait nuit (VNC est en fait assez mauvais, même comparé au bureau à distance de Windows ... Mais FreeNX s'envole).

En ce qui concerne la vitesse, j’ai installé il y a longtemps mon poste de travail principal Linux (c’était un Pentium 4/2 Go de mémoire à l’époque) sur lequel je développais à plein temps avec IntelliJ IDEA (un autre IDE ), pour servir une session X complète (avec un gestionnaire de fenêtres, etc.) qu’un autre développeur affichait à distance pour ... exécuter une autre instance d’IntelliJ (et accéder à toutes les fonctionnalités Un * x). C'était sur un réseau local à 100 Mbit/s et c'était comme si l'application était locale pour l'autre développeur.

Quoi qu'il en soit, avec le matériel actuel, je ne peux pas imaginer comment cela ne pourrait pas fonctionner: j'ai maintenant un Core 2 Duo/4 Go de RAM comme bureau principal et un réseau LAN gigabit.

Une telle configuration fonctionnait parfaitement il y a 4 ans, elle fonctionnerait parfaitement aujourd'hui.

Maintenant, si vous me dites que vous avez des problèmes de bande passante ou que la machine Linux sur laquelle vous avez votre compte est surchargée ou qu'elle n'est pas sur le réseau local, alors les choses peuvent être différentes ...

Comment les jeunes développeurs qui souhaitent utiliser un système Un * x puissant le font-ils dans l'entreprise que je consulte actuellement (qui ne dispose que de bureaux Windows)? La plupart d'entre eux apportent leur brillant MacBook Pro et l'utilisent pour le développement;)

3
SyntaxT3rr0r

Vous pouvez jeter un oeil sur la configuration d'un serveur svn sur la machine linux et ensuite utiliser quelque chose comme TeamCity todo une construction sur commit. Vous pouvez écrire votre code localement et faire un commit quand vous voulez qu'il soit compilé. 

1
albertjan

Je ne sais pas s'il existe un itinéraire plus moderne, mais la méthode habituelle à mon époque consistait à exécuter X Windows sous Microsoft Windows. Ainsi, vous pouvez exécuter un nombre illimité d'applications sur votre machine Ubuntu, les contrôler et les afficher sous Microsoft Windows.

Check Check out.

0
Kondal

Vous pouvez essayer d’utiliser l’une des distributions linux pour Windows, même Windows-Store possède Ubuntu, SUSE, etc. pour Windows, ce qui pourrait aider à réduire vos efforts de codage. Ces distributions linux contiennent linux Shell, le noyau, etc., de sorte que vous n’aurez plus besoin du système Linux pour déboguer ou tester votre code.

Vous pouvez également utiliser le code Visual Studio, qui est bien meilleur et rapide par rapport à Eclipse et est même pris en charge sous Linux et mac.

Vérifiez this pour la distribution Ubuntu sur Windows Store.

Les distributions Linux peuvent également être téléchargées à partir d’autres sources mais Microsoft recommande vivement d’utiliser celle-ci à partir de Windows-Store.

0
Avi