6

В Cygwin FAQ упоминается, что при первой установке программа установки загрузит «минимальное подмножество всех доступных пакетов». Какие пакеты являются частью этого подмножества?

Я устанавливаю Cygwin на компьютер без доступа к Интернету, поэтому мне нужно знать, какие пакеты загрузить, так как я не могу запустить setup.exe на компьютере с Интернетом.

3 ответа3

1

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

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

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

Пример установки gawk ниже:

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

    Изучите файл Cygwin setup.ini, находящийся в папке x86 или x86_64. Найдите строку «@ gawk», и в строках после этой строки вы найдете строку «require:», в которой перечислены зависимости.

    Мой читает так: «Требуется: bash cygwin libgmp10 libintl8 libmpfr4 libreadline7»

Для запуска gawk bash не обязателен, так как у нас есть командная оболочка windows. (bash включен, чтобы получить несколько других dll, требуемых gawk. Тем не менее, это приводит к установке гораздо большего количества ненужных файлов). Другие зависимости содержат файлы, необходимые gawk для запуска. Извлеките каждый из вышеперечисленных пакетов, используя такие инструменты, как 7z или xz, в отдельные файлы.

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

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

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

Консультируйтесь - https://stackoverflow.com/questions/362560/how-do-i-detect-the-dlls-required-by-an-application https://stackoverflow.com/questions/475148/how-do-i -find-из-каких библиотек DLL-ан-исполняемая воля нагрузка

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

Когда вы запускаете exe-файл и выдает ошибку с отсутствующим сообщением .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, что я не буду здесь углубляться

1

Вот минимальный список пакетов для "базовой" установки Cygwin:

_autorebase
_update-info-dir
alternatives
attr
base-cygwin
base-files
bash
bzip2
ca-certificates
coreutils
cygutils
cygwin
dash
editrights
file
findutils
gawk
gcc
gdbm
getent
gettext
gmp
grep
groff
gzip
hostname
ipc-utils
less
libargp
libffi
libiconv
libpipeline
libtasn1
login
lynx
man-db
mintty
mpfr
ncurses
openssl
p11-kit
pcre
popt
readline
rebase
run
sed
tar
texinfo
tzcode
util-linux
vim
which
xz
zlib

Общий размер будет ~ 1,4 ГБ.

0

Почему бы просто не установить его на USB-накопитель и не скопировать файлы оттуда на компьютер, на котором вы хотите его настроить? Этот вопрос часто задаваемых вопросов указывает на то, что административные права необходимы только для настройки разрешений безопасности для файлов, чтобы каждый на машине мог получить доступ к файлам. Если вы установите его в другое место, а затем скопируете весь каталог на новый компьютер, он должен работать нормально. (Примечание: я не проверял это сам.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .