He estado experimentando con Cygwin intentando obtener una instalación mínima. Me parece que la instalación de utilidades como grep, gawk, sed y herramientas similares tiene dependencias de cygwin, base-Cygwin y, a veces, herramientas no deseadas como bash, coreutils, etc., no he intentado entender completamente por qué existe esta dependencia, pero ese no es mi Gol. Quería instalar solo las herramientas y sus archivos DLL necesarios y comencé a examinar el paquete Cygwin. Descubrí que no usar el setup.exe provisto por Cygwin es una forma alternativa de realizar instalaciones mínimas de Cygwin. Y así es como lo hice.
- Utilice el archivo setup.exe provisto por Cygwin para descargar todos los paquetes, solo descargue y no instale.
- Una vez que la descarga se completa con éxito, los paquetes individuales como zlib, gawk, grep, libiconv se encuentran en el directorio x86 / release o x86_64 / release.
- Cada paquete está "comprimido" y comprimido usando la herramienta "xz" o bzip y almacenado en los directorios respectivos.
Para instalar una herramienta específica como sed o gawk, todo lo que debe hacerse es extraer el ejecutable de la herramienta y sus dependencias (.dll)
Antes de intentar lo siguiente, asegúrese de tener una herramienta como
7z.exe, xz.exe, bzip2 u otro que sea capaz de descomprimir un
archivo .xz o bzip
Instalando el ejemplo de gawk a continuación:
- Extraiga gawk.exe del archivo gawk-4.1.3-1.tar.xz usando el comando - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf
- Una vez hecho esto, deberías encontrar gawk.exe en una subcarpeta, usr / bin en la carpeta release / gawk
- Encuentra las dependencias para gawk, puedes hacerlo de varias maneras.
Examine el archivo setup.ini de Cygwin que se encuentra en las carpetas x86 o x86_64. Busque la cadena '@ gawk' y en las líneas después de esta línea debe encontrar una línea "requiere:" que enumera las dependencias.
El mío dice así: "requiere: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"
Para que gawk se ejecute, bash no es un deber ya que tenemos el shell de comandos de Windows. (Se incluye bash para obtener algunas otras dlls requeridas por gawk. Sin embargo, eso hace que se instalen muchos más archivos innecesarios). Las otras dependencias contienen archivos que gawk necesita ejecutar. Extraiga cada uno de los paquetes anteriores utilizando herramientas como 7z o xz en archivos individuales.
Después de extraer todas las dependencias, copie las herramientas necesarias (grep / sed / gawk) en una carpeta y en todos los .dlls dependientes. Ahora debería poder ejecutar su herramienta con el conjunto mínimo de .dlls requerido en un solo espacio. -instalaciones de cygwin huesos.
Precaución: Puede que no sea suficiente simplemente extraer las dependencias enumeradas en setup.ini para cada herramienta. A veces, es posible que necesite ejecutar / ejecutar la herramienta para descubrir que se requieren más dlls.
Existen otros medios para encontrar las dll requeridas por un exe: puede usar el dumpbin de MS o dependencias, ndepends o herramientas similares para encontrar la lista de dll dependientes.
Consultar - https://stackoverflow.com/questions/362560/how-do-i-detect-the-dlls-required-by-an-application https://stackoverflow.com/questions/475148/how-do-i-find-out-which-dlls-an-executable-will-load
También forzé la información de DLL dependiente simplemente ejecutando la herramienta e instalando las DLL que faltan enumeradas una por una extrayendo los paquetes necesarios.
Cuando ejecute un archivo exe y, si falla con un mensaje .dll faltante, busque el paquete que contiene la dll aquí: https://cygwin.com/cgi-bin2/package-grep.cgi . Ingrese el nombre completo / parcial de la dll que falta para encontrar el nombre del paquete que contiene la dll.
Finalmente, terminé con una instalación de cygwin básica con solo las herramientas y archivos DLL que necesito. Ejemplo: gawk - gawk.exe y las siguientes dll - cygwin1.dll, cyggmp-10.dll, cygiconv-2.dll, cygintl-8.dll, cygmpfr-4.dll, cyggcc_s-seh-1.dll, cygncursesw- 10.dll, cygreadline7.dll
sed - sed.exe y dlls - cygwin1.dll, cygintl-8.dll
Espero que esto se encuentre útil. El instalador de Cywin también hace rebases dll, que no voy a aventurar aquí