Fernprogrammierung

8

Ich mache meine Entwicklungsarbeit auf meiner Windows-Maschine, aber meine Kompilierung auf einer entfernten Linux-Maschine. Momentan starte ich einen X-Server unter Windows, ssh in den Linux-Rechner und mache dann die Entwicklung remote.

Was ich tun möchte, ist, meine Quelle auf dem Windows-Rechner zu bearbeiten und automatisch Dateien beim Speichern auf das Linux-System zu kopieren. Ich möchte auch, dass meine integrierten Kompilierungsbefehle einen Build auf dem Remote-System ausführen.

Wenn es einen Unterschied macht, ist die Quelle alles in C, mit GCC. In absteigender Reihenfolge der Präferenz habe ich Emacs, Vi und Netbeans auf meinem Desktop und bin bereit, eine andere IDE als letzten Ausweg zu installieren.

    
Kevin Lacquement 02.03.2009, 07:36
quelle

10 Antworten

13

Eine Option ist die Verwendung des TRAMP Remote-Bearbeitungspakets (in Emacs 22 und neuer integriert, und Sie können installiere es in ältere Versionen). Jedes Mal, wenn Sie Ihre Datei speichern, sendet Emacs seinen Inhalt über ssh (standardmäßig ist jedes Detail vollständig konfigurierbar) an den Linux-Rechner. Befehle wie M-x compile und M-x grep sind TRAMP-fähig und werden auf dem Remote-Host ausgeführt.

    
Jouni K. Seppänen 02.03.2009, 10:32
quelle
24

Dies ist sicherlich in vim machbar. Sie können das Protokoll scp: // in vim verwenden, um entfernte Dateien zu bearbeiten, und einen Befehl einrichten, der eine lokale Kopie schreibt. Sie können auch ändern, für welches Programm vim verwendet wird: make, um stattdessen einen ssh make auf Ihrem Server auszuführen.

Sie müssen Ihre SSH-Schlüssel einrichten, um dies schmerzfrei zu halten (sonst geben Sie Ihr Passwort die ganze Zeit ein), aber das ist ziemlich einfach.

Eine andere Alternative wäre es, als Teil Ihres make-Befehls zu einem Remote-Repository zu wechseln, anstatt es remote zu bearbeiten.

BEARBEITEN:

Zuerst wird das scp:// -Protokoll in vim verwendet. Von :help netrw-start (oder von der Seite herunter von :help scp )

  

Netrw unterstützt das "transparente" Bearbeiten von Dateien auf anderen Computern mithilfe von URLs   (siehe | netrw-transparent |). Als Beispiel nehmen wir an, Sie haben eine   Konto auf einer anderen Maschine; Wenn Sie scp verwenden können, versuchen Sie:

%Vor%      

Möchten Sie, dass ssh / scp einfacher zu verwenden ist? Check out | netrw-ssh-hack |!

Sie können auch scp:// Pfade in :edit -Befehlen verwenden, oder wirklich überall, wo Sie einen normalen Pfad verwenden könnten.

Und, von den erwähnten :help netrw-ssh-hack , Anweisungen zum Einrichten Ihrer ssh-Schlüssel:

  

BROWSING VERBESSERN * netrw-listhack * * netrw-ssh-hack * {{{2

     

Besonders mit dem Remote-Verzeichnis-Browser, ständig das Passwort eingeben   ist langweilig.

     

Für Linux / Unix-Systeme, das Buch "Linux Server Hacks - 100 industrielle Stärke   Tipps & amp; Tools "von Rob Flickenger (O'Reilly, ISBN 0-596-00461-3) gibt einen Tipp   zum Einrichten von no-password ssh und scp und diskutiert zugehörige Sicherheit   Probleme. Es war früher verfügbar bei Ссылка ,   aber anscheinend wird diese Adresse jetzt zu irgendeinem "Hackzine" umgeleitet.   Ich werde eine Zusammenfassung basierend auf diesem Artikel und auf einer Kommunikation von versuchen   Ben Schmidt:

     

(1) Erstellen Sie ein öffentliches / privates Schlüsselpaar auf dem lokalen Computer   (ssh Client):

%Vor%      

(Speichern der Datei in ~ / .ssh / id_rsa nach Aufforderung)

     

(2) Drücken Sie einfach auf die Frage nach der Passphrase (zweimal) für Nein   Passphrase. Wenn Sie eine Passphrase verwenden, müssen Sie auch verwenden   ssh-agent, so dass Sie die Passphrase nur einmal pro Sitzung eingeben müssen.   Wenn Sie keine Passphrase verwenden, melden Sie sich einfach bei Ihrem lokalen Benutzer an   Computer oder Zugriff auf die Schlüsseldatei in irgendeiner Weise wird ausreichen   Zugriff auf alle SSH-Server, die diesen Schlüssel für die Anmeldung autorisiert haben.

     

(3) Dies erstellt zwei Dateien:

%Vor%      

(4) Auf dem Zielcomputer (SSH-Server):

%Vor%      

(5) Auf Ihrem lokalen Rechner (ssh Client): (eine Zeile)

%Vor%      

oder, für OpenSSH, (eine Zeile)

%Vor%      

Sie können es mit

testen %Vor%      

und Sie sollten sich auf dem Server anmelden, ohne weitere Eingaben machen zu müssen   irgendetwas.

     

Wenn Sie sich für eine Passphrase entschieden haben, tun Sie Folgendes:

%Vor%      

Sie werden nach Ihrer Passphrase gefragt, wenn Sie ssh-add verwenden, aber nicht   Anschließend, wenn Sie ssh verwenden. Zur Verwendung mit vim können Sie

verwenden %Vor%      

und, als nächstes in vim, benutze

%Vor%      

Alternativ können Sie ssh-agent auf das Terminal anwenden, auf dem Sie planen   vim ausführen:

%Vor%      

und ssh-add wann immer Sie brauchen.

     

Für Windows haben Leute auf der Mailingliste vim erwähnt, dass Pageant hilft   mit der Vermeidung der ständigen Notwendigkeit, das Passwort einzugeben.

     

Kingston Fung schrieb über einen anderen Weg, um nicht ständig hineingehen zu müssen   Passwörter:

     
    

Um zu vermeiden, dass Sie jedes Mal das Passwort für scp eingeben müssen     Stellen Sie einen Hack in den Dokumenten bereit, um einen ssh-Account ohne Passwort einzurichten. Ich habe einen ... gefunden     Bessere Möglichkeit, das zu tun: Ich kann einen regulären ssh-Account verwenden, der ein     Passwort, um auf das Material zuzugreifen, ohne dass das Passwort eingegeben werden muss     jedes Mal. Es ist gut für Sicherheit und Komfort. Ich habe ssh öffentlichen Schlüssel versucht     authorization + ssh-agent, dies zu implementieren, und es funktioniert! Hier sind zwei     Links mit Anweisungen:

         

Um auf entfernten Systemen zu erstellen, müssen Sie Ihre makeprg Variable auf setzen mach ein ssh make. Von :help makeprg

  

Programm für den Befehl ": make". Siehe |: make_makeprg |.   Diese Option kann '%' und '#' Zeichen enthalten, die auf erweitert werden   der aktuelle und alternative Dateiname |: _% | |: _ # |   Umgebungsvariablen werden erweitert |: set_env |. Siehe | Option-Backslash |   über Leerzeichen und umgekehrte Schrägstriche.

     

Beachten Sie, dass ein '|' muss zweimal maskiert werden: einmal für ": set" und einmal für   die Interpretation eines Befehls.Wenn Sie einen Filter namens   "myfilter" mach es so:

%Vor%      

Der Platzhalter "$ *" kann angegeben werden (sogar mehrfach)   wo die Argumente enthalten sind, zum Beispiel:

%Vor%      

Diese Option kann nicht über | |modeline | eingestellt werden oder in der | Sandbox |, z   Sicherheitsgründe.

    
rampion 02.03.2009 09:01
quelle
6

Ich würde die kontinuierliche Integration für Ihre Umgebung prüfen. Auf diese Weise können Sie die Änderungen an der Quellcodeverwaltung festschreiben und die Linux-Box als Build-Server verwenden. Sie können Tests und andere damit zusammenhängende interessante Dinge haben, die Sie auf den Builds ausführen möchten.

Update 1: Auch das könnte für Sie funktionieren: Ссылка (es ist auch einen Versuch wert, einige Suchen auf ähnlichen Tools zu machen)

    
eglasius 02.03.2009 07:44
quelle
5

Andere haben SAMBA vorgeschlagen, was auf Ihrer Linux-Box nicht möglich ist. Eine gute Alternative ist, Dokan SSHFS auf Ihrer Windows-Box zu verwenden, um ein Remote-Verzeichnis über SSH zu mounten .

    
innaM 02.03.2009 09:00
quelle
2

Sie könnten versuchen, eine Festplatte zwischen Ihren Linux- und Windows-Rechnern mit Samba oder ähnlichem zu teilen. Dann könnten Sie auf Ihren lokalen Maschinen bearbeiten und die Dateien wären sofort auf dem Remote-Rechner sichtbar, da das Laufwerk für beide sichtbar wäre.

Wo ich arbeite, haben wir alle Dateien auf NFS, auf die von allen Linux-Maschinen und Windows-Maschinen zugegriffen werden kann. Ich weiß nicht, wie schwer es ist, das einzurichten, da ich in einem großen Unternehmen arbeite und die IT von mir abstrahiert ist, aber die einfache gemeinsame Nutzung von Festplatten sollte ziemlich einfach sein.

    
Nathan Fellman 02.03.2009 07:52
quelle
2

Warum starten Sie einen X-Server unter Windows? Persönlich würde ich eine Linux-VM mit VMware einrichten oder was auch immer Ihre Lieblings-VM-Technologie ist (VMware ist kostenlos und funktioniert gut). Wählen Sie dann eine beliebige Linux-Distribution. Sie brauchen nur sehr grundlegende Funktionen, meist die Standard-Toolchain. Sie könnten Centos, Ubuntu, Fedora, Debian, was auch immer wählen. Ich benutze normalerweise Centos oder Debian. Richten Sie es ein und verwenden Sie einfach PuTTY in Ihrer VM. Von dort aus können Sie Dateien auf Ihren Remote-Server scannen und so weiter. Auf diese Weise müssen Sie sich nicht mit Cygwin oder einem X-Server oder irgendetwas davon beschäftigen.

    
BobbyShaftoe 02.03.2009 08:40
quelle
1

Kannst du einfach eine Samba-Freigabe verwenden, um die Dateien direkt auf dem Remote-Rechner zu speichern? Ich mache PHP oft so.

Dann lassen Sie einfach ein Putty-Fenster geöffnet, um Befehle auf der Remote-Box auszuführen.

Oder fehlt mir etwas?

    
cletus 02.03.2009 07:55
quelle
1

Stellen Sie ein Quellcodeverwaltungssystem ein und verwenden Sie es. Dann können Sie einfach einen Commit machen, nachdem Sie in Ihrer IDE gespeichert haben, und auf dem Server kann es passieren, dass etwas beim Commit passiert.

Dies kann Tests auslösen, Build, mailen Sie alle Fehler an Sie ...

    
kender 02.03.2009 09:09
quelle
0

Eine Lösung könnte eine Art von Abfrage-App sein, die den Zeitstempel der Dateien überprüft, um zu sehen, ob sie sich geändert haben. Wenn sie es dann haben, speichern und dann kompilieren. Ein bisschen hackish so, aber es wäre praktikabel.

    
Hyposaurus 02.03.2009 07:42
quelle
0

Ich persönlich benutze XMing mit PuTTY . Ich benutze PuTTY, während XMing läuft. Ich kann jeden Editor öffnen (gvim, emacs, gedit, etc) und es wird erscheinen.

Sie müssen jedoch einige Einstellungen für PuTTY vornehmen:

  1. Erweitern Sie die Verbindung
  2. Erweitern Sie SSH
  3. Klicken Sie auf X11
  4. Aktivieren Sie die Option "X11-Weiterleitung aktivieren"
  5. Geben Sie im Textfeld für den Anzeigeort (ohne Anführungszeichen) Folgendes ein: "localhost: 0"
  6. Sitzung speichern und verbinden.
Ascalonian 03.03.2009 15:40
quelle

Tags und Links