Cygwin - Википедия - Cygwin
Эта статья нужны дополнительные цитаты для проверка.Ноябрь 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Запуск Cygwin, включая Cygwin / X, под Windows XP | |
Оригинальный автор (ы) | Стив Чемберлен, Cygnus Solutions |
---|---|
Разработчики) | Cygnus Solutions, Красная шляпа, Волонтеры проекта Cygwin |
изначальный выпуск | 18 октября 1995 г. |
Стабильный выпуск | 3.1.7-1[1] / 24 августа 2020 г. |
Репозиторий | |
Написано в | C /C ++ |
Операционная система | Майкрософт Виндоус |
Тип | Стандартные утилиты POSIX, Стандартная библиотека POSIX, Стандартная библиотека C, уровень совместимости |
Лицензия | LGPLv3 |
Интернет сайт | Cygwin |
Cygwin (/ˈsɪɡшɪп/ SIG-победить )[2] это POSIX -совместимое программирование и среда выполнения это работает изначально на Майкрософт Виндоус. Под Cygwin, исходный код предназначен для Unix-подобный операционные системы могут быть скомпилированы и запускаться изначально с минимальными изменениями.
Каталог установки Cygwin имеет такую же структуру каталогов, что и в корневой файловой системе Unix-подобных систем, со знакомыми каталогами, такими как / bin, / home, / etc, / usr, / var. Cygwin устанавливается с сотнями инструментов командной строки и других программ, которые обычно встречаются в Unix-подобных системах. Кроме того, многие приложения могут быть установлены из упаковочной системы. Эмулятор терминала Mintty по умолчанию Интерфейс командной строки предоставлен для взаимодействия с окружающей средой.
Cygwin обеспечивает встроенную интеграцию приложений на базе Windows. Таким образом, можно запускать приложения Windows из среды Cygwin, а также использовать инструменты и приложения Cygwin в операционном контексте Windows.
Cygwin состоит из двух частей: библиотека с динамической компоновкой (DLL) как API слой совместимости в виде Стандартная библиотека C обеспечение значительной части POSIX Функциональность API и обширная коллекция программные инструменты и приложения, которые предоставляют Unix-подобный смотреть и чувствовать.
Cygwin был первоначально разработан Cygnus Solutions,[3][4] который позже был приобретен Красная шляпа (теперь часть IBM ), чтобы портировать GNU / Linux набор инструментов в Win32, включая Комплект компиляторов GNU. Вместо того, чтобы переписывать все инструменты для использования Win32 время выполнения, Cygwin реализовал POSIX совместимая среда выполнения как DLL.[5] это бесплатное программное обеспечение с открытым исходным кодом, выпущенный под Стандартная общественная лицензия ограниченного применения GNU версия 3.[6] Сегодня его поддерживают волонтеры, в том числе сотрудники Red Hat и многие другие.
Описание
Среда Cygwin предоставляется в двух версиях; полная 64-разрядная версия и урезанная 32-разрядная версия, от которой постепенно отказываются. Cygwin состоит из библиотеки, реализующей POSIX системный вызов API с точки зрения системных вызовов Windows GNU набор инструментов для разработки (включая GCC и GDB ) для разработки программного обеспечения и запуска большого количества прикладных программ, эквивалентных тем, что на Unix системы. Программисты портировали много Unix, GNU, BSD и Linux программ и пакетов для Cygwin, включая X Window System, K Среда рабочего стола 3, ГНОМ,[7] Apache, и TeX. Cygwin разрешает установку inetd, syslogd, sshd, Apache, и другие демоны в стандартной комплектации Службы Windows, позволяя системам Microsoft Windows эмулировать серверы Unix и Linux.
Программы Cygwin устанавливаются путем запуска программы установки Cygwin.[8] программа, скачивающая необходимые программы и файлы пакетов функций из репозиториев в Интернете. Как уже упоминалось, существует две версии этой программы установки: одна для 32-битных версий Cygwin DLL и соответствующих приложений, а другая для 64-битных версий. Программа установки может устанавливать, обновлять и удалять программы и их пакеты с исходным кодом. Полная установка займет более 90 ГБ[9] места на жестком диске, но для используемых конфигураций может потребоваться всего 1 или 2 ГБ.
Попытки согласовать концепции, которые различаются между системами Unix и Windows, включают:
- Версия Unix для Cygwin
устанавливать
Команда позволяет монтировать пути Windows как "файловые системы" в файловом пространстве Unix. Начальные точки монтирования можно настроить в/ etc / fstab
, который имеет формат, очень похожий на системы Unix, за исключением того, что пути Windows отображаются вместо устройств. Файловые системы могут быть смонтированы в двоичном режиме (по умолчанию) или в текстовом режиме, что позволяет автоматически преобразование между LF и CRLF окончания (влияет только на программы, открывающие файлы без явного указания текстового или двоичного режима). - Cygwin 1.7 представил всестороннюю поддержку POSIX локации и много кодировки символов, посредством чего UTF-8 Unicode кодировка стала по умолчанию. Имена файлов Windows и другие идентификаторы, которые кодируются как UTF-16, автоматически преобразуются в выбранную кодировку символов и обратно.
- Windows буквы дисков сопоставить со специальным каталогом, например
C:
выглядит как/ cygdrive / c
. В/ cygdrive
префикс можно изменить. Сетевые пути Windows формыХОСТ ПОДЕЛИТЬСЯ ФАЙЛ
отображаются на// ХОСТ / ПОДЕЛИТЬСЯ / ФАЙЛ
. Пути Windows также можно использовать непосредственно из программ Cygwin, но многие программы не поддерживают их правильно, поэтому это не рекомендуется. - Полнофункциональный
/ dev
и/ proc
предоставлены файловые системы./ proc / registry
обеспечивает прямой доступ файловой системы к реестру. - Cygwin поддерживает POSIX символические ссылки, представляя их в виде текстовых файлов с системой атрибут набор. Cygwin 1.5 представил их как проводник Виндоус ярлыки, но это было изменено из соображений производительности и корректности POSIX. Cygwin также распознает NTFS точки соединения и символические ссылки и обрабатывает их как символические ссылки POSIX, но не создает их, поскольку их семантика не полностью соответствует POSIX.
- В POSIX API для обработки списки контроля доступа (ACL) поддерживается и сопоставляется с системой ACL Windows NT.[10]
- Специальные форматы
/ etc / passwd
и/ etc / group
предоставляются, которые включают указатели на эквивалент Windows SID (в Месторождение Гекос ), что позволяет отображать пользователей и группы Unix и Windows. - В вилка Системный вызов для дублирования процесса реализован полностью, но он плохо отображается в Windows API. Например, копирование при записи не удалось использовать стратегию оптимизации.[11][12][13] В результате форк Cygwin работает довольно медленно по сравнению с Linux и другими. (Эти накладные расходы часто можно избежать, заменив использование вилка / exec техника с обращениями к порождать функции, объявленные в специфичных для Windows process.h заголовок).
- Cygwin DLL содержит драйвер консоли, который имитирует стиль Unix. Терминал в пределах Консоль Windows. Пользовательский интерфейс Cygwin по умолчанию - это трепать оболочка, запущенная в консоли Cygwin.
- DLL также реализует псевдотерминал (pty) устройства. Cygwin поставляется с несколькими эмуляторы терминала основанные на них, в том числе мятный, 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. Он используется для компиляции солнце Ява, LibreOffice, и даже программное обеспечение веб-сервера, такое как Lighttpd и Гайавата.[14]
Библиотека Cygwin API находится под лицензией Стандартная общественная лицензия ограниченного применения GNU версия 3 (или более поздняя) за исключением того, что позволяет ссылаться на любые бесплатное программное обеспечение с открытым исходным кодом чья лицензия соответствует Определение открытого исходного кода[15] (менее строгие, чем определение свободного программного обеспечения).
История
Cygwin начался в 1995 году как проект Стива Чемберлена, Лебедь инженер, который заметил, что Windows NT и 95 использовали COFF как их формат объектного файла, и что GNU уже включает поддержку x86 и COFF, и библиотека C newlib. Он думал, что можно будет перенацелить GCC и произвести кросс-компилятор создание исполняемых файлов, которые могут работать в Windows. Это оказалось практичным, и вскоре был разработан прототип.
Следующим шагом была попытка бутстрап компилятор в системе Windows, требующий достаточной эмуляции Unix, чтобы позволить GNU configure сценарий оболочки запустить. А Оболочка Борна -совместимый интерпретатор команд, такой как трепать, был нужен и, в свою очередь, вилка эмуляция системного вызова и стандартный ввод / вывод. 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 в качестве коммерческого продукта.[16] представляет интерес сам по себе, хотя последующие версии не были выпущены, вместо этого полагаясь на продолжающиеся выпуски с открытым исходным кодом.
Джеффри Ноер был руководителем проекта с 1996 по 1999 год.[17][18] Кристофер Фейлор руководил проектом с 1999 до середины 2014 года. Коринна Виншен стала со-ведущей с 2004 года.[19] когда Фейлор покинул Red Hat и возглавил с середины 2014 года, когда Фейлор отказался от активного участия в проекте.[20]
Функции
Выбор базового пакета Cygwin довольно невелик (около 100 МБ[21]), содержащий немногим более трепать (интерактивный пользователь) и бросаться (установочные) оболочки и утилиты для работы с файлом ядра и текстом, ожидаемые от командной строки Unix. Дополнительные пакеты доступны в качестве необязательной установки из диспетчера пакетов Cygwin («setup-x86.exe» - 32-разрядная версия и «setup-x86_64.exe» - 64-разрядная версия). К ним относятся (среди многих других[22]):
- Оболочки (то есть интерпретаторы командной строки): трепать, бросаться, рыбы, pdksh, tcsh, zsh
- Файловые и системные утилиты: coreutils, Findutils, утилита-Linux
- Текстовые утилиты: grep, sed, разница, пластырь, awk
- Терминалы: мятный, rxvt, экран
- Редакторы: ред, emacs, Джо, добыт, нано, vim
- Удаленный вход: ssh, rsh, телнет
- Удаленная передача / синхронизация файлов: ftp, scp, rsync, унисон, rtorrent
- Сжатие / архивирование: деготь, gzip, bzip2, Lzma, застегивать
- Обработка текста: TeX, Groff, Ghostscript
- Языки программирования: C, C ++, Цель-C, Фортран, Гамбас, Perl, Python, Рубин, Tcl, Ада, CLISP, Схема, OCaml, Пролог
- Инструменты разработки: делать, автоинструменты, сгибать, зубр, доксиген
- Системы контроля версий: cvs, подрывная деятельность, мерзавец, ртутный
- Серверы: Apache, СВЯЗЫВАТЬ, PostgreSQL, Чистый FTPd, OpenSSH, telnetd, exim, UW IMAP
- Клиенты: Матт (электронное письмо), Рысь (Интернет), Ирсси (IRC), банка (группы новостей)
В Cygwin / X проект способствует реализации X Window System который позволяет графическим программам Unix отображать свои пользовательские интерфейсы на рабочем столе Windows. Это можно использовать как с локальными, так и с удаленными программами. Cygwin / X поддерживает более 500 пакетов, включая основные оконные менеджеры X, среды рабочего стола и приложения, например:
- Терминалы: rxvt-unicode, xterm
- Редакторы: emacs-X11, гвим
- Текстовые процессоры / программы просмотра: LyX, xpdf, xdvi
- WWW-браузеры: Богоявление, Konqueror, ссылки, рысь, Midori, Qupzilla, w3m
Помимо низкоуровневого Xlib /XCB библиотеки для разработки приложений X, Cygwin также поставляется с различными высокоуровневыми и кроссплатформенными GUI фреймворки, в том числе GTK + и Qt.
В Cygwin Порты Проект предоставил множество дополнительных пакетов, которые не были доступны в самом дистрибутиве Cygwin. Примеры включены ГНОМ и K Среда рабочего стола 3 так же хорошо как MySQL база данных и PHP язык сценариев. Большинство портов были приняты разработчиками-добровольцами как пакеты Cygwin, а порты Cygwin больше не поддерживаются.
Рекомендации
- ^ Виншен, Коринна (24 августа 2020 г.). "cygwin 3.1.7-1". Объявления Cygwin (Список рассылки). Получено 2020-08-24.
- ^ Холл, Ларри (14 сентября 2004). "Re: Как вы это произносите?". Cygwin (Список рассылки). Получено 2007-10-10.
- ^ «Краткая история проекта Cygwin». Cygwin. 2018-02-02. Получено 2020-01-10.
- ^ «Cygwin32: бесплатный уровень переноса Win32 для приложений UNIX®». USENIX. 1998-08-03. Получено 2020-01-10.
- ^ «(Решено) Подсистема Linux против Cygwin против MobaXterm». Форум технической поддержки от How-To Geek. 2017-01-24. Получено 2019-03-15.
- ^ «Библиотека Cygwin теперь доступна по лицензии GNU Lesser General Public License». Красная шляпа.
- ^ "Порты Cygwin". Получено 2 мая 2015.
- ^ Делори, ди-джей (2000-04-17). "Новый выпуск Cygwin Net". Cygwin (Список рассылки). Получено 2020-01-10.
- ^ "Каков текущий размер полной установки Cygwin?". Переполнение стека. 2018-05-28. Получено 2020-01-11.
- ^ Виншен, Коринна (16 января 2016). "Обновлено: Cygwin 2.4.0-1". Объявления Cygwin (Список рассылки). Получено 2020-01-11.
- ^ "Cygwin FAQ: Как реализован fork ()?". Получено 10 октября, 2010.
- ^ «Основные возможности Cygwin: создание процесса». Получено 24 декабря, 2014.
- ^ Блейк, Эрик (15 января 2009 г.). «Bash не запускает приложения напрямую». Cygwin (Список рассылки). Получено 10 октября, 2010.
- ^ Пакет Windows веб-сервера Hiawatha, скомпилированный через Cygwin
- ^ "Каковы условия лицензирования?". Cygwin. В архиве из оригинала от 28.07.2012.
- ^ «Cygwin объединяет приложения для Unix и Windows». Google Книги. 1999-11-15. Получено 2020-01-13.
- ^ Делори, ди-джей (1999-02-17). "к сведению: кто что делает". Cygwin (Список рассылки). Получено 2020-01-13.
- ^ Ноер, Джеффри (1999-02-19). "Частичное прощание ..." Cygwin (Список рассылки). Получено 2020-01-13.
- ^ Фейлор, Кристофер (31 марта 2004 г.). «Смена места работы». Cygwin (Список рассылки). Получено 2020-01-13.
- ^ Фейлор, Кристофер (31.07.2014). «Кристофер Фейлор - Выход из проекта». Cygwin (Список рассылки). Получено 2 мая 2015.
- ^ «Установка и обновление пакетов Cygwin». Cygwin. Получено 2020-01-11.
- ^ "Список пакетов Cygwin". Cygwin. Получено 2020-01-11.