Cygwin

Cygwin (произносится /ˈsɪgwɪn/)[2] — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Cygwin обеспечивает тесную интеграцию Windows приложений, данных и ресурсов с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать Windows приложения, также можно использовать инструменты Cygwin из Windows.

Cygwin
Логотип программы Cygwin
Cygwin X11 rootless WinXP.pngCygwin на Windows XP
Тип Эмулятор
Разработчик Red Hat и другие
Написана на C/C++
Операционная система Microsoft Windows, Windows NT
Первый выпуск 1995
Аппаратная платформа Microsoft Windows
Последняя версия 1.7.17-1 (20 октября 2012[1])
Лицензия GNU GPL
Сайт cygwin.com
Логотип Викисклада Медиафайлы на Викискладе

Cygwin состоит из двух частей: динамически подключаемая библиотека (DLL) cygwin1.dll, которая обеспечивает совместимость API и реализует значительную часть стандарта POSIX и огромная коллекция приложений, которые обеспечивают привычную среду UNIX.

Изначально Cygwin был разработан компанией Cygnus Solutions, которую позднее приобрела Red Hat. Это свободное ПО, опубликованное под GNU General Public License версии 2. В настоящее время Cygwin разрабатывается сотрудниками Red Hat, NetApp и множеством добровольцев.

Подобные функциональные возможности предлагала также и Microsoft в своём пакете Services for UNIX, включающем в себя подсистему Interix, и Subsystem for UNIX-based Applications (в более новых версиях).

Содержание

Описание

Cygwin представляет собой инструмент для портирования ПО UNIX в Windows и представляет собой библиотеку, которая реализует интерфейс прикладного программирования POSIX на основе системных вызовов Win32. Кроме того, Cygwin включает в себя инструменты разработки GNU для выполнения основных задач программирования, а также и некоторые прикладные программы, эквивалентные базовым программам UNIX. В 2001 году в Cygwin был включён пакет X Window System.

Кроме того, Cygwin содержит библиотеку MinGW, позволяющую работать с библиотекой Microsoft MSVCRT (Windows API); библиотека MinGW менее требовательна к объёму оперативной и дисковой памяти, распространяется под более свободной лицензией и может работать с любым программным обеспечением, но функциональные возможности спецификации POSIX реализованы в ней не так полно, как в Cygwin.

Red Hat реализует библиотеку Cygwin под лицензией GNU GPL, таким образом, её можно использовать только в программах, распространяемых под GPL. (Для распространения программ, использующих библиотеку Cygwin, под лицензией, отличной от GPL, необходимо приобретение лицензии у RedHat).

На странице Cygwin Mailing Lists можно подписаться на рассылку, посвящённую Cygwin.

История

Работа над проектом Cygwin была начата в 1995 г. Стивом Чемберленом, программистом Cygnus, заметившим, что Windows NT и Windows 95 используют в качестве формата объектных файлов формат COFF. К тому времени в GNU уже была реализована поддержка архитектуры x86, COFF, а также библиотека языка C newlib; таким образом, по крайней мере теоретически, не представляло затруднений получить из GCC кросс-компилятор, который бы создавал исполняемые файлы Windows. Это оказалось несложным и на практике. Вскоре появился прототип.

Следующим шагом было заставить компилятор работать в Windows, но для этого была необходима эмуляция
многих функций Unix: к примеру, должен был работать скрипт GNU configure. Этот скрипт нуждается в оболочке типа bash, которая, в свою очередь, требует наличия стандартных потоков ввода-вывода и системного вызова fork. Windows располагает подобными функциональными возможностями, и библиотека Cygwin лишь транслирует вызовы, исходящие от программ, управляя определёнными видами данных, такими как файловые дескрипторы.

В 1996 г. к проекту Cygwin присоединились и другие программисты, так как стало очевидным, что Cygwin сделает возможным использование инструментов Cygnus на системах с Windows (до этого намечалось использовать DJGPP). Этот вариант был особенно привлекательным, ведь кросскомпиляция могла бы производиться в трёх направлениях: можно было использовать мощную станцию Sun для сборки Windows-кросскомпилятора MIPS, что позволяло значительно экономить время. С 1998 г. Cygnus предлагает пакет Cygwin в качестве самостоятельного продукта.

Интернационализация

До версии 1.7 Cygwin не имел поддержки Unicode и использовал только ANSI-варианты функций Win32; отсутствовала также и поддержка каких-либо кодировок, отличных от родных для Windows и OEM (так, в русскоязычной версии Windows Cygwin работала лишь с CP1251 и CP866, но не KOI8-R, ISO 8859-5, UTF-8 или какими-либо другими; тем не менее при работе в X Window System под Cygwin можно было использовать и другие кодировки, установив шрифты и настройки клавиатуры).

Начиная с версии 1.7 кодировкой по умолчанию является Unicode в форме UTF-8 и соответственно, по умолчанию используется локаль C.UTF-8. При вызове функций Win32 Cygwin осуществляет трансляцию строк в кодировку UTF-16, используемую в системах Windows. Начиная с версии 1.7.2 Cygwin также может извлекать некоторую информацию из реестра Windows в соответствии с установками Language и Territory в локали.

Другая проблема заключалась в том, что консоль Cygwin (подобно CMD.EXE) использовала OEM кодировку. Для обхода этого ограничения рекомендовалось запускать в Cygwin демоны rshd или sshd и использовать эмулятор терминала с полной поддержкой UTF-8, например PuTTY. Начиная с версии 1.7 консоль Cygwin также работает в кодировке UTF-8, что позволяет выводить текстовую информацию в UTF-8 напрямую. Также консоль осуществляет трансляцию вводимой с клавиатуры информации в UTF-8, в соответствии с используемой национальной раскладкой.

Работа с кириллицей

В современных версиях Cygwin работа с русскими символами не требует дополнительных настроек. Символы кириллицы работают в нейтральной локали LANG=C.UTF-8, в том числе имена файлов, имена пользователей и данные реестра. Можно установить русскоязычную локаль LANG=ru_RU.UTF-8, при этом включатся русскоязычные сообщения (у некоторых программ), даты по русски (LC_TIME) и другие категории локали.

В старых версиях, для того, чтобы видеть и вводить русские символы при работе в cygwin, необходимо установить переменную среды окружения LANG=ru_RU.CP1251 и создать файл ~/.inputrc или /etc/inputrc, который использует библиотека GNU readline следующего содержания:

set input-meta onset meta-flag onset convert-meta offset output-meta on

Кроме этого желательно определить (например в файле ~/.bashrc) алиас

alias ls=’ls —show-control-chars’

Примечания

  1. Updated: cygwin-1.7.17-1 (англ.). Архивировано 19 декабря 2012 года.
  2. Larry Hall. Re: How do you pronounce it? (англ.) (14 сентября 2004). Дата обращения: 27 апреля 2010. Архивировано 25 августа 2011 года.

См. также

Ссылки