Эта статья требует дополнительных ссылок для проверки . ( ноябрь 2011 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Эта статья содержит контент, который написан как реклама . ( Январь 2021 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Автор (ы) оригинала | Стив Чемберлен, Cygnus Solutions |
---|---|
Разработчики) | Cygnus Solutions , Red Hat , волонтеры проекта Cygwin |
Начальная версия | 18 октября 1995 г . |
Стабильный выпуск | 3.2.0 [1] / 29 марта 2021 г . |
Репозиторий | |
Написано в | C / C ++ |
Операционная система | Майкрософт Виндоус |
Тип | POSIX стандартных утилит , стандартная библиотека POSIX , С стандартная библиотека , уровень совместимости |
Лицензия | LGPLv3 |
Веб-сайт | cygwin |
Cygwin ( / s ɪ ɡ ж ɪ п / SIG -win ) [2] является POSIX совместимый программирования и среда выполнения , которая работает на всех ОС Microsoft Windows . В Cygwin исходный код, разработанный для Unix-подобных операционных систем, может быть скомпилирован и запущен изначально с минимальными изменениями. [3]
Каталог установки Cygwin имеет структуру, аналогичную структуре корневой файловой системы Unix-подобных систем, со знакомыми каталогами, такими как / bin, / home, / etc, / usr, / var. Cygwin устанавливается с сотнями инструментов командной строки и других программ, которые обычно встречаются в Unix-подобных системах. Кроме того, многие приложения могут быть установлены из упаковочной системы. Эмулятор терминала Mintty - это интерфейс командной строки по умолчанию, предоставляемый для взаимодействия со средой. [3]
Cygwin обеспечивает встроенную интеграцию приложений на базе Windows. [4] Таким образом, можно запускать приложения Windows из среды Cygwin, а также использовать инструменты и приложения Cygwin в операционном контексте Windows.
Cygwin состоит из двух частей: библиотеки динамической компоновки (DLL) в качестве уровня совместимости API в форме стандартной библиотеки C, обеспечивающей значительную часть функций POSIX API, и обширного набора программных инструментов и приложений, которые предоставляют Unix -подобный внешний вид . [4]
Cygwin был первоначально разработан Cygnus Solutions , [5] [6], который позже был приобретен Red Hat (теперь частью IBM ), для переноса цепочки инструментов GNU / Linux на Win32, включая GNU Compiler Suite . Вместо того, чтобы переписывать все инструменты для использования среды выполнения Win32 , Cygwin реализовал среду выполнения, совместимую с POSIX, в виде библиотеки DLL . [7] Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией GNU Lesser General Public License версии 3. [8] Сегодня оно поддерживается добровольцами, включая сотрудников Red Hat и многих других.
Описание [ править ]
Среда Cygwin предоставляется в двух версиях; полная 64-разрядная версия и урезанная 32-разрядная версия, от которой постепенно отказываются. Cygwin состоит из библиотеки, которая реализует API системных вызовов POSIX с точки зрения системных вызовов Windows, цепочки инструментов разработки GNU (включая GCC и GDB ) для разработки программного обеспечения и запуска большого количества прикладных программ, эквивалентных программам в системах Unix . Программисты перенесли на Cygwin множество программ и пакетов Unix, GNU, BSD и Linux , включая X Window System , K Desktop Environment 3 , GNOME., [9] Apache и TeX . Cygwin позволяет устанавливать inetd , syslogd , sshd , Apache и другие демоны в качестве стандартных служб Windows , позволяя системам Microsoft Windows эмулировать серверы Unix и Linux.
Программы Cygwin устанавливаются путем запуска программы Cygwin "setup" [10] , которая загружает необходимые программы и файлы пакетов функций из репозиториев в Интернете. Как уже упоминалось, существует две версии этой программы установки: одна для 32-битных версий Cygwin DLL и соответствующих приложений, а другая для 64-битных версий. Программа установки может устанавливать, обновлять и удалять программы и их пакеты с исходным кодом. Полная установка займет более 90 ГБ [11] места на жестком диске, но для используемых конфигураций может потребоваться всего 1 или 2 ГБ.
Попытки согласовать концепции, которые различаются между системами Unix и Windows, включают:
- Версия команды Unix для Cygwin mountпозволяет монтировать пути Windows как «файловые системы» в файловом пространстве Unix. Начальные точки монтирования могут быть настроены в
/etc/fstab
формате, очень похожем на системы Unix, за исключением того, что пути Windows отображаются вместо устройств. Файловые системы могут быть смонтированы в двоичном режиме (по умолчанию) или в текстовом режиме, что обеспечивает автоматическое преобразование между окончаниями LF и CRLF (что влияет только на программы, открывающие файлы без явного указания текстового или двоичного режима). - Cygwin 1.7 представил всестороннюю поддержку локалей POSIX и многих кодировок символов , в результате чего кодировка Unicode UTF-8 стала по умолчанию. Имена файлов Windows и другие идентификаторы, которые имеют кодировку UTF-16 , автоматически преобразуются в выбранную кодировку символов и обратно.
- Буквы дисков Windows сопоставляются со специальным каталогом, поэтому, например, они
C:
отображаются как/cygdrive/c
./cygdrive
Префикс может быть изменен. Сети Windows , пути формы\\HOST\SHARE\FILE
сопоставляются//HOST/SHARE/FILE
. Пути Windows также можно использовать непосредственно из программ Cygwin, но многие программы не поддерживают их правильно, поэтому это не рекомендуется. - Предусмотрены полнофункциональные
/dev
и/proc
файловые системы./proc/registry
обеспечивает прямой доступ файловой системы к реестру. - Cygwin поддерживает символические ссылки POSIX , представляя их как текстовые файлы с установленным системным атрибутом . Cygwin 1.5 представил их как ярлыки Windows Explorer , но это было изменено из соображений производительности и корректности POSIX. Cygwin также распознает точки соединения NTFS и символические ссылки и обрабатывает их как символические ссылки POSIX, но не создает их, поскольку их семантика не полностью соответствует POSIX.
- POSIX API для обработки списков управления доступом (ACL) поддерживается и карты в системе Windows NT ACL. [12]
- Предусмотрены специальные форматы
/etc/passwd
и/etc/group
, которые включают указатели на идентификаторы безопасности, эквивалентные Windows (в поле Gecos ), что позволяет выполнять сопоставление между пользователями и группами Unix и Windows. - Вилка системный вызов для дублирования процесса будет полностью реализован, но это не очень хорошо карты в Windows API. Например, нельзя использовать стратегию оптимизации копирования при записи . [13] [14] [15] В результате форк Cygwin работает довольно медленно по сравнению с Linux и другими. (Эти накладные расходы часто можно избежать, заменив использование техники fork / exec вызовами функций порождения, объявленных в специфичном для Windows заголовке process.h ).
- Cygwin DLL содержит драйвер консоли, который имитирует терминал в стиле Unix в консоли Windows . Пользовательский интерфейс Cygwin по умолчанию - это оболочка bash, работающая в консоли Cygwin.
- DLL также реализует устройства псевдотерминала (pty). Cygwin поставляется с рядом эмуляторов терминала , основанных на них, включая mintty , rxvt ( -unicode ) и xterm . Они более совместимы со стандартами терминалов Unix и соглашениями о пользовательском интерфейсе, чем консоль Cygwin, но менее подходят для запуска консольных программ Windows.
- Предусмотрены различные утилиты для преобразования между путями и форматами файлов Windows и Unix, для обработки проблем с окончанием строки (CRLF / LF), для отображения библиотек DLL, с которыми связан исполняемый файл, и т. Д.
- Исполняемые файлы Cygwin не только всегда связаны с Cygwin DLL, но и являются обычными исполняемыми файлами Windows. Это означает, что программы Cygwin имеют полный доступ к Windows API и другим библиотекам Windows, что позволяет постепенно переносить программы с одной платформы на другую. Однако программисты должны быть осторожны при смешивании конфликтующих функций POSIX и Windows.
Версия gcc , поставляемая с Cygwin, имеет различные расширения для создания библиотек DLL Windows, определяющих, является ли программа программой оконного или консольного режима, добавления ресурсов и т. Д. Поддержка компиляции программ, для которых не требуется уровень совместимости POSIX, предоставляемый Cygwin. DLL раньше была включена по умолчанию gcc
, но с 2014 года [update]ее предоставляют кросс-компиляторы, предоставленные проектом MinGW-w64 .
Cygwin широко используется для переноса многих популярных программ на платформу Windows. Он используется для компиляции Sun Java , LibreOffice и даже программного обеспечения веб-сервера, такого как Lighttpd и Hiawatha . [16]
Библиотека Cygwin API находится под лицензией GNU Lesser General Public License версии 3 (или более поздней), за исключением того, что она позволяет ссылаться на любое бесплатное программное обеспечение с открытым исходным кодом , лицензия которого соответствует определению открытого исходного кода [17] (менее строгому, чем Free Определение программного обеспечения).
История [ править ]
Cygwin начался в 1995 году как проект Стива Чемберлена, инженера Cygnus, который заметил, что Windows NT и 95 использовали COFF в качестве формата объектного файла , и что GNU уже включает поддержку x86 и COFF, а также библиотеку C newlib . Он думал, что можно будет перенастроить GCC и создать кросс-компилятор, генерирующий исполняемые файлы, которые могли бы работать в Windows. Это оказалось практичным, и вскоре был разработан прототип.
Следующим шагом была попытка загрузить компилятор в системе Windows, что потребовало достаточной эмуляции Unix для запуска сценария оболочки GNU configure . Требовался интерпретатор команд, совместимый с оболочкой Bourne , такой как bash , и, в свою очередь, эмуляция системного вызова fork и стандартный ввод / вывод . Windows включает аналогичные функции, поэтому библиотека Cygwin просто необходима для обеспечения POSIX- совместимого интерфейса прикладного программирования (API), а также для правильной трансляции вызовов и управления частными версиями данных, такими как файловые дескрипторы .
Изначально Cygwin назывался gnuwin32 (не путать с текущим проектом GnuWin32 ). Название было изменено на Cygwin32, чтобы подчеркнуть роль Лебедя в его создании. Когда Microsoft зарегистрировала торговую марку Win32 , 32 отказались и стали просто Cygwin.
К 1996 году к ним присоединились другие инженеры, потому что было ясно, что Cygwin будет полезным способом предоставить встроенные инструменты Cygnus, размещенные в системах Windows (предыдущая стратегия заключалась в использовании DJGPP ). Это было особенно привлекательно, потому что можно было выполнить трехстороннюю кросс-компиляцию , например, использовать здоровенную рабочую станцию Sun Microsystems для создания, скажем, кросс-компилятора Windows-x- MIPS , что было быстрее, чем использование ПК на время. В 1999 Cygnus предложил Cygwin 1.0 как коммерческий продукт [18], представляющий самостоятельный интерес, хотя последующие версии не были выпущены, вместо этого полагаясь на продолжающиеся выпуски с открытым исходным кодом.
Джеффри Ноер был руководителем проекта с 1996 по 1999 год. [19] [20] Кристофер Фейлор был руководителем проекта с 1999 до середины 2014 года. Коринна Виншен стала со-ведущей с 2004 года [21], когда Фейлор покинула Red Hat, и возглавляет ее с середины 2014 года, когда Фейлор отказался от активного участия в проекте. [22]
Особенности [ править ]
Выбор базового пакета Cygwin довольно невелик (около 100 МБ [23] ) и содержит немного больше, чем оболочки bash (интерактивный пользователь) и dash (установка), а также основной файл и утилиты для работы с текстом, ожидаемые от командной строки Unix. Дополнительные пакеты доступны в виде необязательной установки из диспетчера пакетов Cygwin («setup-x86.exe» - 32-разрядная версия и «setup-x86_64.exe» - 64-разрядная версия). К ним относятся (среди многих других [24] ):
- Оболочки (то есть интерпретаторы командной строки): bash , dash , fish , pdksh , tcsh , zsh
- Файловые и системные утилиты: coreutils , findutils , util-linux
- Текстовые утилиты: grep , sed , diff , patch , awk
- Терминалы: mintty , rxvt , screen
- Редакторы: ed , emacs , joe , mined , nano , vim
- Удаленный вход: ssh , rsh , telnet
- Удаленная передача / синхронизация файлов: ftp , scp , rsync , unison , rtorrent
- Сжатие / архивирование: tar , gzip , bzip2 , lzma , zip
- Обработка текста: TeX , groff , Ghostscript
- Языки программирования: C , C ++ , Objective-C , Fortran , Gambas , Perl , Python , Ruby , Tcl , Ada , CLISP , Scheme , OCaml , Prolog
- Инструменты разработки: make , autotools , flex , bison , doxygen
- Системы контроля версий: cvs , subversion , git , mercurial
- Серверы: Apache , BIND , PostgreSQL , Pure-FTPd , OpenSSH , telnetd , exim , UW IMAP
- Клиенты: Mutt (электронная почта), Lynx (веб), Irssi (IRC), tin (группы новостей)
Проект Cygwin / X вносит свой вклад в реализацию системы X Window, которая позволяет графическим программам Unix отображать свои пользовательские интерфейсы на рабочем столе Windows. Это можно использовать как с локальными, так и с удаленными программами. Cygwin / X поддерживает более 500 пакетов, включая основные оконные менеджеры X, среды рабочего стола и приложения, например:
- Терминалы: rxvt-unicode , xterm
- Редакторы: emacs-X11, gvim
- Текстовые процессоры / программы просмотра: LyX , xpdf , xdvi
- WWW браузеры: прозрение , Konqueror , ссылки , рысь , Мидори , qupzilla , W3M
Помимо низкоуровневых библиотек Xlib / XCB для разработки X-приложений, Cygwin также поставляется с различными высокоуровневыми и кроссплатформенными графическими интерфейсами , включая GTK + и Qt .
Проект Cygwin Ports предоставил множество дополнительных пакетов, которых не было в самом дистрибутиве Cygwin. Примеры включали GNOME и K Desktop Environment 3, а также базу данных MySQL и язык сценариев PHP . Большинство портов были приняты разработчиками-добровольцами как пакеты Cygwin, а порты Cygwin больше не поддерживаются.
См. Также [ править ]
- Подсистема Windows для Linux - уровень совместимости для запуска двоичных исполняемых файлов Linux изначально в Windows
Ссылки [ править ]
- ^ https://sourceware.org/pipermail/cygwin-announce/2021-March/009987.html ; дата публикации: 29 марта 2021 г.
- ^ Холл, Ларри (2004-09-14). "Re: Как вы это произносите?" . Cygwin (список рассылки) . Проверено 10 октября 2007 .
- ^ а б "Лебедь" . www.cygwin.com .
- ^ a b "Часто задаваемые вопросы о Cygwin" . cygwin.com .
- ^ «Краткая история проекта Cygwin» . Cygwin . 2018-02-02 . Проверено 10 января 2020 .
- ^ «Cygwin32: бесплатный уровень переноса Win32 для приложений UNIX®» . USENIX . 1998-08-03 . Проверено 10 января 2020 .
- ^ "(Решено) Подсистема Linux против Cygwin против MobaXterm" . Форум технической поддержки от How-To Geek . 2017-01-24 . Проверено 15 марта 2019 .
- ^ «Библиотека Cygwin теперь доступна по лицензии GNU Lesser General Public License» . Красная шляпа .
- ^ "Порты Cygwin" . Дата обращения 2 мая 2015 .
- ^ Delorie, ди - джей (2000-04-17). «Новый выпуск Cygwin Net» . Cygwin (список рассылки) . Проверено 10 января 2020 .
- ^ "Каков текущий размер полной установки Cygwin?" . StackOverflow . 2018-05-28 . Проверено 11 января 2020 .
- ^ Виншен, Коринна (2016-01-16). «Обновлено: Cygwin 2.4.0-1» . Объявления Cygwin (список рассылки) . Проверено 11 января 2020 .
- ^ "Cygwin FAQ: Как реализован fork ()?" . Проверено 10 октября 2010 года .
- ^ «Основные возможности Cygwin: создание процесса» . Проверено 24 декабря 2014 года .
- ↑ Блейк, Эрик (15 января 2009 г.). «Bash не запускает приложения напрямую» . Cygwin (список рассылки) . Проверено 10 октября 2010 года .
- ^ Leisink, Хьюго. "Веб-сервер Hiawatha" . www.hiawatha-webserver.org .
- ^ "Каковы условия лицензирования?" . Cygwin . Архивировано 28 июля 2012 года.
- ^ «Cygwin объединяет приложения Unix и Windows» . Google Книги . 1999-11-15 . Проверено 13 января 2020 .
- ^ Delorie, ди - джей (1999-02-17). "к сведению: кто что делает" . Cygwin (список рассылки) . Проверено 13 января 2020 .
- ^ Ноер, Джеффри (1999-02-19). «Частичное прощание ...» Cygwin (Список рассылки) . Проверено 13 января 2020 .
- ^ Faylor, Кристофер (2004-03-31). «Смена места работы» . Cygwin (список рассылки) . Проверено 13 января 2020 .
- ^ Фейлор, Кристофер (31.07.2014). «Кристофер Фейлор - Выход из проекта» . Cygwin (список рассылки) . Дата обращения 2 мая 2015 .
- ^ «Установка и обновление пакетов Cygwin» . Cygwin . Проверено 11 января 2020 .
- ^ "Список пакетов Cygwin" . Cygwin . Проверено 11 января 2020 .
Внешние ссылки [ править ]
В Викиучебнике есть больше по теме: Cygwin |
- Официальный сайт