windows cygwin diskspace

windows - ¿Cuál es el tamaño de instalación actual de Cygwin?



diskspace (5)

Todas las fuentes que encontré en línea dicen que una instalación completa de Cygwin toma más de 1 GB, pero la mía es de solo 100 MB. Estaba bastante seguro de que descargué todo de los servidores espejo, pero la instalación tardó menos de 5 minutos en completarse en lugar de horas, como lo esperaría si estuviera instalando gigabytes de software.

¿Se realizó una gran limpieza en Cygwin entre 2012 y 2013, o hice algo mal en la instalación?


Acabo de hacer una instalación completa de Cygwin x64 (2018-01-03) en Windows 7 SP1 x64 Ultimate:

La carpeta Cygwin (que por defecto es C:/cygwin64 ) tiene las siguientes propiedades:

  • Tamaño: 89,1 GiB (95,671,245,179 bytes)
  • Tamaño en disco: 92.3 GB (99,148,398,592 bytes)
  • Contiene: 1,433,494 archivos, 94,363 carpetas

Carpeta temporal de Cygwin donde los paquetes descargados se almacenan antes de ser instalados (se pueden eliminar después de instalar Cygwin):

  • Tamaño: 18.0 GiB (19,363,639,932 bytes)
  • Tamaño en disco: 18.0 GiB (19,383,767,040 bytes)
  • Contiene: 9,711 archivos, 10,354 carpetas

Al instalar paquetes por primera vez, setup * .exe no instala todos los paquetes. Solo los paquetes básicos mínimos de la distribución de Cygwin se instalan de forma predeterminada. Al hacer clic en categorías y paquetes en la pantalla de instalación del paquete setup * .exe, tendrá la posibilidad de controlar lo que está instalado o actualizado. Al hacer clic en el campo "Predeterminado" junto a la categoría "Todos", tendrá la oportunidad de instalar todos los paquetes de Cygwin. Instalación y actualización de paquetes Cygwin


Bajo el devel usted puede necesitar solamente lo siguiente:

gcc-core:GNU Compiler collection(C Open MP) gcc-fortran:GNU Compiler collection(Fortran) gcc-g++:GNU Compiler collection(C++) gcc-objc:GNU Compiler collection(Objective-C) gdb: The GNU Debugger make: The GNU version of the "make" utility

Photo


Me gustaría añadir a este hilo. Este enfoque le brinda una instalación de Cygwin mínima, más simple, más sencilla y más simple, con solo las herramientas / elementos que necesita. Sin engrosamiento de dependencias, paquetes no deseados, archivos, etc.

He estado experimentando con Cygwin tratando de obtener una instalación mínima. Me parece que la instalación de utilidades como grep, gawk, sed y herramientas similares depende de cygwin, base-Cygwin y, en ocasiones, de herramientas no deseadas como bash, coreutils, etc.

Quería instalar solo las herramientas y sus archivos DLL necesarios y comencé a examinar el paquete Cygwin. Descubrí que no usar setup.exe suministrado por Cygwin es una forma alternativa de realizar instalaciones mínimas de Cygwin.

Y así es como lo hice:

  1. Descargue solo los paquetes que desee de cualquiera de los sitios réplica de Cygwin utilizando ftp o http. Alternativamente, puede usar el archivo setup.exe proporcionado por Cygwin para descargar todos los paquetes, solo descargar y no instalar.
  2. 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 se ''tar''red y comprime con la herramienta''z'' o bzip y se almacena en los respectivos directorios. .
  3. Para instalar una herramienta específica como sed o gawk, todo lo que se necesita hacer es extraer la herramienta ejecutable y sus dependencias (.dll)

Antes de intentar lo siguiente, asegúrese de tener una herramienta como 7z.exe, xz.exe, bzip2 u otra que sea capaz de descomprimir un archivo .zz o bzip

Instalando el ejemplo de gawk a continuación:

  1. Extraiga gawk.exe del archivo gawk-4.1.3-1.tar.xz utilizando el comando 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf - 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
  2. Una vez hecho esto, deberías encontrar gawk.exe en una subcarpeta, usr / bin debajo de la carpeta release / gawk
  3. 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 lee así: "requiere: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"

Para que gawk se ejecute, bash no es obligatorio ya que tenemos el shell de comandos de Windows. (bash está incluido para obtener algunos otros dlls requeridos por gawk. Sin embargo, eso hace que se instalen muchos más archivos innecesarios). Las otras dependencias contienen archivos que necesita ejecutar gawk.

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 todas las .dlls dependientes.

Ahora debería poder ejecutar su herramienta con el conjunto mínimo de .dlls requerido en una instalación cygwin básica.

Precaución: Puede que no sea suficiente extraer las dependencias enumeradas en setup.ini para cada herramienta. A veces, puede necesitar ejecutar / ejecutar la herramienta para descubrir que se requieren más dlls.

Existen otros medios para encontrar las dll requeridas por un archivo .exe: puede usar el dumpbin de MS o dependencias, ndepends o herramientas similares para encontrar la lista de las dll dependientes.

Consultar - ¿Cómo detecto los DLL requeridos por una aplicación? ¿Cómo puedo saber qué dlls se cargará un ejecutable?

También forcé brutalmente esta información dll simplemente ejecutando la herramienta e instalando los dlls faltantes enumerados uno por uno extrayendo de los paquetes requeridos.

Cuando ejecuta una herramienta y se equivoca con un mensaje de faltante .dll, busque el paquete que contiene el 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 dlls - 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 dll re-basing, que no voy a aventurar aquí.


Una instalación completa de Cygwin puede variar de 23 a 112 GiB, dependiendo de cómo se define "completo".

Su número de 100 MB me dice que acaba de hacer clic en los valores predeterminados presentados por el programa de setup-*.exe de Cygwin setup-*.exe , al no seleccionar paquetes opcionales, porque eso instala solo el conjunto de paquetes Base, que actualmente equivale a 0.1 GiB. Cygwin sigue el modelo moderno de distribución de software conectado a la red: asume que simplemente puede ejecutar setup-*.exe nuevamente y seleccionar nuevos paquetes según los necesite.

Los mantenedores de Cygwin intentan mantener el paquete de la categoría Base tan pequeño como sea posible. Una instalación de Cygwin Base le ofrece algo parecido a una instalación Unix antigua, que cubre poco más de lo que POSIX especifica .

Entonces, ¿cómo conseguir una instalación completa?

El instalador de Cygwin no tiene una forma obvia de obtener una instalación "completa", a propósito, porque nadie necesita literalmente todos los paquetes en el repositorio de Cygwin.

Hay, sin embargo, una forma astuta de instalar todo. En la pantalla Seleccionar paquetes ...

... cambie a la vista de Categoría, luego haga clic en el texto "Predeterminado" a la derecha del encabezado del grupo "Todos". Cambiará a "Instalar", al igual que el texto correspondiente en todos los grupos debajo de él. Esto marca todo para la instalación.

Incluyo este consejo para completar solo. ¡No quieres hacer esto! Instalará conciertos y conciertos de cosas que nunca usarás. Actualmente, hay 11242 packages en Cygwin, ³ la instalación de cada uno de ellos tomó 93 GiB de espacio en disco para el árbol de instalación más 19 GiB para el árbol de descarga⁴ la última vez que lo probé. Eso da el límite superior de 112 GiB arriba.

Todo ese software no utilizado conlleva varios costos. Incluso si el espacio en disco, el tiempo de descarga, el tiempo de instalación, el tiempo de rebase y el uso del ancho de banda local no tienen ninguna consecuencia para usted, considere el ancho de banda desperdiciado generoso del espejo gratis .

He hecho el experimento, así que ahora no tienes que hacerlo.

Una instalación inteligente "completa"

He creado un conjunto simple de reglas de exclusión de paquetes que resulta en una instalación mucho más pequeña:

  1. Omitir todos los paquetes -debuginfo . Pocas personas las necesitan y ocupan mucho espacio. Ahorros: aproximadamente 53 GiB en el árbol de instalación solo; Más en el árbol de descargas.

    Es fácil aplicar esta regla. Después de seleccionar todos los paquetes para la instalación con el truco disimulado anterior pero antes de pasar a la siguiente pantalla, haga clic en el texto "Instalar" junto al encabezado de la categoría "Depurar" hasta que vuelva a "Predeterminado".

    Si ya ha instalado los paquetes de depuración, haga clic en ese texto hasta que diga "Desinstalar" en su lugar.

  2. No instale explícitamente ninguno de los paquetes lib* . Deje que la setup-*.exe de Cygwin setup-*.exe instale bibliotecas automáticamente para satisfacer las dependencias de los paquetes. Ahorros: alrededor de 5 GiB

    Para aplicar esta regla, cambie la categoría "Libs" a "Predeterminado" o "Desinstalar" como lo hizo con la categoría "Depurar". El instalador descubrirá qué bibliotecas necesita realmente en un paso posterior.

  3. Salta los cross-compilers y los paquetes asociados. Una vez más, pocas personas los necesitan. Ahorros: alrededor de 4 GiB

    Hay dos conjuntos principales de herramientas de desarrollo cruzado en Cygwin: el conjunto para crear ejecutables Cygwin del otro tamaño de palabra (es decir, herramientas y bibliotecas de 64 bits para Cygwin de 32 bits, o viceversa) y el conjunto para crear ejecutables MinGW de el mismo tamaño de palabra que su instalación de Cygwin.

    Para aplicar esta regla para una instalación de Cygwin de 64 bits, aún en la pantalla "Seleccionar paquetes", escriba cygwin32- en el cuadro de búsqueda de nombre del paquete en la parte superior de esa pantalla, luego haga clic en el texto Default lado de cada categoría de nivel superior hasta que cambie a Default o Uninstall , como se Uninstall arriba.

    Repita eso para mingw64- .

    La idea es la misma para Cygwin de 32 bits, excepto que busca y excluye paquetes con cygwin64- y mingw32- en su nombre.

Siguiendo este conjunto de reglas, pude instalar casi todo, tomando solo 23 GiB.

Paring That Down

Podemos hacer que la instalación sea aún más pequeña al excluir a muchos otros famosos cerdos de disco:

  • X11 , los entornos de escritorio y las aplicaciones GUI juntas requieren aproximadamente 11 GiB.⁷

  • Una instalación de Cygwin Base + Devel llega a aproximadamente 10 GiB.

  • Una instalación de Cygwin Base + TeX categoría toma alrededor de 5 GiB. Si instala solo el paquete de soporte del idioma nativo, en su lugar se trata de 3.7 GiB.

  • Todos los paquetes -doc combinados mastican aproximadamente 5 GiB de espacio en disco.

Alguien que no sea desarrollador de software, que no use Cygwin para cosas de GUI, que use la Web para documentos y que no use TeX para la creación de documentos podría tener una instalación de Cygwin "completa" en solo alrededor de 1 GiB. .⁸

Si usa Cygwin de la manera en que está destinado a ser utilizado, instalando la base y solo los paquetes adicionales que necesita en este momento, probablemente ni siquiera obtendrá el tamaño de la instalación ni siquiera en esos niveles. Utilizo Cygwin de esta manera, y mis instalaciones suelen estar muy por debajo de 1 GiB, pero están "completas" a mis luces, ya que satisfacen mis necesidades actuales.

Para más diversión de relleno de disco ...

Todas estas pruebas se realizaron con la versión de 64 bits de Cygwin. Puede duplicar aproximadamente el requisito de espacio anterior instalando una instalación Cygwin paralela de 32 bits.⁹

Hacerlo no tiene sentido. Es una alternativa viable al uso de compiladores cruzados, por una parte. Por otro lado, la incompatibilidad fundamental de los dos Cygwins significa que puede necesitar ambos.

Notas a pie de página

  1. Hay subprocesos ocasionales en la lista de correo de Cygwin donde alguien argumenta que se debe incluir algún paquete muy común en la categoría Base, como Perl, y el resultado suele ser que los responsables decidan no agregarlo a la Base.

    De vez en cuando también ve lo contrario: algún paquete se desliza accidentalmente en la Base, generalmente a través de una dependencia incorrecta. Poco después de que el problema llega a la atención de los mantenedores de Cygwin, se restablece el status quo ante . ( example )

  2. Quizás estoy equivocado.

    Puede haber un musician Czech inmigrante vision-impaired que complete los contratos de desarrollo de software del gobierno de EE. UU. Mientras no esté ocupado revisando su vocabulario técnico Hindi traduciendo los reports ingeniería eléctrica en su Mandarin adoptado.

    Quiero conocerlo. Él suena como un tipo interesante.

    Además, creo que puedo ayudarlo con su plan para crear una interfaz gráfica de usuario Tcl/Tk para Orpie . Naturalmente, trataré de convencerlo de que lo traslade de Ocaml a C++ / Qt .

    Quiero decir, Tcl / Tk, en serio? En 2018 ? No seamos ridículos.

  3. curl -s https://cygwin.com/packages/package_list.html | grep -c x86_64/

  4. setup-*.exe de Cygwin setup-*.exe no elimina los archivos del paquete descargado después de instalarlos. Esto es útil en sitios donde tiene múltiples instalaciones de Cygwin, ya que puede colocar el directorio de descarga en una unidad de red compartida. Cada paquete solo debe descargarse una vez en ese sitio.

    Mi límite superior de 105 GiB supone que se descargará e instalará en la misma unidad y que mantendrá el árbol de descargas en caso de que necesite volver a instalarlo más tarde.

    La setup-*.exe no solo no elimina los archivos descargados después de instalarlos, sino que no elimina automáticamente las versiones anteriores, por lo que su árbol de descargas crece y crece con los años que usa Cygwin. (Hay guiones que flotan en la red para resolver este problema, como este ).

    Todos los valores de almacenamiento de datos proporcionados en esta respuesta son aparentes números de uso del disco - du -bhs - en lugar de números de uso de disco reales , lo que daría cuenta de la sobrecarga del sistema de archivos , ya que eso varía según los sistemas. Esto afecta en gran medida al árbol de instalación que al árbol de descarga, ya que la proporción de archivos pequeños es mucho mayor en el árbol de instalación. Espere algo así como + 1% en el árbol de descargas y + 5% en el árbol de instalación.

  5. Puede preguntarse por qué hay bibliotecas en el repositorio de paquetes de Cygwin que no necesita aunque haya instalado "todos" los paquetes. Hay varias razones:

    • Algunas bibliotecas son obsoletas, pero todavía están presentes en los espejos.

    • algunas bibliotecas vienen en múltiples formas alternativas, de modo que las personas que saben que necesitan algo diferente al predeterminado pueden elegirlo

    • algunas bibliotecas están ahí solo para las personas que escriben sus propios programas, no para admitir ningún paquete Cygwin existente

  6. Prácticamente las únicas personas que necesitan los compiladores cruzados de Cygwin son las personas que mantienen los paquetes de Cygwin, ya que se espera que los desarrolladores compilen tanto Cygwin de 32 bits como de 64 bits a menos que haya una buena razón para no hacerlo.

    Probablemente hay más personas con una buena justificación para las herramientas de desarrollo cruzado de MinGW, pero también existe la opción de usar MinGW y MSYS en lugar de Cygwin. Además, supongo que la cantidad de personas que desarrollan Cygwin + MinGW de doble pila es menor que el conjunto de personas que usan una u otra exclusivamente, o casi.

  7. No es fácil hacer esta exclusión, ya que los paquetes de GUI están dispersos en todo el sistema de empaque de Cygwin, y su categoría de nivel superior a menudo contiene software que no es de GUI, por lo que simplemente no puede excluir toda la categoría. (por ejemplo, matemáticas)

    El primer paso es excluir las categorías X11, GNOME, KDE, LXDE, MATE, Xfce y Juegos usando la misma técnica de vista de categorías que la anterior.

    Luego, usando el cuadro de búsqueda como lo hicimos para la exclusión del compilador cruzado anterior, elimine los paquetes que coincidan con gtk , gnome , qt y kde , excluyendo opcionalmente aquellos en los paquetes Devel, Debug o Libs, si los necesita.

    Finalmente, tendrá que cambiar a la vista Pendiente y excluir manualmente un montón de paquetes que no fueron capturados por ninguna de estas dos exclusiones generales: Abiword , Calligra , Celestia , Dia , Evince , Geany , gEdit , Geomview , Gimp , gLabels , GnuCash , Gnumeric , Kalzium , KMyMoney , KolourPaint , Konqueror , Krita , KStars , LyX , Marble , Pidgin , QupZilla , Scribus , Skrooge , Spectacle , Stellarium , Tellico , y Vinagre . Si no los excluye, ¡se arrastrarán hacia atrás en gran parte de lo que excluyó anteriormente como dependencias!

  8. Puede observar que el tamaño de todos los conjuntos de paquetes excluidos asciende a más de los 23 GiB de la instalación "inteligente completa". Esto se debe a dependencias compartidas. Es decir, estos tamaños se superponen en cierta medida.

  9. Si coloca ambos programas setup-*.exe en el mismo directorio, compartirán el árbol de descargas para que todos los paquetes noarch se descarguen solo una vez para los dos Cygwins. Entre eso y el hecho de que los compiladores Intel de 32 y 64 bits generan código que difiere en tamaño, la instalación de ambos Cygwins no duplica el requisito de espacio en disco.