Каков текущий полный размер установки Cygwin?

Каждый источник, который я нашел в Интернете, говорит, что полная установка Cygwin берет 1 GB, но у меня всего 100 Мб. Я был уверен, что я загрузил все с зеркальных серверов, но установка заняла менее 5 минут, а не часов, как я ожидал бы, если бы она устанавливала гигабайты программного обеспечения.

Помогли ли Cygwin получить огромную очистку в течение 2012-2013 годов, или я сделал что-то неправильно в установке?

Ответ 1

Полная установка Cygwin может варьироваться от 21 до 105 GiB, в зависимости от того, как вы определяете "полный".

Ваш номер в 100 МБ сообщает мне, что вы просто нажали по умолчанию, представленным программой Cygwin setup-*.exe, не выбирая никаких дополнительных пакетов, потому что это устанавливает только набор базовых пакетов, который в настоящее время составляет 100 мбайт. MiB. Cygwin следует современной сетевой модели распространения программного обеспечения: предполагается, что вы можете снова запустить setup-*.exe и выбрать новые пакеты по мере необходимости. Нормально начать с этой базовой установки размером 0.1 GiB, а затем добавить пакеты по мере необходимости.

Сторонники Cygwin стараются, чтобы пакет базовой категории устанавливался как можно меньше.¹ Установка Cygwin Base дает вам нечто похожее на установку Unix в старом стиле, охватывая чуть больше что указывает POSIX.

Итак, как вы получаете полную установку?

У установщика Cygwin нет очевидного способа получить "полную" установку, специально, потому что никто не нуждается буквально в каждом пакете в репозитории Cygwin.²

Существует, однако, проницательный способ установить все. На экране выбора пакета...

Install-everything hack screenshot

... щелкните текст "По умолчанию" справа от заголовка группы "Все". Он изменится на "Установить", как и соответствующий текст во всех группах под ним. Это означает, что все для установки.

Я включаю этот совет только для полноты. Вы не хотите этого делать! Он будет устанавливать концерты и концерты, которые вы никогда не будете использовать. В настоящее время существует 9951 packages в Cygwin, ³ и установка каждого последнего из них занимает 83,4 гигабайта дискового пространства для дерева установки плюс 21,3 GiB для дерева загрузки. Это дает верхний предел 105 GiB выше.

Все неиспользуемое программное обеспечение несет в себе несколько затрат. Даже если место на диске, время загрузки, время установки, время перезагрузки, а использование локальной полосы пропускания не имеет для вас никакого значения, рассмотрите щедрый бесплатное зеркало потеряло пропускную способность.

Я сделал эксперимент, так что теперь вам не нужно.

Интеллектуальная "полная" установка

Я придумал простой набор правил исключения пакетов, что приводит к значительно меньшей установке:

  • Пропустите все пакеты -debuginfo. Мало кому это нужно, и они занимают много места. Экономия: 53,4 GiB только в дереве установки; больше в дереве загрузки.

    Легко применить это правило. Выбрав все пакеты для установки с помощью скрытого трюка выше, но прежде чем переходить к следующему экрану, щелкните текст "Установить" рядом с заголовком категории "Отладка", пока он не вернется к "По умолчанию".

    (Или, если вы уже установили их, щелкните по нему, пока не появится "Удалить".)

  • Не устанавливайте явным образом какие-либо из пакетов lib*. Пусть Cygwin setup-*.exe автоматически устанавливает библиотеки для удовлетворения зависимостей пакетов. Экономия: около 5.1 GiB & thinsp; ⁵

    Чтобы применить это правило, переключите категорию "Libs" в "Default" или "Uninstall", как и в категории "Debug". Установщик выяснит, какие библиотеки вам понадобятся на более позднем этапе.

  • Пропустите кросс-компиляторы и связанные с ним пакеты. Опять же, мало кому это нужно. Экономия: 3.7 GiB

    В Cygwin существуют два набора кросс-разработок: набор для создания исполняемых файлов Cygwin другого размер слова (т.е. 64- разрядных инструментов и библиотек для 32-разрядного Cygwin или наоборот) и набор для создания MinGW исполняемых файлов с тем же размером слова, что и ваш Cygwin установка.

    Чтобы применить это правило для 64-разрядной установки Cygwin, пока на экране "Выбрать пакеты" введите cygwin32- в поле поиска имени пакета в верхней части этого экрана, затем нажмите текст Default next для каждой категории верхнего уровня, пока он не вернется к Default, тем самым изменив все базовые модели соответствия <<28 > обратно на Default, что не будет их устанавливать, если это первый проход через setup-*.exe. Или, если вы уже установили эти пакеты, измените эти режимы на Uninstall.

    Повторите это для mingw64-.

    Идея одинаков для 32-разрядного Cygwin, за исключением того, что вместо этого вы ищем вместо них пакеты cygwin64- и mingw32-.

Следуя этому набору правил, я смог установить почти все, занимая всего около 21 GiB.

Paring That Down

Мы можем установить, что установка будет еще меньше, за исключением нескольких других печально известных дисковых свиней:

  • X11, среды рабочего стола и приложения графического интерфейса вместе требуют около 10,8 GiB.⁷

  • Установка Cygwin Base + Devel достигает 9.6 GiB.

  • Установка Cygwin Base + TeX занимает около 4.8 GiB. Если вы установите только свой пакет поддержки на родном языке, вместо этого он будет заменен на 3.7 GiB.

  • Все пакеты -doc объединены в жужжание около 4.5 GiB дискового пространства

Кто-то, кто не является разработчиком программного обеспечения, который не использует Cygwin для работы с графическим интерфейсом, который использует веб-документы для документов, и кто не использует TeX для создания документа, может, таким образом, иметь "полную" установку Cygwin только около 1 > GiB.⁸

Если вы используете Cygwin так, как это предполагается использовать, устанавливая базу и только дополнительные пакеты, которые вам нужны в данный момент, вы, вероятно, даже не получите размер своей установки даже на тех уровнях. Я использую Cygwin таким образом, и мои установки, как правило, значительно ниже 1 GiB, но они "полные", поскольку они отвечают моим текущим потребностям.

Для дополнительной загрузки диска...

Все это тестирование было выполнено с 64-разрядной версией Cygwin. Вы можете примерно удвоить указанные выше требования к пространству, установив параллельную 32-разрядную установку Cygwin.

Это не бессмысленно. Это - жизнеспособная альтернатива использованию кросс-компиляторов, во-первых. Для другого, фундаментальная несовместимость двух Cygwins означает, что вам может понадобиться и то, и другое.


Сноска

  • В списке рассылки Cygwin есть случайные потоки, в которых кто-то утверждает, что в базовую категорию, такую ​​как Perl, должен быть включен какой-то очень общий пакет, и результат обычно заключается в том, что сопровождающие решают не добавлять его в Base.

    Вы также иногда видите обратное: какой-то пакет случайно попадает на базу, обычно через неправильную зависимость. Вскоре после того, как проблема доведена до сведения сторонников Cygwin, статус status quo ante будет восстановлен. (пример)

  • Возможно, я ошибаюсь.

    Может существовать нарушение зрения Czech иммигрант музыкант, который завершает контракты на разработку программного обеспечения правительства США на боком, пока он не занят чисткой своей технической хинди, переведя электротехника отчеты в его принятый мандарин.

    Я хочу встретиться с ним. Он звучит как интересный парень.

    Плюс, я думаю, что смогу помочь ему с его планом создать Tcl/Tk интерфейс для интерфейса Orpie. Естественно, я попытаюсь поговорить с ним, чтобы портировать его из Ocaml в С++/Qt.

    Я имею в виду, Tcl/Tk, серьезно? В 2017 году? Пусть не смешно.

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

  • Cygwin setup-*.exe не удаляет загруженные файлы пакетов после их установки. Это полезно на сайтах с несколькими установками Cygwin, поскольку вы можете поместить каталог загрузки на общий сетевой диск. Каждый пакет затем должен быть загружен только один раз на этом сайте.

    My 105 Верхний предел GiB предполагает, что вы загружаете и устанавливаете на тот же диск, и что вы сохраните дерево загрузки в случае необходимости его переустановки позднее.

    (Все размеры в этом ответе - это номера "номер-на-проводе", кстати, а не номера на диске: служебные данные файловой системы увеличит размер загрузочных и установочных деревьев, а последний в гораздо большей степени, так как доля небольших файлов намного больше в дереве установки. Ожидайте что-то вроде + 1% в дереве загрузки и + 5% в дереве установки.)

    Не только setup-*.exe не удаляет загруженные файлы пакетов после их установки, он не производит автоматическую очистку старых версий, поэтому ваше дерево загрузки растет и растет с годами, когда вы используете Cygwin. (Для решения этой проблемы существуют скрипты, плавающие по сети, такие как этот.)

  • Вы можете задаться вопросом, почему в репозитории пакетов Cygwin есть библиотеки, которые вам не нужны, даже если вы установили "все" пакеты. Существует несколько причин:

    • некоторые библиотеки устарели, но все еще присутствуют на зеркалах

    • некоторые библиотеки входят в несколько альтернативных форм, поэтому люди, которые знают, что им нужно что-то другое, кроме значения по умолчанию, могут выбрать его

    • некоторые библиотеки существуют только для людей, которые пишут собственные программы, а не для поддержки существующего пакета Cygwin

  • В значительной степени единственными людьми, которые нуждаются в кросс-компиляторах Cygwin, являются люди, поддерживающие пакеты Cygwin, поскольку ожидается, что разработчики будут строить как для 32-битного, так и для 64-разрядного Cygwin, если нет веской причины не делать этого.

    Есть, вероятно, больше людей с хорошим обоснованием для кросс-разработок MinGW, но также есть возможность использовать MinGW и MSYS вместо Cygwin. Кроме того, я предполагаю, что число людей, которые занимаются разработкой Cygwin + MinGW с двойным стеклом, меньше, чем множество людей, которые используют один или другой исключительно или почти так.

  • Это исключение не так просто, потому что пакеты GUI разбросаны по всей системе упаковки Cygwin, а их категория верхнего уровня часто содержит программное обеспечение, отличное от GUI, поэтому вы не можете просто исключить всю категорию. (например, математика).

    Первый проход - исключить категории X11, GNOME, KDE, LXDE, MATE, Xfce и Games, используя ту же технику просмотра категорий, что и выше.

    Затем, используя окно поиска, как это было сделано для исключения кросс-компилятора выше, удалите пакеты, соответствующие gtk, gnome, qt и kde, необязательно исключая те из Devel, Debug или Libs пакетов, если вам это нужно.

    Наконец, вам придется переключиться на ожидающий просмотр и вручную исключить кучу пакетов, которые не были обнаружены ни одним из этих двух широких исключений: 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 и Vinagre. Если вы не исключите их, они будут отталкиваться от большей части того, что вы исключили выше, в качестве зависимостей!

  • Вы можете заметить, что размер всех исключенных наборов пакетов составляет больше, чем 21 GiB "интеллектуальной полной" установки. Это происходит из-за общих зависимостей. То есть эти размеры частично перекрываются.

  • Если вы поместите обе программы setup-*.exe в один и тот же каталог, они будут совместно использовать дерево загрузки, чтобы все пакеты noarch загружались только один раз для обоих Cygwins. Между тем и тем фактом, что 32-битные и 64-разрядные компиляторы Intel генерируют код, который отличается по размеру, установка обоих Cygwins не совсем удваивает требования к дисковым пространствам.

Ответ 2

При установке пакетов в первый раз, установка *.exe не устанавливает каждый пакет. По умолчанию устанавливаются только минимальные базовые пакеты из дистрибутива Cygwin. Нажав на категории и пакеты на экране установки установки *.exe, вы получите возможность контролировать, что установлено или обновлено. При нажатии на поле "По умолчанию" рядом с категорией "Все" вы получите возможность установить каждый пакет Cygwin. Установка и обновление пакетов Cygwin

Ответ 3

Я бы хотел добавить к этой теме. Этот подход дает вам более компактную, скудную, голые кости, минимальную установку Cygwin, используя только те инструменты/элементы, которые вам нужны. Нет зависимости от раздувания, нежелательных пакетов, файлов и т.д.

Я экспериментировал с Cygwin, пытающимся получить "голые кости", минимальную установку. Я обнаружил, что установка утилит, таких как grep, gawk, sed и подобные инструменты, имеет зависимости от cygwin, base-Cygwin и иногда нежелательных инструментов, таких как bash, coreutils и т.д.

Я хотел получить только инструменты и их необходимые DLL-установки и начал изучать пакет Cygwin. Я обнаружил, что не использовать setup.exe, поставляемый Cygwin, является альтернативным способом выполнения минимальных установок Cygwin.

И вот как я это сделал:

  • Загружайте только те пакеты, которые вы хотите получить из любого зеркала Cygwin сайты, использующие ftp или http. В качестве альтернативы вы можете использовать setup.exe поставляемый Cygwin для загрузки всех пакетов - загрузка только и нет установки.
  • После успешного завершения загрузки отдельные пакеты, такие как zlib, gawk, grep, libiconv, находятся под x86/release или x86_64/каталог выпуска Каждый пакет является "tar'red и сжимается с помощью инструмента "xz" или bzip и сохраняется в соответствующих каталоги.
  • Чтобы установить конкретный инструмент, например sed или gawk, все это необходимо выполнить извлечение исполняемого инструмента и его зависимостей (.dll)

Прежде чем пытаться сделать следующее, убедитесь, что у вас есть инструмент, такой как 7z.exe, xz.exe, bzip2 или другой, способный распаковывать архив .xz или bzip.

Установка примера gawk ниже:

  • Извлеките gawk.exe из архива gawk-4.1.3-1.tar.xz с помощью команды 7z.exe e -so gawk-4.1.3-1.tar.xz | tar xvf -
  • Как только это будет сделано, вы должны найти gawk.exe в подпапке, обычно, usr/bin в папке release/gawk
  • Найти зависимости для gawk, вы можете сделать это несколькими способами.

Изучите файл setup.ini Cygwin, расположенный в папке x86 или x86_64. Ищите строку "@gawk", а в строках после этой строки вы должны найти строку "требует:", в которой перечислены зависимости. Моя читает так: "требует: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7"

Для запуска gawk bash не является обязательным, так как у нас есть командная оболочка Windows. (bash включен, чтобы получить еще несколько DLL, требуемых gawk. Однако это приводит к установке гораздо более ненужных файлов.) Другие зависимости содержат файлы, которые нужно запустить gawk.

Извлеките каждый из вышеперечисленных пакетов с помощью таких инструментов, как 7z или xz, в отдельные файлы.

После того, как все зависимости будут извлечены, скопируйте нужные инструменты (grep/sed/gawk) в папку и все зависимые .dlls

Теперь вы можете запустить свой инструмент с минимальным набором DLL файлов, необходимых для установки cygwin без костей.

Внимание: может быть недостаточно, чтобы просто извлекать зависимости, перечисленные в файле setup.ini для каждого инструмента. Иногда вам может потребоваться выполнить/запустить инструмент, чтобы обнаружить, что требуется больше DLL.

Существуют и другие средства для поиска DLL, необходимых для использования .exe. Вы можете использовать dumpbin от MS или зависимого ходока, ndepends или подобных инструментов, чтобы найти список зависимых dll

Consult - Как определить библиотеки DLL, необходимые для приложения? Как узнать, какие DLL файлы загружаются?

Я также грубо заставил эту информацию dll просто запустить инструмент и установить отсутствующие DLL, перечисленные один за другим, извлекая из необходимых пакетов.

Когда вы запускаете инструмент, и он выдает сообщение об ошибке с отсутствующим сообщением .dll, найдите пакет, содержащий здесь dll, https://cygwin.com/cgi-bin2/package-grep.cgi. Введите полное/частичное имя отсутствующей dll, чтобы найти имя пакета, содержащего dll.

В конце концов, я закончил с установкой cygwin с голубыми костями с помощью только тех инструментов и библиотек, которые мне нужны.

Пример: gawk - gawk.exe и следующие 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 и dlls - cygwin1.dll, cygintl-8.dll

Надеюсь, это будет полезно. Установщик Cywin также редуцирует dll, и я не буду здесь останавливаться.

Ответ 4

В devel вам может потребоваться только следующее:

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

Фото