GNU/Linux >> Tutoriales Linux >  >> Linux

Diferencia entre GNUWin32 y cygwin

Cygwin es una biblioteca que se esfuerza por hacer que los programas UNIX puedan compilarse y ejecutarse en sistemas Windows con modificaciones mínimas o sin modificaciones, y un conjunto completo de herramientas y aplicaciones UNIX empaquetadas compiladas con esta biblioteca. Es casi una envoltura completa alrededor de Windows. Incluye un servidor X y una gran cantidad de programas que puede esperar encontrar en una distribución de Linux. Es genial para las personas que quieren aprender o usar la línea de comandos de UNIX en Windows.

MSYS es principalmente un puerto de las herramientas UNIX necesarias para construir paquetes de estilo GNU (con un configure etc) en sistemas Windows con el compilador MinGW. Utiliza una variante de la biblioteca Cygwin modificada para sacrificar algo de compatibilidad por eficiencia y es más compatible con Windows.

GnuWin32 es simplemente un puerto de algunas de las herramientas GNU para Windows. Al igual que MSYS, usa msvcrt.dll , así como una biblioteca adicional para proporcionar algunas funciones de compatibilidad con UNIX. Su objetivo principal parece ser permitir que los programas de Windows y los archivos por lotes utilicen directamente algunos de los programas y bibliotecas de GNU.

En su mayor parte, todos proporcionan programas UNIX en Windows, pero hay muchas diferencias sutiles, que incluyen:

  • Intención. Cygwin es para personas que quieren usar UNIX en su sistema operativo Windows. MSYS es para personas que quieren construir programas de Windows utilizando las herramientas de construcción GNU/UNIX. GnuWin32 es un puerto de bibliotecas y programas GNU individuales para Windows.
  • Archivos de texto, particularmente finales de línea. Cygwin le permite usar CR/LF o LF. MSYS espera finales de línea LF. Los programas GnuWin32 esperan finales de línea CR/LF.
  • Programas suministrados. En particular, Cygwin tiene muchos más paquetes y GnuWin32 no proporciona shells.

En cuanto a git, está disponible con Cygwin:esta versión se puede usar en un directorio de Windows (accesible en /cygdrive ). Además, como se mencionó, existe msysgit.


Michael Slade tiene razón. Me gustaría hablar sobre el entorno de uso típico.

Por razones prácticas, uso gnuwin como un back-end ligero para cosas relacionadas solo remotamente con entornos POSIX, mientras que cygwin es más un POSIX completo e incluso un entorno muy gnunix.

Además, gnuwin tiende a inflarse cuando se instalan muchas herramientas porque los ejecutables a menudo usan bibliotecas enlazadas estáticamente. Cygwin, por otro lado, ofrece una tonelada de bibliotecas dinámicas y ejecutables bastante pequeños. Entonces, si solo necesita unos pocos ejecutables, gnuwin necesita menos recursos. Si necesita un entorno complejo, cygwin será más eficiente.

gnuwin también suele estar un poco desactualizado, ofrece poco software, no tiene administrador de paquetes/actualizaciones. Es un entorno shell básico. No ssh, no gcc, vim, no perl, no sql:puede obtenerlos de otras fuentes, pero es difícil predecir cómo cooperan. Cygwin soluciona todos los problemas anteriores.

En otras palabras, gnuwin es genial para el instalador ocasional, simplemente para poner du, find y sort en su $PATH. Para hacer un trabajo POSIX real, use cygwin.

Una vez tuve una segunda estación de trabajo Linux, luego una máquina virtual Linux ejecutándose junto a mi sistema Windows. Cygwin los hizo obsoletos. Es lo suficientemente bueno para muchas cosas mientras ahorra toneladas de recursos en comparación con una computadora dedicada o una VM.


Linux
  1. ¿Diferencia entre Shell de inicio de sesión y Shell sin inicio de sesión?

  2. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  3. ¿Diferencia entre 2>&-, 2>/dev/null, |&, &>/dev/null y>/dev/null 2>&1?

  4. Diferencia entre ${} y $() en Bash

  5. diferencia entre cgroups y espacios de nombres

Explicación de la diferencia entre apt y apt-get

¿Diferencia entre tubería y expansión de comando?

¿Diferencia entre el usuario de Sudo y el usuario raíz?

¿Cuál es la diferencia entre una consola, una terminal y un shell?

¿Diferencia entre $HOME y '~' (tilde)?

diferencia entre netstat y ss en linux?