Cygwin ( / ˈ s ɪ ɡ w ɪ n / SIG -win ) [3] es un entorno tipo Unix y una interfaz de línea de comandos (CLI) libre y de código abierto para Microsoft Windows . El proyecto también proporciona un repositorio de software que contiene muchos paquetes de código abierto . Cygwin permite compilar y ejecutar código fuente para sistemas operativos tipo Unix en Windows. Cygwin proporciona integración nativa de aplicaciones basadas en Windows. [4]
El emulador de terminal Mintty es la interfaz de línea de comandos (CLI) predeterminada proporcionada para interactuar con el entorno. [5] El diseño del directorio de instalación de Cygwin imita el sistema de archivos raíz de los sistemas tipo Unix, con directorios como /bin
, /home
, /etc
, /usr
y /var
.
Cygwin se publica bajo la Licencia Pública General Reducida GNU versión 3. [6] Fue desarrollado originalmente por Cygnus Solutions , [7] [8] que luego fue adquirida por Red Hat (ahora parte de IBM ), para portar la cadena de herramientas GNU a Win32 , incluyendo GNU Compiler Suite . En lugar de reescribir las herramientas para usar el entorno de ejecución Win32 , Cygwin implementó un entorno compatible con POSIX en forma de DLL. [9]
El lema de la marca es " Obtenga esa sensación de Linux en Windows ", aunque Cygwin no incluye Linux. [10]
Cygwin comenzó en 1995 como un proyecto de Steve Chamberlain, un ingeniero de Cygnus que observó que Windows NT y 95 usaban COFF como su formato de archivo objeto , y que GNU ya incluía soporte para x86 y COFF, y la biblioteca C newlib . Pensó que sería posible redirigir GCC y producir un compilador cruzado que generara ejecutables que pudieran ejecutarse en Windows. Más tarde se desarrolló un prototipo. Chamberlain instaló el compilador en un sistema Windows, para emular Unix y permitir que se ejecutara el script de shell de configuración de GNU .
Inicialmente, Cygwin se llamó gnuwin32 . [nota 1] Cuando Microsoft registró la marca Win32, el "32" se eliminó para convertirse simplemente en Cygwin .
En 1999, Cygnus ofreció Cygwin 1.0 como producto comercial . [11] No se han publicado versiones posteriores, sino que se ha recurrido a lanzamientos continuos de código abierto.
Geoffrey Noer fue el líder del proyecto desde 1996 hasta 1999. [12] [13] Christopher Faylor fue el líder desde 1999 hasta 2004; dejó Red Hat y se convirtió en codirector junto con Corinna Vinschen. [14] [15] Corinna Vinschen ha sido la líder del proyecto desde mediados de 2014 hasta la fecha (a septiembre de 2024). [16]
A partir del 23 de junio de 2016, la versión 2.5.2 de la biblioteca Cygwin fue licenciada bajo la Licencia Pública General Reducida GNU (LGPL) versión 3. [17]
Cygwin se proporciona en dos versiones: la versión completa de 64 bits y una versión reducida de 32 bits , cuya versión final se lanzó en 2022. [18] Cygwin consta de una biblioteca que implementa la API de llamadas al sistema POSIX en términos de llamadas al sistema de Windows para permitir la ejecución de una gran cantidad de programas de aplicación equivalentes a los de los sistemas Unix , y una cadena de herramientas de desarrollo GNU (incluidos GCC y GDB ). Los programadores han portado el sistema X Window System , K Desktop Environment 3 , GNOME , [19] Apache y TeX . Cygwin permite instalar inetd , syslogd , sshd , Apache y otros daemons como servicios estándar de Windows . Los programas Cygwin tienen acceso completo a la API de Windows y otras bibliotecas de Windows.
Los programas Cygwin se instalan ejecutando el programa "setup" [20] de Cygwin , que los descarga desde repositorios en Internet.
La biblioteca API de Cygwin está licenciada bajo la Licencia Pública General Reducida de GNU versión 3 (o posterior), con la excepción de permitir la vinculación a cualquier software libre y de código abierto cuya licencia se ajuste a la Definición de Código Abierto . [21]
Cygwin consta de dos partes:
Cygwin admite enlaces simbólicos POSIX , representándolos como archivos de texto sin formato con el atributo system establecido. Cygwin 1.5 los representaba como accesos directos del Explorador de Windows , pero esto se modificó por razones de rendimiento y corrección de POSIX. Cygwin también reconoce puntos de unión NTFS y enlaces simbólicos y los trata como enlaces simbólicos POSIX, pero no los crea. Se admite la API POSIX para gestionar listas de control de acceso (ACL). [22]
Una versión específica de Cygwin del mount
comando Unix permite montar rutas de Windows como "sistemas de archivos" en el espacio de archivos Unix. Los puntos de montaje iniciales se pueden configurar en /etc/fstab
, que tiene un formato muy similar a los sistemas Unix, excepto que las rutas de Windows aparecen en lugar de los dispositivos. Los sistemas de archivos se pueden montar en modo binario (por defecto), o en modo texto, lo que permite la conversión automática entre las terminaciones LF y CRLF (que solo afecta a los programas que abren archivos sin especificar explícitamente el modo texto o binario).
Cygwin 1.7 introdujo soporte integral para configuraciones regionales POSIX y la codificación Unicode UTF-8 se convirtió en la predeterminada.
La llamada al sistema fork para duplicar un proceso está completamente implementada, pero no se pudo utilizar la estrategia de optimización de copia en escritura . [23] [24] [25]
La DLL de Cygwin contiene un controlador de consola que emula una terminal de estilo Unix dentro de la consola de Windows . La interfaz de usuario predeterminada de Cygwin es el shell bash que se ejecuta en la consola de Cygwin. La DLL también implementa dispositivos pseudoterminal (pty). Cygwin se entrega con una serie de emuladores de terminal que se basan en ellos, incluidos mintty , rxvt /urxvt y xterm . La versión de GCC que viene con Cygwin tiene varias extensiones para crear DLL de Windows, como especificar si un programa es un programa en modo ventana o consola. El soporte para compilar programas que no requieren la capa de compatibilidad POSIX proporcionada por la DLL de Cygwin solía estar incluido en la GCC predeterminada, pero a partir de 2014 [update], lo proporcionan los compiladores cruzados aportados por el proyecto MinGW-w64 .
La selección de paquetes básicos de Cygwin es de aproximadamente 100 MB, [26] que contienen los shells bash (usuario interactivo) y dash (instalación) y las utilidades de manipulación de archivos y texto principales. Hay paquetes adicionales disponibles como instalaciones opcionales desde dentro del programa de "configuración" de Cygwin y el administrador de paquetes ("setup-x86_64.exe" - 64 bit). [27] El proyecto Cygwin Ports proporcionó [ ¿cuándo? ] paquetes adicionales que no estaban disponibles en la propia distribución Cygwin. Los ejemplos incluían GNOME , K Desktop Environment 3 , la base de datos MySQL y el lenguaje de scripting PHP . La mayoría de los ports han sido adoptados por mantenedores voluntarios como paquetes Cygwin, y los Cygwin Ports ya no se mantienen. Cygwin se entrega con GTK+ y Qt .
El proyecto Cygwin/X permite que los programas gráficos Unix muestren sus interfaces de usuario en el escritorio de Windows tanto para programas locales como remotos.