Arbeiten Sie mit Eclipse über SSH an einem Remote-Projekt

Lesezeit: 9 Minuten

Benutzeravatar von Kos
Kos

Ich habe folgende Boxen:

a) Eine Windows-Box mit Eclipse CDT,
b) Eine Linux-Box, für mich nur per SSH erreichbar.

Sowohl der Compiler als auch die zum Erstellen und Ausführen meines Projekts erforderliche Hardware befinden sich nur auf Maschine B.

Ich möchte “transparent” von einer Windows-Box aus an diesem Projekt mit Eclipse CDT arbeiten und das Projekt remote aus der IDE heraus erstellen, ausführen und debuggen können.

Wie richte ich das ein:

  • Das Gebäude wird funktionieren? Alle einfacheren Lösungen als das Schreiben eines lokalen Makefiles, das dies tun würde rsync das Projekt und rufen Sie dann ein Remote-Makefile auf, um den eigentlichen Build zu initiieren? Hat Eclipse Managed Build eine Funktion dafür?
  • Das Debuggen wird funktionieren?
  • Vorzugsweise – die Eclipse CDT-Codeindizierung funktioniert? Muss ich alle erforderlichen Header-Dateien von Maschine B auf Maschine A kopieren und sie manuell hinzufügen, um den Pfad einzuschließen?

  • Kos, hast du letztendlich RSE verwendet? Wie war Ihre Erfahrung?

    – Aleksandr Levchuk

    7. Dezember 2011 um 6:47 Uhr

  • Ich habe es geschafft, aber: a) CDT hatte einige Probleme damit, sich des virtuellen Dateisystems bewusst zu sein (AFAIK, dies ist ein vorübergehendes Problem und verschwindet, wenn sie einige Dinge auf eine neuere API umschreiben; vielleicht haben sie es bereits getan? IDK) und b) Ich musste meine eigene Kompilierungskette aufrollen (über ein benutzerdefiniertes Makefile) und c) ein unangenehmer Ärger – das Speichern der Datei dauerte etwa 2 bis 3 Sekunden und das war störend.

    – Kos

    25. Juni 2012 um 18:07 Uhr

  • Wenn ich heute wieder aus der Ferne arbeiten müsste, würde ich wahrscheinlich eine weitere Runde mit RSE machen, aber ich könnte es für praktikabler halten, es als lokales Projekt zu behalten und ein benutzerdefiniertes Build-System aufzubauen, basierend auf zB rsync wie ich schon erwähnt habe.

    – Kos

    25. Juni 2012 um 18:09 Uhr

  • Und leider habe ich es nicht geschafft, das Remote-Debugging oder die Indizierung von Remote-Bibliotheks-Headern einzurichten. Ich bezweifle, dass letzteres überhaupt möglich ist. Ersteres – ich bin mir sicher, dass es das kann, aber ich hatte nicht wirklich das Bedürfnis, mich damit zu beschäftigen.

    – Kos

    25. Juni 2012 um 18:11 Uhr

  • Ich greife auf meinen Remote-Rechner zu, indem ich mich zuerst bei einem Login-Server anmelde und mich dann von dort aus bei meinem Remote-Rechner anmelde. Beide haben unterschiedliche Passwörter. Gibt es eine Möglichkeit, auf einem solchen Remote-Computer in Eclipse zu arbeiten?

    – Arjun J Rao

    2. Dezember 2013 um 11:59 Uhr

Benutzeravatar von Aaron Digulla
Aaron Digulla

Versuchen Sie die Remote-System-Explorer (RSE). Es ist eine Reihe von Plug-Ins, die genau das tun, was Sie wollen.

RSE ist möglicherweise bereits in Ihrer aktuellen Eclipse-Installation enthalten. Um Eclipse Indigo einzuchecken, gehen Sie zu Fenster > Perspektive öffnen > Sonstiges… und wähle Remote-System-Explorer von dem Perspektive öffnen Dialog zum Öffnen der RSE-Perspektive.

So erstellen Sie ein SSH-Remote-Projekt aus der RSE-Perspektive in Eclipse:

  1. Definieren Sie eine neue Verbindung und wählen Sie im Dialogfeld „Neue Verbindung“ auf dem Bildschirm „Typ des Remote-Systems auswählen“ die Option „Nur SSH“.
  2. Geben Sie die Verbindungsinformationen ein und wählen Sie dann Fertig stellen.
  3. Verbinden Sie sich mit dem neuen Host. (Setzt voraus, dass SSH-Schlüssel bereits eingerichtet sind.)
  4. Sobald die Verbindung hergestellt ist, führen Sie einen Drilldown in die des Hosts durch Sftp-Dateienwählen Sie einen Ordner und wählen Sie aus Remote-Projekt erstellen aus dem Kontextmenü des Elements. (Warten Sie, während das Remote-Projekt erstellt wird.)

Bei richtiger Ausführung sollte jetzt ein neues Remote-Projekt vorhanden sein, auf das über den Projekt-Explorer und andere Perspektiven in Eclipse zugegriffen werden kann. Wenn die SSH-Verbindung korrekt eingerichtet ist, können Passwörter zu einem optionalen Teil des normalen SSH-Authentifizierungsprozesses gemacht werden. Ein Remote-Projekt mit Eclipse über SSH wird nun erstellt.

  • RSE ist immer noch schwierig. Die beste Idee von RSE ist, dass Eclipse alles über eine SSH-Verbindung erledigt, aber diese Funktion funktioniert noch nicht. Die Arbeitsfunktion umfasst einen Server, den Sie auf der Linux-Box einrichten müssen.

    – Ian

    18. November 2010 um 17:56 Uhr

  • Auch die RSE-Leute erhalten gerne Fehler-/Verbesserungsberichte.

    – Aaron Digulla

    19. November 2010 um 8:37 Uhr

  • @Aaron – Ich habe diese rsync-Lösung schon einmal aus einem Makefile ausprobiert – was im Grunde Ihre Tastenfolge durch ein Strg + B ersetzen würde. Das Problem ist, dass ich mit diesem Ansatz Eclipse weder ausführen noch debuggen kann. Das RSE klingt in der Tat nach einem guten Werkzeug für den Job; @Ioan, kannst du näher erläutern, was nicht funktioniert? Das RSE-Wiki scheint SSH-Dateisysteme und Remote-Debugging als aktuelles Feature aufzulisten … Oder ich probiere es einfach diesen Montag aus.

    – Kos

    19. November 2010 um 13:25 Uhr

  • @AaronDigulla Hallo, die Lösung ist cool, aber ich habe festgestellt, dass Eclipse beim Erstellen des Remote-Projekts versucht, es lokal zu kompilieren. Gibt es eine Möglichkeit, es auf dem Remote-Computer kompilieren und ausführen zu lassen?

    – shaoyl85

    18. Januar 2014 um 21:05 Uhr

  • Die C/C++-Indizierung funktioniert mit RSE nicht ordnungsgemäß. Indexer beschwert sich über fehlende Symbole. Es funktioniert gut, wenn die Projekt- und Quelldateien lokal gespeichert sind, aber mit RSE nicht. irgendwelche Ideen?

    – Schwarz_Null

    9. Juni 2016 um 9:53 Uhr

Der einfachste Weg wäre, Eclipse CDT auf der Linux-Box auszuführen und entweder X11-Forwarding oder Remote-Desktop-Software wie VNC zu verwenden.

Dies ist natürlich nur möglich, wenn Sie Eclipse auf der Linux-Box haben und Ihre Netzwerkverbindung zur Box ausreichend schnell ist.

Der Vorteil ist, dass Sie keine Synchronisierungsprobleme und keine unangenehmen plattformübergreifenden Probleme haben, da alles lokal ist.

Wenn Sie kein Eclipse auf der Box haben, könnten Sie daran denken, Ihr Linux-Arbeitsverzeichnis über SMB (oder SSHFS) freizugeben und von Ihrem Windows-Computer aus darauf zuzugreifen, aber das würde einiges an Einrichtung erfordern.

Beides wäre besser als zwei Kopien, besonders wenn es plattformübergreifend ist.

  • Ich fürchte, die Linux-Box hat nicht einmal X11. 🙂

    – Kos

    18. November 2010 um 16:09 Uhr

  • @Kos, Sie müssen den X11-Server dort ausführen, wo Sie physisch sitzen – entweder mit einem Linux in einer virtuellen Maschine oder einem X11-Server für Windows – und Eclipse muss auf dem Linux-Server ausgeführt werden. ssh ermöglicht nur das Tunneln der Netzwerkdaten – Sie finden Komprimierung + “-c Blowfish”, um die Erfahrung zu verbessern.

    – Thorbjørn Ravn Andersen

    19. November 2010 um 5:27 Uhr

  • Nur zur Verdeutlichung – beziehen Sie sich auf das, was “headless Eclipse” auf dem Remote-Computer genannt wird? (Nun, vorausgesetzt, es hat überhaupt Java :)). Ich suchte nach einer leichten clientseitigen Lösung, aber eine Einrichtung auf dem Remote-Computer könnte auch eine Option sein.

    – Kos

    19. November 2010 um 13:17 Uhr

  • @Kos: Nein. X11 funktioniert so: Du hast einen Client und einen Server. Der Server ist dort, wo der Monitor angeschlossen ist. Es erledigt das gesamte Rendern und Anzeigen. Der Client (in diesem Fall Eclipse) sendet lediglich Rendering-Befehle an den Server. Sie müssen also X11 unter Windows installieren und Eclipse auf Ihrer Linux-Box ausführen. Unter Linux müssen Sie lediglich die DISPLAY -Variable, damit Eclipse weiß, wo sich der Server befindet.

    – Aaron Digulla

    19. November 2010 um 14:01 Uhr

  • Das Netzwerk muss jedoch schnell sein, ebenso wie Ihr Server, und Eclipse wird sehr langsam laufen.

    – mattalxndr

    3. August 2012 um 13:57 Uhr

Ich bin selbst an der gleichen Stelle (oder war), FWIW Ich habe schließlich auf eine Samba-Freigabe auf dem Linux-Host ausgecheckt und diese Freigabe lokal auf dem Windows-Computer mit Notepad ++ bearbeitet, dann habe ich auf der Linux-Box über PuTTY kompiliert. (Wir durften die zehn Jahre alten Versionen der Editoren auf dem Linux-Host nicht aktualisieren und es gab kein Java, also habe ich die X11-Weiterleitung aufgegeben.)

Jetzt … führe ich modernes Linux in einer VM auf meinem Windows-Host aus, füge alle gewünschten Tools (z. B. CDT) zur VM hinzu und checke dann aus und baue ein Chroot-Gefängnis ein, das dem RTE sehr ähnlich ist.

Es ist eine klobige Lösung, aber ich dachte, ich würde es in die Mischung werfen.

Meine Lösung ähnelt der von SAMBA, außer dass sie sshfs verwendet. Mounten Sie meinen Remote-Server mit sshfs, öffnen Sie mein Makefile-Projekt auf dem Remote-Computer. Gehen Sie von dort aus.

Es scheint, dass ich auf diese Weise auch ein GUI-Frontend für Mercurial ausführen kann.

Das Erstellen meines Remote-Codes ist so einfach wie: ssh address remote_make_command

Ich suche jedoch nach einer anständigen Möglichkeit zum Debuggen. Eventuell über gdbserver?

Benutzeravatar von arekolek
arekolek

Ich habe es versucht ssh -X aber es war unerträglich langsam.

Ich habe auch RSE ausprobiert, aber es hat nicht einmal das Erstellen des Projekts mit einem Makefile unterstützt (mir wurde gesagt, dass sich dies geändert hat, seit ich meine Antwort gepostet habe, aber ich habe das nicht ausprobiert).

Ich habe gelesen, dass NX schneller ist als die X11-Weiterleitung, aber ich konnte es nicht zum Laufen bringen.

Schließlich fand ich heraus, dass mein Server unterstützt X2Go (Der Link enthält Installationsanweisungen, falls dies bei Ihnen nicht der Fall ist). Jetzt musste ich nur noch:

  • Eclipse auf dem Server herunterladen und entpacken,
  • installiere X2Go auf meinem lokalen Rechner (sudo apt-get install x2goclient auf Ubuntu),
  • Konfigurieren Sie die Verbindung (Host, automatische Anmeldung mit ssh-Taste, wählen Sie die Ausführung von Eclipse).

Alles ist so, als würde ich auf einem lokalen Computer arbeiten, einschließlich Erstellen, Debuggen und Codeindizierung. Und es gibt keine merklichen Verzögerungen.

  • Nur um dies hinzuzufügen, funktioniert dies auch sehr gut mit Windows auf der Client-Seite. Sowohl der Client als auch der Server sind einfach und leicht zu installieren, und die Erfahrung ist wie bei der lokalen Arbeit.

    – Andy Madge

    28. April 2021 um 13:38 Uhr

Benutzeravatar von 900ss
900ss

Ich hatte das gleiche Problem vor 2 Jahren und habe es folgendermaßen gelöst:

1) Ich erstelle meine Projekte mit Makefiles, die nicht von Eclipse verwaltet werden. 2) Ich verwende eine SAMBA-Verbindung, um die Dateien in Eclipse zu bearbeiten. 3) Erstellen des Projekts: Eclipse ruft ein “lokales” Make mit einem Makefile auf, das eine SSH-Verbindung zu Linux öffnet Gastgeber. Auf der SSH-Befehlszeile können Sie Parameter angeben, die auf dem Linux-Host ausgeführt werden. Ich verwende für diesen Parameter ein makeit.sh-Shell-Skript, das das “echte” Make auf dem Linux-Host aufruft. Die verschiedenen Ziele zum Bauen können Sie auch durch Parameter aus dem lokalen Makefile –> makeit.sh –> makefile on linux host angeben.

  • Nur um dies hinzuzufügen, funktioniert dies auch sehr gut mit Windows auf der Client-Seite. Sowohl der Client als auch der Server sind einfach und leicht zu installieren, und die Erfahrung ist wie bei der lokalen Arbeit.

    – Andy Madge

    28. April 2021 um 13:38 Uhr

Benutzeravatar von GCUGreyArea
GCUGreyArea

Die Art und Weise, wie ich das gelöst habe, war:

Für Windows:

  1. Exportieren Sie das Verzeichnis ‚workspace‘ von der Linux-Maschine mit Samba.
  2. Mounten Sie es lokal in Windows.
  3. Führen Sie Eclipse aus und verwenden Sie das bereitgestellte Verzeichnis „workspace“ als Eclipse-Arbeitsbereich.
  4. Importieren Sie das gewünschte Projekt und arbeiten Sie daran.

Für Linux:

  1. Hängen Sie das Verzeichnis ‚workspace‘ mit sshfs ein
  2. Führen Sie Eclipse aus.
  3. Führen Sie Eclipse aus und verwenden Sie das bereitgestellte Verzeichnis „workspace“ als Eclipse-Arbeitsbereich.
  4. Importieren Sie das gewünschte Projekt und arbeiten Sie daran.

In beiden Fällen können Sie entweder Eclipse erstellen und ausführen oder über ssh auf dem Remote-Computer erstellen.

1425800cookie-checkArbeiten Sie mit Eclipse über SSH an einem Remote-Projekt

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy