Эта статья требует дополнительных ссылок для проверки . ( ноябрь 2011 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Эта статья содержит контент, который написан как реклама . ( Январь 2021 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Запуск Cygwin, включая Cygwin / X , под Windows XP | |
Оригинальный автор (ы) | Стив Чемберлен, Cygnus Solutions |
---|---|
Разработчики) | Cygnus Solutions , Red Hat , волонтеры проекта Cygwin |
изначальный выпуск | 18 октября 1995 г . |
Стабильный выпуск | 3.1.7-1 [1] / 24 августа 2020 г . |
Репозиторий | |
Написано в | 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 года [Обновить]ее предоставляют кросс-компиляторы, предоставленные проектом 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, чтобы подчеркнуть роль Cygnus в его создании. Когда 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 больше не поддерживаются.
Ссылки [ править ]
- ^ Виншен, Коринна (2020-08-24). "Cygwin 3.1.7-1" . Объявления Cygwin (список рассылки) . Проверено 24 августа 2020 .
- ↑ Холл, Ларри (14 сентября 2004). "Re: Как вы это произносите?" . Cygwin (список рассылки) . Проверено 10 октября 2007 .
- ^ а б "Cygwin" . 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 .
- ^ Делори, ди-джей (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 .
- ^ Делори, ди-джей (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 |
- Официальный веб-сайт