211 votes

Travailler sur un projet distant avec Eclipse via SSH

J'ai les boîtes suivantes :

  1. Une boîte Windows avec Eclipse CDT,
  2. Une boîte Linux, accessible pour moi uniquement via SSH.

Le compilateur et le matériel requis pour construire et exécuter mon projet se trouvent uniquement sur la machine B.

J'aimerais travailler de manière "transparente" sur ce projet à partir d'un poste Windows en utilisant Eclipse CDT et pouvoir construire, exécuter et déboguer le projet à distance à partir de l'IDE.

Comment puis-je configurer ça :

  • Le bâtiment fonctionnera-t-il ? Y a-t-il des solutions plus simples que d'écrire un makefile local qui serait rsync le projet, puis appeler un makefile distant pour lancer la construction proprement dite ? Est-ce que la construction gérée par Eclipse a une fonction pour cela ?
  • Le débogage va fonctionner ?
  • De préférence - l'indexation du code Eclipse CDT fonctionnera ? Dois-je copier tous les fichiers d'en-tête requis de la machine B à la machine A et les ajouter manuellement au chemin d'inclusion ?

4 votes

Kos, avez-vous fini par utiliser RSE ? Comment s'est passée votre expérience ?

2 votes

J'ai réussi à le faire, mais : a) CDT avait quelques problèmes pour être conscient du système de fichiers virtuel (AFAIK c'est un problème temporaire qui disparaîtra quand ils réécriront certaines choses vers une API plus récente ; peut-être l'ont-ils déjà fait ? IDK) et b) j'ai dû mettre en place ma propre chaîne de compilation (via un makefile personnalisé) et c) une gêne désagréable - la sauvegarde du fichier prenait environ 2~3 secondes et c'était dérangeant.

1 votes

Si j'avais besoin de travailler à distance aujourd'hui, je ferais probablement un autre essai avec RSE, mais je trouverais peut-être plus pratique de le garder comme projet local et de mettre en place un système de construction personnalisé, basé sur, par exemple, le système RSE. rsync comme je l'ai déjà mentionné.

233voto

Aaron Digulla Points 143830

Essayez le Explorateur de système à distance (RSE). Il s'agit d'un ensemble de plug-ins permettant de faire exactement ce que vous voulez.

RSE est peut-être déjà inclus dans votre installation Eclipse actuelle. Pour vérifier dans Eclipse Indigo, allez à Fenêtre > Perspective ouverte > Autre... et choisissez Explorateur de système à distance de la Perspective ouverte pour ouvrir la perspective RSE.

Pour créer un projet distant SSH à partir de la perspective RSE dans Eclipse :

  1. Définissez une nouvelle connexion et choisissez SSH Only dans l'écran Select Remote System Type de la boîte de dialogue New Connection.
  2. Saisissez les informations de connexion puis sélectionnez Terminer.
  3. Connectez-vous au nouvel hôte. (On suppose que les clés SSH sont déjà configurées).
  4. Une fois que vous êtes connecté, allez dans la section de l'hôte Fichiers Sftp choisissez un dossier et sélectionnez Créer un projet à distance dans le menu contextuel de l'élément. (Attendez que le projet distant soit créé).

Si cela a été fait correctement, il devrait maintenant y avoir un nouveau projet distant accessible depuis l'explorateur de projet et d'autres perspectives dans eclipse. Si la connexion SSH est correctement configurée, les mots de passe peuvent devenir une partie optionnelle du processus normal d'authentification SSH. Un projet distant avec Eclipse via SSH est maintenant créé.

2 votes

L'ESR est toujours délicat. La meilleure idée de RSE est qu'Eclipse fasse tout via une connexion SSH, mais cette fonctionnalité ne fonctionne pas encore. La fonctionnalité qui fonctionne implique un serveur que vous devez installer sur la boîte Linux.

0 votes

Si tout le reste échoue, modifiez le projet localement. Installez ensuite cygwin ou mingw pour obtenir "rsync". Cela vous permet de copier efficacement les fichiers par SSH sur la machine Linux distante. Et installez Putty pour obtenir une console distante. Il ne vous reste plus qu'à mémoriser cette séquence de touches "Ctrl+S Alt-Tab Alt-Tab Up Return Alt-Tab Alt-Tab Up Return" (enregistrez dans Eclipse, allez à la console avec "rsync", exécutez-la à nouveau, allez à Putty, exécutez la commande make sous Linux).

2 votes

Les responsables de l'ESR aiment également recevoir des rapports sur les bogues et les améliorations.

13voto

Lagerbaer Points 1653

Le moyen le plus simple serait d'exécuter Eclipse CDT sur la boîte Linux et d'utiliser soit la redirection X11, soit un logiciel de bureau à distance tel que VNC.

Ceci, bien sûr, n'est possible que si Eclipse est présent sur la boîte Linux et que votre connexion réseau à la boîte est suffisamment rapide.

L'avantage est qu'étant donné que tout est local, vous n'aurez pas de problèmes de synchronisation, et vous n'aurez pas de problèmes gênants de multi-plateforme.

Si vous n'avez pas eclipse sur la boîte, vous pourriez penser à partager votre répertoire de travail linux via SMB (ou SSHFS) et y accéder depuis votre machine Windows, mais cela nécessiterait une certaine configuration.

Les deux seraient mieux que d'avoir deux copies, surtout lorsqu'il s'agit d'un système multiplateforme.

1 votes

J'ai peur que la boîte linux n'ait même pas X11. :)

2 votes

@Kos, vous avez besoin du serveur X11 pour fonctionner là où vous êtes physiquement assis - soit avec un Linux dans une machine virtuelle, soit avec un serveur X11 pour Windows - et Eclipse pour fonctionner sur le serveur Linux. ssh permet juste de tunneliser les données du réseau - vous trouverez la compression + "-c blowfish" pour aider l'expérience.

0 votes

Juste pour clarifier - faites-vous référence à ce qu'on appelle "Eclipse sans tête" sur la machine distante ? (Enfin, à condition qu'elle ait même Java :)). Je cherchais une solution légère côté client, mais avoir une certaine configuration sur la machine distante pourrait être une option aussi.

7voto

timB33 Points 818

Je suis dans la même situation que moi (ou l'étais), pour info, j'ai fini par me connecter à un partage samba sur l'hôte Linux et par éditer ce partage localement sur la machine Windows avec notepad++, puis j'ai compilé sur la machine Linux via PuTTY. (Nous n'étions pas autorisés à mettre à jour les versions de dix ans des éditeurs sur l'hôte Linux et il n'avait pas Java, donc j'ai renoncé à la redirection X11).

Maintenant... J'exécute un Linux moderne dans une VM sur mon hôte Windows, j'ajoute tous les outils que je veux (par exemple CDT) à la VM, puis je vérifie et construis dans une prison chroot qui ressemble beaucoup à la RTE.

C'est une solution maladroite, mais j'ai pensé que je devais l'ajouter à la liste.

5voto

Samantha Points 21

Ma solution est similaire à celle de SAMBA, sauf qu'elle utilise sshfs. Monter mon serveur distant avec sshfs, ouvrir mon projet makefile sur la machine distante. Allez-y à partir de là.

Il semble que je puisse également utiliser une interface graphique pour mercurial de cette manière.

Construire mon code à distance est aussi simple que : ssh address remote_make_command

Je cherche cependant un moyen décent de déboguer. Peut-être via gdbserver ?

3voto

900ss Points 21

J'ai eu le même problème il y a 2 ans et je l'ai résolu de la manière suivante :

1) Je construis mes projets avec des makefiles, non gérés par Eclipse. 2) J'utilise une connexion SAMBA pour éditer les fichiers dans Eclipse. 3) Construction du projet : Eclipse appelle un make "local" avec un makefile qui ouvre une connexion SSH à l'hôte Linux. à l'hôte Linux. Sur la ligne de commande SSH, vous pouvez donner des paramètres qui sont exécutés sur l'hôte Linux. sont exécutés sur l'hôte Linux. J'utilise pour ce paramètre un shell makeit.sh script qui appelle le "vrai" make sur l'hôte linux. Les différentes cibles pour la construction que vous pouvez donner aussi par des paramètres de le makefile local --> makeit.sh --> makefile sur l'hôte linux.

0 votes

Sympa, mais on ne peut pas dire qu'il soit "transparent" - il ne permet pas le débogage, à tout le moins. Il pourrait également être basé sur RSync au lieu de Samba (ce qui est ce que j'avais avant de poster ma question initiale).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X