¿Cómo desarrollar en Windows y probar y ejecutar en Linux?

12

Soy uno de los dos desarrolladores de algún software interno (escrito en python) en mi empresa. El software es una aplicación de servidor diseñada para ejecutarse en una caja de Linux dedicada. Actualmente, tenemos un cuadro que contiene nuestro repositorio SVN y este cuadro también se usa para pruebas. El problema es que lo estoy desarrollando en mi estación de trabajo usando Eclipse en Windows y esta aplicación no puede ejecutarse en Windows.

¿Cómo organizar adecuadamente dicho entorno para que no pueda perder un tiempo valioso al transferir el proyecto y el código para poder probarlo?

Actualmente estoy haciendo el pago de svn, cambio un código y luego lo subo al servidor de desarrollo para probarlo (no a través de svn). Pruébelo en el servidor, cambie algo, pruébelo de nuevo, etc. Después de todo eso viene el commit. Esta carga y prueba constantes me están volviendo loco. Intenté mantener el proyecto en el servidor (pago al directorio de inicio) pero esto causa muchos problemas con Eclipse.

Obviamente no tengo mucha experiencia en esto, por lo que pregunto cuáles son las mejores prácticas con respecto a este tipo de problemas.

c0ldcrow
fuente

Respuestas:

14

Monte la carpeta en la caja de Linux. De esa manera puedes interactuar directamente con el código. Funciona un encanto!

l0b0
fuente
Esta es la respuesta correcta. Especialmente si puedes ejecutar Cygwin en tu ventana de Windows; puede usar Cygwin para mostrar el X-Windows de Linux (Gnome, KDE, lo que los niños geniales están usando estos días) de regreso a su ventana de Windows. Puede programar en Eclipse directamente en el cuadro de Linux e inmediatamente probarlo.
Kristofer Hoch
3
Solo tenga cuidado con las diferencias en los sistemas de archivos. Windows no admite nombres de archivo que distingan entre mayúsculas y minúsculas (donde "nombre de archivo" y "NOMBRE DE ARCHIVO" son dos archivos diferentes), algunos caracteres como nombre de archivo (es decir, "/") o enlaces suaves.
bitsoflogic
De acuerdo, esta es la opción más útil y más fácil de implementar. Configurar una máquina virtual de la manera que quiero requeriría demasiado tiempo.
c0ldcrow
@ c0ldcrow: Aparte de los problemas del sistema de archivos, solo tenga en cuenta que, dependiendo de lo que esté haciendo, acceder a los archivos a través de una red para realizar trabajos de desarrollo puede ser prohibitivamente lento. En particular, he notado que algunos sistemas de control de versiones son muy lentos cuando se usan en una unidad de red, aunque este caso en particular no debería ser un problema para usted (haga todo su control de fuente localmente).
Matthew Scharley
10

La mejor solución en mi opinión sería utilizar un entorno virtualizado para las pruebas, si su PC local tiene los recursos para ejecutar uno.

Para ver algunas recomendaciones sobre productos específicos, puede ver mi respuesta a una pregunta sobre StackOverflow , pero en general, lo que esto significa es que tendrá una segunda PC con Linux funcionando dentro de la actual. Lo uso para el desarrollo de PHP en Windows todo el tiempo y me funciona muy bien. Puede compartir su base de código con SSH / ExpanDrive o si está utilizando VirtualBox, consulte las carpetas compartidas .

Matthew Scharley
fuente
6

Sugerencia 1: trabaje en Linux directamente, si tiene tiempo para aprenderlo. Aprender cómo funciona otro sistema operativo es realmente excelente para su experiencia personal, y agregar a su CV que sabe cómo usar Linux no está de más. Además, Eclipse existe en Linux, por lo que no pierde nada frente a Windows.

Sugerencia 2: instale Linux en una máquina virtual localmente. Le permitirá probar la aplicación sin tener que publicarla en un servidor distante cada vez.

Nota: ¿cómo puede escribir una aplicación dirigida a Linux si trabaja con Windows? ¡Es una pesadilla!

Arseni Mourzenko
fuente
Incluso si tiene probadores, debe hacer algunas pruebas limitadas en su propio trabajo, incluso si es solo para asegurarse de que realmente se compila / ejecuta. Si está desarrollando en una caja de Windows pero está desarrollando una aplicación de Linux, entonces esto se vuelve un poco más difícil. En la nota de cómo puedes hacerlo, es bastante fácil hacerlo con la configuración correcta. Utilizo muchas máquinas virtuales en mi propio trabajo (PHP / MySQL dirigido a un servidor final de Linux) y en realidad funciona muy bien, especialmente si tienes más de 2 monitores para trabajar.
Matthew Scharley
Ya soy muy bueno con Linux (he configurado el servidor de prueba y SVN). También hago codificación de Windows (necesito Visual Studio) y, en general, me gusta más Windows :) El desarrollo de software no es el negocio principal de mi empresa, la seguridad informática es, esta es solo una aplicación interna que necesitamos. Creo que puedo aceptar instalar Linux en una VM
c0ldcrow
@ Matthew Scharley: Estoy de acuerdo. Eliminé mi segunda nota.
Arseni Mourzenko
@ c0ldcrow: por lo que no debe ser un problema para usted tener un entorno virtual solo para desarrollar esta aplicación (o solo para probarla, mientras escribe código en Windows)
Arseni Mourzenko
2

Si estás usando eclipse, hay un complemento perfecto para ti: Filesync Lo uso todo el tiempo y estoy seguro de que te encantará.

Esto es lo que normalmente hago, ya que estoy trabajando en las mismas condiciones que tú.

Comprobé el proyecto desde SVN usando Eclipse en mi máquina. Luego sincronizo mi proyecto local con el servidor de desarrollo remoto | excluyendo archivos como .project y tal. Le recomiendo que también coloque su clave SSH en el servidor remoto para acelerar la conexión.

¡Y voilá! Ahora puede trabajar localmente y eclipse sincronizará automáticamente cualquier cambio que realice en el servidor remoto. Cuando todo esté bien probado y listo para ser entregado, ¡también puede comprometerse con eclipse! ¡No hay necesidad de masilla!

¡Espero eso ayude!

Alfwed
fuente
0

Logré escribir código c # / mono en Visual Studio y depurar de forma remota en un cuadro de Linux desde VS usando un complemento de depurador remoto GDB. Funcionó asombrosamente bien. Me imagino que sería más rápido si su instalación de Linux está en una VM local (hay un buen dispositivo VMWare Ubuntu disponible en la web), pero necesitaba un conjunto de tarjetas Tesla GPU que no estaban instaladas en mi computadora portátil.

Busque WinGDB. No es gratis, pero funciona increíblemente bien.

3Dave
fuente