- Cygwin
-
Cygwin
Cygwin на Windows XPТип Разработчик Red Hat и другие
Написана на Операционная система Последняя версия 1.7.17-1 (20 октября 2012[1])
Лицензия Сайт Cygwin (произносится /ˈsɪgwɪn/)[2] — UNIX-подобная среда и интерфейс командной строки для Microsoft Windows. Cygwin обеспечивает тесную интеграцию Windows приложений, данных и ресурсов с приложениями, данными и ресурсами UNIX-подобной среды. Из среды Cygwin можно запускать Windows приложения, также можно использовать инструменты Cygwin из Windows.
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 on set meta-flag on set convert-meta off set output-meta on
Кроме этого желательно определить (например в файле
~/.bashrc
) алиасalias ls='ls --show-control-chars'
Примечания
- ↑ Updated: cygwin-1.7.17-1 (англ.). Архивировано из первоисточника 19 декабря 2012.
- ↑ Larry Hall Re: How do you pronounce it? (англ.) (14 September 2004). Архивировано из первоисточника 25 августа 2011. Проверено 27 апреля 2010.
См. также
Ссылки
- Cygwin Home
- Cygwin Package Listings
- Cygwin page на Freecode
- CYGNOME = cygwin + GNOME
- KDE-cygwin = cygwin + KDE
- GNU utilities for Win32 — похожий проект по переносу утилит UNIX в Windows, но без эмуляции POSIX API.
- Geek to Live: Introduction to Cygwin, part I, part II, part III — Просто и доступно, объяснение установки, начала работы с Unix-like командной строкой
Категории:- Программное обеспечение по алфавиту
- Эмуляторы Юникс
- Свободное программное обеспечение только под Windows
- Свободное программное обеспечение, написанное на Си
- Свободное программное обеспечение, написанное на C++
- Программное обеспечение с лицензией GNU GPL
Wikimedia Foundation. 2010.