Cygwin ( / ˈ s ɪ ɡ w ɪ n / SIG -win ) [3] es un entorno gratuito y de código abierto similar a Unix y una interfaz de línea de comandos 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 predeterminada que se proporciona para interactuar con el entorno. [5] El diseño del directorio de instalación de Cygwin imita el sistema de archivos raíz de sistemas tipo Unix, con directorios como /bin, /home, /etc, /usr y /var.
Cygwin se publica bajo la licencia pública general reducida de 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 de Linux a Win32 , incluido 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 "Consigue esa sensación de Linux en Windows". [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 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 reorientar GCC y producir un compilador cruzado que generara ejecutables que pudieran ejecutarse en Windows. Posteriormente se desarrolló un prototipo. Chamberlain arrancó el compilador en un sistema Windows, para emular Unix y permitir que se ejecutara el script de configuración de GNU .
Inicialmente, Cygwin se llamaba 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] Las versiones posteriores no se han publicado, sino que se basan en lanzamientos continuos de código abierto.
Geoffrey Noer fue el líder del proyecto de 1996 a 1999. [12] [13] Christopher Faylor fue el líder de 1999 a 2004; Dejó Red Hat y se convirtió en codirector de Corinna Vinschen. [14] [15] Corinna Vinschen ha sido la líder del proyecto desde mediados de 2014 hasta la fecha (al 30 de marzo de 2023). [dieciséis]
Desde el 23 de junio de 2016, la versión 2.5.2 de la biblioteca Cygwin obtuvo la licencia GNU Lesser General Public License (LGPL) versión 3. [17]
Cygwin se proporciona en dos versiones: la versión completa de 64 bits y una versión simplificada 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 Windows. llamadas al sistema 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 X Window System , K Desktop Environment 3 , GNOME , [19] Apache y TeX . Cygwin permite instalar inetd , syslogd , sshd , Apache y otros demonios 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 Cygwin tiene la licencia GNU Lesser General Public License versión 3 (o posterior), con una excepción para permitir el enlace a cualquier software gratuito 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 conjunto de atributos del sistema. Cygwin 1.5 los representaba como accesos directos del Explorador de Windows , pero esto se cambió 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 manejar 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 (de forma predeterminada) o en modo texto, lo que permite la conversión automática entre terminaciones LF y CRLF (lo que sólo afecta a los programas que abren archivos sin especificar explícitamente texto o modo 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 Cygwin contiene un controlador de consola que emula una terminal 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 Cygwin. La DLL también implementa dispositivos pseudo terminales (pty). Cygwin viene con varios emuladores de terminal basados en ellos, incluidos mintty , rxvt /urxvt y xterm . La versión de GCC que viene con Cygwin tiene varias extensiones para crear archivos 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 Cygwin DLL solía incluirse en el GCC predeterminado, pero a partir de 2014 [update], lo proporcionan compiladores cruzados aportados por el proyecto MinGW-w64 .
La selección del paquete base de Cygwin es de aproximadamente 100 MB, [26] y contiene los shells bash (usuario interactivo) y dash (instalación) y las utilidades principales de manipulación de archivos y texto. Hay paquetes adicionales disponibles como instalaciones opcionales desde el programa de "configuración" de Cygwin y el administrador de paquetes ("setup-x86_64.exe" – 64 bits). [27] El proyecto Cygwin Ports proporcionó [ ¿cuándo? ] paquetes adicionales que no estaban disponibles en la propia distribución Cygwin. Los ejemplos incluyeron GNOME , K Desktop Environment 3 , la base de datos MySQL y el lenguaje de programación PHP . La mayoría de los puertos han sido adoptados por mantenedores voluntarios como paquetes Cygwin, y los puertos Cygwin ya no reciben mantenimiento. Cygwin se envía con GTK+ y Qt .
El proyecto Cygwin/X permite que los programas gráficos de Unix muestren sus interfaces de usuario en el escritorio de Windows tanto para programas locales como remotos.