¿Cuáles son las diferencias prácticas entre Interix y Cygwin?

14

Tanto Interix y Cygwin parecen proporcionar un entorno Unix de usuario en Windows. ¿Cuáles son las diferencias prácticas entre los dos, en términos de, por ejemplo:

  • Unix como "sentir"
  • Actuación
  • Disponibilidad de paquetes / facilidad para compilar software aleatorio descargado de Internet
  • Integración con aplicaciones y herramientas de Windows
  • Integración / compatibilidad con máquinas virtuales (por ejemplo, ¿es posible que Interix y una máquina virtual Ubuntu compartan el mismo "directorio de inicio")
  • Tamaño de la base de usuarios / nivel de soporte comunitario

Una diferencia que conozco es que Interix requiere Windows 7 Enterprise o Ultimate Edition; Cygwin se ejecutará en cualquier cosa.

ithinkihaveacat
fuente

Respuestas:

7

Solo he usado Windows SFU en Windows 2008 antes, pero creo que está basado en Interix. He jugado con Cygwin en ocasiones, pero no mucho, así que alguien, por favor, corrígeme si digo algo que obviamente está mal aquí.

  • Sensación de Unix: Interix gana este. El ambiente se siente mucho más "completo". No estoy seguro de cómo decirlo. Interix se ejecuta junto con el subsistema win32, donde cygwin se ejecuta encima de él. Entonces, interix es un "ciudadano de primera clase" en el kernel de Windows. Cosas como psy dffuncionan bien.
  • Rendimiento: al no haber realizado ninguna prueba de rendimiento importante, supongo que Interix también gana esto. De nuevo, se está ejecutando en un nivel inferior. No solo está ejecutando aplicaciones Win32 con una DLL de compatibilidad POSIX vinculada.
  • Paquetes / software aleatorio: Cygwin gana este por dos razones. En primer lugar, Cygwin es mucho más conocido. Una gran cantidad de software de Unixy tendrá soporte para sus peculiaridades. También puede instalar cosas muy fácilmente desde el instalador de la GUI. Interix no (creo) tiene algo como esto incorporado. Claro, puedes descargar algo, compilarlo usando gcc (que creo que puedes precompilar) y rezar para que funcione, pero es un poco como portar software a cualquier otra variante aleatoria de Unix (como Solaris o AIX), algunos las cosas funcionarán, otras intentarán morderte la pierna y asesinar a tus hijos.
  • Integración con las aplicaciones y herramientas de Windows: para ser honesto, ambos son una mierda. Si tiene, por ejemplo, un servidor Apache que se ejecuta dentro de Cygwin o Interix, entonces, seguro, podrá comunicarse a través de TCP con programas Win32, pero eso es lo más lejos que puede llegar. Desde el interior de interix, creo que puedes matar programas Win32 y enumerarlos usando ps, no estoy seguro de si puedes hacer esto con cygwin. Con ambos, puede usar el administrador de tareas de Windows para matar cosas.
  • Integración con máquinas virtuales: abordar su ejemplo de compartir un directorio de inicio, luego sí. Puede usar samba para esto, y creo que NFS también funciona en Interix para algo más unixy. Sin embargo, no encontrará ninguna GUI agradable ni nada que haga el trabajo por usted. Tanto cygwin como Interix le permiten acceder a sus sistemas de archivos regulares.
  • Tamaño de la base de usuarios: Cygwin gana aquí, diría. Fue muy difícil encontrar cosas que habían sido probadas y desarrolladas para ejecutarse en Interix, donde la mayoría de las cosas de código abierto parecían admitir cygwin como plataforma de compilación.

Si tiene una copia de un sistema operativo Windows que admitirá Interix (como usted dijo, una edición Enterprise, una edición Ultimate o una edición Server), no hay ningún daño en probarlo. Es un ambiente de sentimiento muy completo. Cygwin, como dijiste, funciona con todo, y es más conocido y mejor soportado, pero me parece un truco sucio. Sin embargo, algunas personas lo usan regularmente.

Andrés
fuente
En cuanto a los paquetes, el prefijo Gentoo para Interix podría valer la pena
Tobias Kienzler
1
Avanzando rápidamente hasta 2015, la respuesta ahora es simplemente "cygwin todavía está disponible y es compatible, mientras que Interix (también conocido como Servicios para Unix, también conocido como Subsistema para aplicaciones basadas en Unix) se suspende"
adib
3

/ * meta nota: odio que los comentarios sean tan cortos * /

La mayoría de las veces estoy de acuerdo con andrews respondiendo con un par de comentarios. He reemplazado muchos sistemas Unix con SUA / SFU (no, no son lo mismo pero están cerca) en Windows.

  • rendimiento: el SUA es mucho más rápido que los servicios para Unix, pero SFU tampoco se quedó atrás, ambos son generalmente más rápidos que Cygwin (pero no siempre)
  • Integración: la integración es el objetivo de SFU / SUA y hay muchos documentos sobre lo que puede y no puede hacer en el sitio de technet. Cygwin está diseñado para ejecutar el comando * nix en windows, no para hacer que los 2 cooperen. Consulte los componentes de interoperabilidad de Unix / Linux en Windows (SUA, IdMU, NFS, etc.)
  • base de usuarios: creo que hay más soluciones compatibles que funcionan en el lado de interix que en el lado de cygwin y muchos menos problemas de compatibilidad que con el lado de cygwin, consulte http://www.suacommunity.com/ (almacén de herramientas). Cygwin probablemente tenga más instalaciones en general, ya que es bueno para la solución "Necesito un shell de Unix". Cygwin ejecuta comandos, SUA es un entorno de Unix que es similar a Windows.
Jim B
fuente
1

No puedo comentar sobre la respuesta de JimB, así que aborda aquí, en particular el punto sobre la integración de Windows. Cygwin se basa en Win32 en lugar de ejecutarse en su propio subsistema, aunque más lento, proporciona una integración de Windows mucho mayor. Incluso permite que las API de Windows y UNIX se utilicen en el mismo programa, lo que permite cosas como el servidor Cygwin X o el terminal mintty.

La 'ps' de Cygwin enumera los procesos de Windows si le da la opción -W, y 'kill -f' los matará. Los programas de Windows pueden invocarse desde Cygwin y conectarse con los programas de Cygwin utilizando todos los mecanismos habituales, como las canalizaciones. (No sé si eso es posible en Interix).

Se admiten rutas de estilo Windows, tanto con barras inclinadas hacia adelante como hacia atrás. Cygwin 1.7 convirtió a UTF-8 en el conjunto de caracteres predeterminado, y los nombres de archivo UTF-16 de Windows se traducen automáticamente, por lo que los nombres de archivo en cualquier idioma se muestran correctamente en Cygwin. No sé qué hace Interix aquí, pero no pude encontrar ninguna evidencia de que sea compatible con Unicode.

Otras características de integración incluyen la utilidad 'cygstart' para abrir un archivo como si hiciera doble clic en el Explorador, y el dispositivo / dev / portapapeles para acceder al portapapeles de Windows.

ak2
fuente
3
¿Cómo proporciona una "integración de Windows mucho mayor"? "Incluso permite que las API de Windows y UNIX se utilicen en el mismo programa"; esto también es cierto para Interix; vea esto para la fuente de la primera parte; diapositiva 37, "Procesos de modo mixto", que tiene la viñeta "El proceso de modo mixto resultante puede realizar llamadas de API SUA y Windows en el mismo proceso"
user314104
1

Permítanme compartir mi experiencia instalando Interix para Windows 7.

Nuestro viaje comienza en una página oscura para Windows Server 2008.

Aquí descubrirá que ya ni siquiera se llama Interix, sino Subsistema para aplicaciones basadas en Unix o SUA . A continuación, solo notará en un comentario de usuario que SUA solo está disponible para Windows 7 Ultimate o Enterprise. Esto no se menciona en el artículo en ninguna parte. Después de instalar el "subsistema", se dará cuenta de que no hay más de 2 accesos directos en su menú de inicio.

sua

Ahora llegas al mal real. Haga clic en el acceso directo para Descargar y accederá a la página de descarga.

antiguo

Aquí tenemos 3 archivos disponibles para descargar. Estos archivos tienen más de 400 MB y, a partir de este escrito, tienen más de 4 años . Además, no tenemos opciones para descargar paquetes personalizados, ciertas partes, etc. Entonces se dará cuenta de que este enlace es en realidad para Vista y no para Windows 7, y tendrá que buscar en Internet para encontrar la página de Windows 7 . En este punto me di por vencido.

Cygwin

Vaya a cygwin.com . Descargue cygwin.com/setup-x86.exe . Este archivo tiene 714 KB . Ejecute una instalación básica y verá que demora aproximadamente 2 minutos .

hora

Después de eso, puede reutilizar el instalador para muchos otros paquetes según sus preferencias. Moraleja de la historia es que Cygwin se preocupa por el usuario .

Steven Penny
fuente
Permítame entenderlo correctamente, porque no ha habido necesidad de cambiar el instalador para ejecutar la versión de Unix que viene con win 7 de alguna manera que significa no preocuparse, y el hecho de que Cygwin realmente le permite descargar piezas (que luego puede tener que volver y obtener más) es de alguna manera una ventaja? Ciertamente, la reciente decisión de eliminar los componentes de Unix de Windows es una señal de que los usuarios no están ejecutando Unix bajo Windows (en mi humilde opinión) o que de alguna manera simplemente no les importa, pero realmente no estoy viendo eso.
Jim B
@JimB No "viene" con Windows 7. Pensé que mi publicación lo dejó claro. Solo está disponible para Win7 ultimate y debes descargarlo. Además, la descarga tiene 4 años. En la comunidad de software, eso es toda una vida y muestra una clara falta de dirección / iniciativa de Microsoft.
Steven Penny
3
viene con Windows, lo que está descargando son comandos Unix que están usando el subsistema. Dado que algunos de los comandos en Linux tienen más de 40 años, no me sorprende que no hayan tenido que reescribirse (y, según su estándar, supongo que ya nadie usa Linux o Unix desde hace décadas). Se agregan nuevas herramientas y comandos a la comunidad SU en suacommunity.com/tool_warehouse.htm
Jim B
2
Por extraño que parezca, tuve que revisar algunos de los códigos y sí, es el mismo código de hace 40 años, supongo que la gente de GNU está haciendo algo terriblemente mal, o tal vez, solo tal vez, no hay necesidad de cambiar algo que no es t roto
Jim B
0

La "sensación" tipo UNIX es bastante subjetiva. Mi voto va con CygWin ya que tiene el servidor CygWin / X Xwindows con todas las características necesarias. SFU obtuvo las herramientas básicas X11, pero era muy poco y demasiado tarde. Muchos (incluido yo) se presentaron a CygWin por la necesidad de tener un servidor X11. En términos de integridad, CygWin también está mejor posicionado, ya que es de código abierto y se le transfiere una gran cantidad de software con licencia GNU o GPL. He visto pocos productos comerciales para CygWin, mientras que solo he visto un producto que requiere servicios UNIX para Windows NT y ninguno desde entonces. YMMV.

Disponibilidad de paquetees una clara victoria para CygWin influenciada por varios factores: - menor costo de entrada: "cualquier Windows" con CygWin vs. licencia de clase de servidor para SFU / SUA. Algunas funcionalidades están disponibles para los sabores de escritorio de Windows pero de las variedades más caras y sin los componentes del servidor; - fuente abierta vs. fuente cerrada y, lo que es más importante, documentación abiertamente disponible. En el pasado, incluso la lista de comandos y las API proporcionadas estaban disponibles solo para suscriptores de MSDN y había poca o ninguna información disponible en el sitio de Microsoft. En contraste, el conjunto de herramientas GNU estaba bien documentado y disponible tanto en línea como en páginas de manual; - los cambios de nombre e implementación son confusos. Las primeras versiones usaban el kit de herramientas MKS que luego fue abandonado.

En cuanto al rendimiento, se puede argumentar que Interix está más cerca del núcleo y, por lo tanto, disfruta de una ruta de ejecución de código más corta. La verdadera pregunta es por cuánto y ¿importa? Para la mayoría de los programas, la diferencia es de un pequeño porcentaje y es insignificante. Se puede mencionar un ejemplo artificial con E / S pesadas, por supuesto. Preferiría poner tales cargas en UNIX nativo, ya que sería más rápido que los complementos nativos de Windows y UNIX sobre Windows. Muchos han migrado de Windows a UNIX con el aumento de la carga, mientras que no conozco ningún ejemplo de conversión de CygWin a Interix (o viceversa). Lo que se busca es la compatibilidad con UNIX y no el rendimiento de UNIX, así que pongo esto al final de la lista.

Goldie
fuente
2
En cuanto al rendimiento, Interix realmente gana aquí; Muchas de las cosas implementadas tradicionalmente como * nix syscalls (como fork ()) son kludges implementados sobre Win32 en Cygwin. Win32 no tiene ninguna noción de fork (), pero Interix (y NT) sí. Cygwin tiene problemas con eso, obtener el espacio de direcciones exactamente correcto para fork (), y eso lleva a algunos problemas serios de rendimiento. Alguien seguramente se molestará por el enlace que contiene más que este comentario, pero aquí está, directamente desde el grifo .
user314104