В принципе на этом можно было бы и остановится, указав на инсталяционный файл setup.exe. Но кто ищет простые пути? У меня возникали ситуации, когда мне нужен был cygwin на компьютере на котором отсутствовали права на инсталляцию нового программного обеспечения. Что бы обойти эти ограничения, возник вопрос в проработке запуска cygwin среды без процесса инсталляции.
Опишу процесс инсталяции cygwin без исползования setup.exe. Сразу же отмечу, данная процедура установки все лишь мое видение и может содержать ошибки о которых я не знаю в настоящий момент. Сейчас в целом среда рабочая и используется мной в работе. Но никто не застрахован от ошибок, что что-то да появится. Буду очень признателен, если кто-то укажет на ошибки.
Исходные файлы для работы cygwin продублированы на различных зеркалах. Полный список зеркал доступен по ссылке http://www.cygwin.com/mirrors.lst. Для упрощения установки можно воспользоваться python скриптом cygwin-tool.py доступным на sources-ownport. Для корректной работы скрипта необходимо создать папку distfiles, где будут храниться загруженные файлы, необходим python и wget.
Для получения списка зеркал необходимо выполнить команду: python cygwin-tool.py -m
Выбрав из полученного списка зеркал distfiles\mirrors.lst предпочтительное зеркало cygwin, необходимо получить список доступных пакетов, содержащийся в файлах setup.ini и setup-legacy.ini. Загружаем их в distfiles\ с помощью: python cygwin-tool.py -s <url_адрес_зеркала>
Вывести список доступных для установки пакетов можно с помощью python cygwin-tool.py -l .Скрипт отображает название пакета, категорию к которой он относится, список зависимостей, а также файл инсталляции. Пример вывода для xconsole:
xconsole {'category': ['X11'], 'requires': ['libX11_6', 'libXaw7', 'libXmu6', 'libXt6', 'cygwin'], 'install': 'release/X.Org/xconsole/xconsole-1.0.3-2.tar.bz2'}
Найти пакет в файле setup.ini не составит труда, а вот сделать выборку требуемых для него пакетов потребует некоторой сноровки. Для упрощения этой задачи можно выполнить команду python cygwin-tool.py -f <название_пакета>
Для загрузки пакетов в директорию distfiles\ необходимо выполнить: python cygwin-tool.py -d <название_пакета> -u <url_адрес_зеркала>. По минимуму, для запуска коммандной строки можно загрузить только bash и все его зависимости. На примерах всегда проще объяснять, поэтому я расскажу об установке bash. Добавить еще приложений не составит труда, просто скачайте точно так же как и bash. А все остальное будет более менее общением.
Загруженные пакеты необходимо распаковать в директорию, где будет расположен cygwin. Подойдет любой архиватор поддерживающий форматы bz2 и tar. Можно воспользоваться бесплатным 7zip. В результате распаковки получаем 3 директории: bin, etc и usr. Если оставить все как есть, то при запуске bash корневая директория монтируется в usr/bin, а это не совсем корректно. Насколько я понимаю монтирование корневой директории происходит автоматически исходя из того, в какой директории находится файл bash.exe и управлять этим процессом особенно нельзя. Хотя с этим еще стоит разобраться. Сейчас же, для упрощения переносим все файлы из usr/bin в bin, а также файлы из usr/lib в директорию lib, которую необходимо создать. Cоздав и запустив файл cygwin.bat:
@echo off set CYGWIN_DIR=<директория_cygwin> chdir %CYGWIN_DIR% set LANG=C.UTF-8 set PATH=%PATH%;%CYGWIN_DIR%\bin;%CYGWIN_DIR%\usr\bin bash --login -i
получаем вполне рабочую систему.
Теперь нужно выполнить ряд post-install скриптов для настройки системы:
/bin/copy-user-registry-fstab /etc/postinstall/000-cygwin-post-install.sh /etc/postinstall/bash.sh /etc/postinstall/coreutils.sh /etc/postinstall/passwd-grp.sh /etc/postinstall/terminfo.sh /etc/postinstall/terminfo0.sh
Собственно это все. Для запуска командной строки достаточно запуска cygwin.bat. Как добавить дополнительные пакеты, думаю не составит труда. Настройка окружения - это уже дело вкуса каждого.
Ссылки по теме:
A Guide to Building a Portable Cygwin
Cygwin 1.7.x, mounts and /etc/fstab
Cygwin on portable storage devices
Hints for Setting up Cygwin
Getting Started with Cygwin
Cygwin Bash Shell in MS-DOS Prompt
mintty - Terminal window for Cygwin
Cygwin FAQ




0 комментариев:
Отправить комментарий