GNU/Linux >> Tutoriales Linux >  >> Linux

Creando un sistema híbrido Linux-Windows con Cygwin

Si nunca has oído hablar de Cygwin, te espera una sorpresa. Lo he usado durante años para homogeneizar mis entornos en uno donde puedo escribir scripts una vez y entregarlos en todas partes para obtener soluciones de automatización consistentes. Es una molestia escribir secuencias de comandos bash que funcionan en Linux, en Mac y en Unices comerciales, y luego tener que saltar de cabeza a PowerShell y archivos por lotes para intentar igualar el nivel de automatización que puedo lograr con algunas secuencias de comandos Bash.

Según el sitio web, Cygwin es:

  • Una gran colección de herramientas GNU y de código abierto que brindan una funcionalidad similar a una distribución de Linux en Windows.
  • Una DLL (cygwin1.dll) que proporciona una funcionalidad API POSIX sustancial.

Y no es:

  • Una forma de ejecutar aplicaciones nativas de Linux en Windows. Debe reconstruir su aplicación desde la fuente si desea que se ejecute en Windows.
  • Una forma de hacer mágicamente que las aplicaciones nativas de Windows sean conscientes de la funcionalidad de UNIX®, como señales, ptys, etc. Una vez más, debe compilar sus aplicaciones desde la fuente si desea aprovechar la funcionalidad de Cygwin.

Nota:Cygwin funciona igualmente bien en escritorios de Windows y en sistemas de servidor.

¿Por qué Cygwin?

Cygwin sigue siendo relevante si desea tener disponibles comandos nativos *nix en la plataforma Windows. Sí, conozco el Subsistema de Windows para Linux (WSL), pero Cygwin y WSL no son lo mismo. Cygwin le brinda el poder de los comandos *nix en su entorno nativo de Windows. No hay emulación, máquina virtual ni capas adicionales entre el sistema operativo y esta colección de utilidades. Son, de hecho, auténticos comandos de código abierto compilados para la plataforma Windows.

Instalación de Cygwin

En general, puede aceptar la opción predeterminada para cada solicitud. Proporciono orientación cuando hay que tomar decisiones. Puede seleccionar el suyo propio, pero he descubierto que estas selecciones funcionan mejor en mis entornos y en mi forma de trabajar.

Abra un navegador en su sistema Windows y diríjalo al sitio web de Cygwin. Seleccione Instalar Cygwin ejecutando setup-x86_64.exe enlace para descargar el archivo ejecutable de instalación. Ejecute el archivo ejecutable para comenzar la instalación y haga clic en Siguiente en la Configuración de Cygwin pantalla.

En Elegir tipo de instalación pantalla, seleccione el tipo de instalación que desea. Para mí, siempre selecciono el predeterminado, que es Instalar desde Internet .

Haga clic en Siguiente para continuar.

Seleccione dónde desea que se instale el directorio de Cygwin y todos sus archivos de soporte y binarios. El valor predeterminado es C:\cygwin64, pero lo cambio a C:\cygwin para hacerme un poco más feliz en el futuro. También permito que todos los usuarios tengan acceso a Cygwin.

Haga clic en Siguiente para continuar.

Ingrese el directorio donde desea que Cygwin descargue sus archivos. Siempre uso C:\Temp. Si selecciona un directorio que no existe, el instalador le pedirá que lo cree.

Haga clic en Siguiente para continuar.

Seleccione su tipo de conexión a Internet. Si tiene algún tipo de proxy, ingrese la configuración aquí. La mía es una conexión directa. Si no lo sabes, prueba directo. Si eso no funciona, verifique la configuración de su navegador para la configuración del proxy.

Haga clic en Siguiente para continuar.

Elija un sitio de descarga en esta pantalla. Seleccione uno de la lista o agregue el suyo propio. Siempre elijo mirrors.xmission.com sin ninguna razón lógica:lo he usado durante mucho tiempo y funciona. Supongo que cualquiera de las selecciones funcionará.

Haga clic en Siguiente para continuar.

[ También te puede interesar:Cómo unir un sistema Linux a un dominio de Active Directory ]

Selección de paquetes

Finalmente, estás en la pantalla de selección de paquetes. Si no selecciona nada y continúa con una instalación predeterminada, obtiene un complemento completo de comandos *nix en C:\cygwin\bin directorio. Son demasiado numerosos para enumerarlos, pero es una lista de comandos estándar.

Le sugiero que examine las diferentes categorías y haga selecciones basadas en lo que usa en sus sistemas Linux. Generalmente selecciono OpenSSH, Bash, Bash-completion, Python, Tk/Tcl y algunas otras aplicaciones aleatorias. Una vez que haya hecho sus selecciones, haga clic en Siguiente para continuar.

Revise y confirme sus selecciones. Las dependencias serán satisfechas para sus selecciones, así que no se preocupe. Haga clic en Siguiente para comenzar a instalar los paquetes seleccionados.

La instalación puede demorar desde unos minutos hasta cerca de una hora, según sus selecciones y la velocidad de Internet.

La última pantalla le notifica que la instalación está completa y le pide que cree algunos íconos útiles. Yo siempre creo los iconos. Haga clic en Finalizar para completar el proceso de instalación.

Configuración de la variable PATH de entorno

Para obtener los mejores resultados, debe agregar el directorio C:\cygwin\bin a su variable de entorno PATH. Para configurar la RUTA del sistema para incluir su directorio bin de Cygwin, busque "entorno" y seleccione la opción del Panel de control, Edite las variables de entorno del sistema , cuando aparece. Seleccione Variables de entorno en las Propiedades del sistema pantalla.

Sobre las Variables de entorno pantalla, seleccione Ruta de las Variables del sistema y haga clic en Editar... . Haga clic en Nuevo. Introduzca C:\cygwin\bin en el campo y haga clic en OK cuando esté terminado. Haz clic en Aceptar en las otras pantallas para guardar la entrada y cerrar las Propiedades del sistema ventana.

Establecer esta variable de entorno del sistema le permite ejecutar un comando de Cygwin sin proporcionar la ruta completa al ejecutable. Esto también es útil para secuencias de comandos.

Notas de secuencias de comandos

Ahora que Cygwin está instalado y los archivos binarios están en la ruta de su sistema, probablemente se esté preguntando cómo hacer que esto funcione. Para invocar a Bash, abra una ventana de CMD y escriba bash <ENTER> . Ahora estás en un shell Bash que funciona exactamente como lo hace tu Linux. Pruebe algunos comandos como clear , ls , ls -la , pwd , y así sucesivamente.

Hay algunas diferencias que pueden resultar frustrantes para los nuevos usuarios si no las conoce. En Bash, notará que sus unidades, C:y D:, están montadas como /cygdrive/c y /cygdrive/d , por ejemplo. Entonces, el C:\Temp el directorio es /cygdrive/c/temp en Cygwin Bash.

Directorios familiares como / , /usr/bin y /usr/lib existe en C:\cygwin con el C:\cygwin directorio como / . Si no entiende este diseño, abra un CMD separado ventana y CD en C:\cygwin directorio y mire el directorio en ambos CMD y en Bash .

Primero, la lista de CMD.

DIR C:\cygwin

Volume in drive C has no label.
 Volume Serial Number is ACBE-2D0D

 Directory of C:\cygwin

10/15/2020  06:58 AM    <DIR>          .
10/15/2020  06:58 AM    <DIR>          ..
10/15/2020  06:57 AM    <DIR>          bin
10/15/2020  06:58 AM            53,342 Cygwin-Terminal.ico
10/15/2020  06:57 AM                88 Cygwin.bat
10/15/2020  06:58 AM           157,097 Cygwin.ico
10/15/2020  06:57 AM    <DIR>          dev
10/15/2020  06:57 AM    <DIR>          etc
10/15/2020  06:56 AM    <DIR>          home
10/15/2020  06:57 AM    <DIR>          lib
10/15/2020  06:57 AM    <DIR>          sbin
10/15/2020  06:57 AM    <DIR>          tmp
10/15/2020  06:57 AM    <DIR>          usr
10/15/2020  06:57 AM    <DIR>          var
               3 File(s)        210,527 bytes
              11 Dir(s)  31,950,209,024 bytes free

Y la lista de Bash.

ls /

Cygwin-Terminal.ico		Cygwin.ico	cygdrive	etc	lib	sbin	usr
Cygwin.bat			bin 		dev		home  proc 	tmp	var

Entonces, a partir de estas anomalías, puede ver que Bash en Windows no es 100 por ciento equivalente a *nix Bash. Algunas secuencias de comandos se traducirán directamente, mientras que otras tendrán que ser ventanaizadas. Es decir, personalizado para adaptarse a las diferencias de rutas, diferencias de montaje y algunas diferencias de ubicación de archivos. Un aspecto realmente interesante de hibridar su entorno de Windows es que también puede usar los comandos de la línea de comandos de Windows. Puede integrarlos fácilmente en sus scripts. Recuerde proporcionar la ruta completa al ejecutable en formato Cygwin (/cygdrive/c/windows/system32/blah.exe ).

[ Un curso gratuito para usted:Resumen técnico de virtualización y migración de infraestructura. ]

Conclusión

Cygwin es un excelente conjunto de herramientas multiplataforma, especialmente para aquellos de ustedes que deben trabajar en un entorno heterogéneo, como lo hacemos la mayoría de nosotros. No puedo contar la cantidad de veces que he escrito ls , o algún otro comando de Linux, en una ventana de CMD solo para que falle. Cygwin le brinda la capacidad ampliada de escribir un script una vez y poder usarlo en cualquier lugar, con ajustes menores. Imagina las posibilidades. Ahora, agregue Ansible a la mezcla y vuelva a imaginar las posibilidades. Para mejorar aún más su felicidad, todos los ejecutables en C:\cygwin\bin que tienen una extensión de archivo .exe también se pueden ejecutar en una ventana de CMD sin necesidad de estar en Bash. ¿Interesante? Eso pensé.


Linux
  1. Comando de apagado de Linux (con ejemplos)

  2. Extienda un volumen en Windows Server con diskpart

  3. Reparar una imagen del sistema con DISM

  4. ¿Llamadas al sistema en Windows y API nativa?

  5. Diferencia entre GNUWin32 y cygwin

Ejecute aplicaciones de Windows en Linux con Crossover 15

Comando Uptime de Linux con ejemplos

Primeros pasos con el sistema operativo Linux

Creando un Live USB de Manjaro Linux en Windows y Linux

Auditoría de seguridad con Lynis

Instalar Windows 10 en Linux con VirtualBox