2010-11-18 11 views
166

tengo las siguientes casillas:trabajar en un proyecto con Eclipse remota a través de SSH

  1. la casilla A de Windows con Eclipse CDT,
  2. casilla A Linux, accesible sólo para mí a través de SSH.

Tanto el compilador y el hardware necesario para generar y ejecutar mi proyecto es única en la máquina B.

me gustaría trabajar "transparente" de un cuadro de Windows en ese proyecto usando Eclipse CDT y estar capaz de construir, ejecutar y depurar el proyecto de forma remota desde el IDE.

¿Cómo puedo configurar que:

  • El edificio va a funcionar? ¿Alguna solución más simple que escribir un archivo MAKE local que haría rsync el proyecto y luego llamar a un archivo MAKE remoto para iniciar la construcción real? ¿Tiene Eclipse Manage Build una función para eso?
  • ¿La depuración funcionará?
  • Preferiblemente, ¿la indexación del código Eclipse CDT funcionará? ¿Debo copiar todos los archivos de encabezado requeridos de la máquina B a la máquina A y agregarlos para incluir la ruta manualmente?
+4

Kos, ¿acabaste usando RSE? ¿Cómo fue tu experiencia? –

+2

Me las arreglé para hacerlo, pero: a) CDT tuvo algunos problemas para conocer el sistema de archivos virtual (AFAIK es un problema temporal y se desvanecerá cuando reescriban algunas cosas en una API más nueva, ¿quizás ya lo hicieron? IDK) yb) Tuve que enrollar mi propia cadena de compilación (a través de un archivo MAKE personalizado) yc) una desagradable molestia: el archivo guardado tardó entre 2 y 3 segundos y esto fue perturbador. – Kos

+1

Si tuviera que trabajar de forma remota de nuevo hoy, probablemente daría otra vuelta con RSE, pero podría resultar más factible mantenerlo como un proyecto local y armar un sistema de compilación personalizado, basado en, p. 'rsync' como he mencionado. – Kos

Respuesta

184

Pruebe el Remote System Explorer (RSE). Es un conjunto de complementos para hacer exactamente lo que quieres.

RSE ya puede estar incluido en su instalación actual de Eclipse. Para comprobar en Eclipse Indigo ir a Ventana> Abrir perspectiva > Otro ... y elija Explorador de sistemas remotos de la Abrir perspectiva de diálogo para abrir la perspectiva de RSE.

para crear un proyecto remoto SSH desde la perspectiva de RSE en Eclipse:

  1. definir una nueva conexión y seleccione SSH Sólo desde la pantalla de selección de tipo de sistema remoto en el cuadro de diálogo Nueva conexión.
  2. Ingrese la información de conexión y luego elija Finalizar.
  3. Conéctese al nuevo host. (Se asume que las claves SSH ya son configurados.)
  4. Una vez conectado, profundizar en Sftp archivos del huésped, seleccione una carpeta y seleccione Crear proyecto remoto desde el menú contextual del elemento. (Espere mientras se crea el proyecto remoto)

Si se hace correctamente, ahora debe haber un nuevo proyecto remoto accesible desde el Explorador de proyectos y otras perspectivas dentro de eclipse. Con la configuración de conexión SSH correctamente, las contraseñas se pueden convertir en una parte opcional del proceso normal de autenticación SSH. Se ha creado un proyecto remoto con Eclipse vía SSH.

+4

Genial, no sabía de eso. Hace que mi respuesta sea obsoleta :) – Lagerbaer

+2

RSE sigue siendo complicado. La mejor idea de RSE es que Eclipse haga todo a través de una conexión SSH, pero esa función aún no funciona. La función de trabajo implica algún servidor que necesita configurar en el cuadro de Linux. – Ioan

+0

Si todo lo demás falla, modifique el proyecto localmente. Luego instala cygwin o mingw para obtener "rsync". Eso le permite copiar eficientemente los archivos a través de SSH a la caja remota de Linux. E instale Putty para obtener una consola remota. Ahora solo necesita memorizar esta secuencia de teclas "Ctrl + S Alt-Tab Alt-Tab Arriba Volver Alt-Tab Alt-Tab Arriba Volver" (guardar en Eclipse, ir a la consola con "rsync", ejecutarlo de nuevo, ir to putty, ejecuta el comando 'make' en Linux). –

9

La forma más simple sería ejecutar Eclipse CDT en la Caja de Linux y usar X11-Forwarding o software de escritorio remoto como VNC.

Esto, por supuesto, solo es posible cuando Eclipse está presente en la caja de Linux y su conexión de red a la caja es lo suficientemente rápida.

La ventaja es que, debido a que todo es local, no tendrá problemas de sincronización y no tendrá problemas incómodos con otras plataformas.

Si no tiene eclipse en la caja, podría pensar en compartir su directorio de trabajo de linux a través de SMB (o SSHFS) y acceder desde su máquina de Windows, pero eso requeriría bastante configuración.

Ambos serían mejores que tener dos copias, especialmente cuando es multiplataforma.

+1

Estoy miedo de que el linux box ni siquiera tenga X11. :) – Kos

+2

@Kos, necesita que el servidor X11 se ejecute donde se sienta físicamente, ya sea con un Linux en una máquina virtual o un servidor X11 para Windows y Eclipse para ejecutarlo en el servidor Linux. ssh solo permite tunelizar los datos de la red; encontrará compresión + "-c blowfish" para ayudar a la experiencia. –

+0

Solo para aclarar: ¿se refiere a lo que se llama "Eclipse sin cabeza" en la máquina remota? (Bueno, siempre que tenga Java :)). Estaba buscando una solución ligera para el lado del cliente, pero tener algo de configuración en la máquina remota también podría ser una opción. – Kos

2

tuve el mismo problema hace 2 años y lo resolví de la siguiente manera:

1) construyo mis proyectos con archivos make, no gestionados por el eclipse 2) utilizo una conexión SAMBA para editar los archivos dentro de Eclipse 3) Creación del proyecto: Eclipse llama una marca "local" con un archivo MAKE que abre una conexión SSH al host de Linux. En la línea de comandos SSH puede dar los parámetros que se ejecutan en el host Linux. Utilizo para ese parámetro un script de shell makeit.sh que llama a la marca "real" en el host de Linux. Los diferentes objetivos para la construcción también puede dar por parámetros desde el archivo make local -> makeit.sh -> makefile en el host de Linux.

+0

Agradable, pero no se puede llamar "transparente": no permite la depuración como mínimo. También podría basarse en RSync en lugar de Samba (que es lo que tenía antes de publicar mi pregunta original). – Kos

6

Estoy en el mismo lugar yo mismo (o lo estuve), FWIW Terminé revisando un compartimiento de samba en el host de Linux y editando ese compartimiento localmente en la máquina de Windows con notepad ++, luego compilé en la caja de Linux a través de PuTTY. (No se nos permitió actualizar las versiones de diez y/o de los editores en el host Linux y no tenía Java, así que renuncié al reenvío X11)

Ahora ... ejecuto Linux moderno en una máquina virtual en mi host de Windows, agregue todas las herramientas que quiero (por ejemplo, CDT) a la máquina virtual y luego pago y construir en una cárcel chroot que se parece mucho a la RTE.

Es una solución torpe pero pensé en echarla en la mezcla.

3

Mi solución es similar a la de SAMBA excepto que usa sshfs. Monte mi servidor remoto con sshfs, abra mi proyecto makefile en la máquina remota. Ir desde allí

Parece que puedo ejecutar una interfaz gráfica de usuario para mercurial de esta manera también.

Construyendo mi remota de código es tan simple como: dirección de ssh remote_make_command

Busco una manera decente para depurar sin embargo. Posiblemente a través de gdbserver?

1

Probé ssh -X pero era insoportablemente lento. También probé con RSE, pero ni siquiera soporté la construcción del proyecto con un Makefile.

He leído que NX es más rápido que el reenvío de X11, pero no pude hacerlo funcionar.

Finalmente, descubrí que mi servidor es compatible con X2Go (el enlace tiene instrucciones de instalación si las tuyas no). Ahora sólo tenía que:

  • descarga y descomprimir Eclipse en el servidor,
  • instalar X2Go en mi máquina local (sudo apt-get install x2goclient en Ubuntu),
  • configurar la conexión (host, inicio de sesión automático con llave ssh , elija ejecutar Eclipse).

Todo es como si estuviera trabajando en una máquina local, incluida la construcción, la depuración y la indexación de código. Y no hay retrasos notables.

Cuestiones relacionadas