Каковы практические различия между Interix и Cygwin?
И Interix, и Cygwin, похоже, предоставляют Unix-подобную пользовательскую среду в Windows. Каковы практические различия между этими двумя понятиями, например:
- Unix-подобное "чувство"
- Спектакль
- Доступность пакета / простота составления случайного программного обеспечения, загруженного из Интернета
- Интеграция с приложениями и инструментами Windows
- Интеграция / совместимость с виртуальными машинами (например, может ли Interix и виртуальная машина Ubuntu использовать один и тот же "домашний каталог")
- Размер базы пользователей / уровень поддержки сообщества
Мне известно одно отличие: Interix требует Windows 7 Enterprise или Ultimate Edition; Cygwin будет работать на что угодно.
5 ответов
Я использовал только Windows SFU на Windows 2008, но я полагаю, что это основано на Interix. Я иногда играл с Cygwin, но не так много, поэтому, пожалуйста, поправьте меня, если я скажу что-то явно не так.
- Unix-подобное чувство: Interix побеждает в этом. Окружающая среда кажется гораздо более "полной". Я не уверен, как это выразить. Interix работает вместе с подсистемой win32, где Cygwin работает поверх нее. Итак, Interix - это "первоклассный гражданин" в мире ядра Windows. Вещи как
ps
а такжеdf
отлично работает - Производительность: не проводя каких-либо серьезных тестов производительности, я думаю, что Interix тоже победит. Опять же, он работает на более низком уровне. Вы не просто запускаете приложения Win32 с подключенной DLL-библиотекой совместимости POSIX.
- Пакеты / случайное программное обеспечение: Cygwin выигрывает этот по двум причинам. Во-первых, Cygwin гораздо лучше известен. Многие Unixy-программы будут поддерживать его причуды. Вы также можете установить вещи очень легко с помощью графического установщика. Interix (я считаю) не имеет ничего подобного этому. Конечно, вы можете что-то скачать, скомпилировать это с помощью gcc (который, я думаю, вы можете получить предварительно собранным) и молиться, чтобы это работало, но это немного похоже на перенос программного обеспечения на любой другой случайный вариант Unix (например, Solaris или AIX) - некоторые все будет работать, другие будут пытаться откусить вам ногу и убить ваших детей.
- Интеграция с приложениями и инструментами Windows. Если честно, то и то, и другое отстой. Если у вас есть, скажем, сервер Apache, работающий внутри Cygwin или Interix, то, конечно, он сможет обмениваться данными через TCP с программами Win32, но это далеко не все. Внутри Interix, я полагаю, вы можете убивать программы Win32 и перечислять их с помощью ps, но не уверен, что вы можете сделать это с помощью cygwin. С обоими вы можете использовать диспетчер задач Windows, чтобы убивать вещи.
- Интеграция с виртуальными машинами: рассмотрим пример совместного использования домашнего каталога, затем да. Вы можете использовать samba для этого, и я считаю, что NFS работает на Interix и для чего-то более необычного. Вы не найдете ни приятного графического интерфейса, ни чего-нибудь, что сделало бы работу за вас. И Cygwin, и Interix позволяют вам получить доступ к вашим обычным файловым системам.
- Размер базы пользователей: Cygwin выигрывает здесь, я бы сказал. Было очень трудно найти то, что было протестировано и разработано для работы на Interix, где большинство открытых программ, похоже, поддерживают cygwin в качестве платформы для компиляции.
Если у вас есть копия ОС Windows, которая будет поддерживать Interix (как вы сказали, выпуск Enterprise, выпуск Ultimate или выпуск Server), это не повредит. Это очень полная атмосфера чувств. Cygwin, как вы сказали, работает на всем, его лучше знают и лучше поддерживают, но он мне кажется немного грязным. Некоторые люди используют его регулярно, хотя.
/* мета-заметка - я ненавижу, что комментарии такие короткие */
Я бы в основном согласился с ответом Эндрюса с парой комментариев. Я заменил многие системы Unix с SUA/SFU (нет, они не одинаковы, но близко) под окнами.
- производительность - SUA намного быстрее, чем сервисы для Unix, но SFU также не был дураком, оба обычно быстрее, чем Cygwin (но не всегда)
- Интеграция - интеграция - это главное, что есть в SFU / SUA, и есть много документов о том, что вы можете и не можете делать на сайте Technet. Cygwin предназначен для запуска команды *nix на окнах, а не для взаимодействия 2. См. Компоненты взаимодействия Unix/Linux в Windows (SUA, IdMU, NFS и т. Д.)
- пользовательская база - я думаю, что на стороне interix больше работающих, поддерживаемых решений, чем на стороне cygwin, и проблем с совместимостью гораздо меньше, чем на стороне cygwin, см. http://www.suacommunity.com/ (склад инструментов). Cygwin, вероятно, имеет более общие установки, так как он подходит для решения "Мне нужна оболочка Unix". Cygwin запускает команды, SUA - это среда Unix, которая является равноправной для окон.
Не могу прокомментировать ответ JimB, поэтому рассмотрим его здесь, в частности, вопрос об интеграции Windows. Cygwin, основанный на Win32 вместо того, чтобы работать в собственной подсистеме, хотя и медленнее, обеспечивает гораздо большую интеграцию с Windows. Он даже позволяет использовать API Windows и UNIX в одной и той же программе, что позволяет использовать такие вещи, как сервер Cygwin X или терминал mintty.
'Ps' в Cygwin перечисляет процессы Windows, если вы укажете опцию -W, и kill -f убьет их. Программы Windows могут быть вызваны из Cygwin и подключены вместе с программами Cygwin, используя все обычные механизмы, такие как каналы. (Я не знаю, возможно ли это в Interix.)
Поддерживаются пути в стиле Windows, как с прямой, так и с обратной косой чертой. Cygwin 1.7 сделал UTF-8 набором символов по умолчанию, а имена файлов Windows UTF-16 автоматически переводятся, поэтому имена файлов на любом языке правильно отображаются в Cygwin. Я не знаю, что здесь делает Interix, но не смог найти никаких доказательств того, что он поддерживает Unicode.
Другие функции интеграции включают утилиту cygstart для открытия файла, как если бы вы дважды щелкнули по нему в Проводнике, и устройство /dev/clipboard для доступа к буферу обмена Windows.
Позвольте мне поделиться своим опытом установки Interix для Windows 7.
Наше путешествие начинается с неясной страницы для Windows Server 2008.
Здесь вы обнаружите, что он даже больше не называется Interix, а подсистемой для приложений на основе Unix илиSUA. Далее вы заметите только из комментария пользователя, что SUA доступен только для Windows 7 Ultimate или Enterprise. Это нигде не упоминается в статье. После установки "подсистемы" вы поймете, что в вашем меню "Пуск" не более 2 ярлыков.
Теперь вы попадаете в настоящее зло. Нажмите на ярлык для загрузки, и вы попадете на страницу загрузки.
Здесь у нас есть 3 доступных файла для скачивания. Эти файлы имеют размер более 400 МБ, и на момент написания этой статьи более 4 лет. Кроме того, у нас нет вариантов загрузки пользовательских пакетов, определенных частей и так далее. Затем вы поймете, что эта ссылка на самом деле предназначена для Vista, а не для Windows 7, и вам придется поискать в интернете страницу Windows 7. В этот момент я сдался.
Cygwin
Перейти на http://www.cygwin.com/. Загрузите http://cygwin.com/setup-x86.exe. Этот файл714 КБ. Запустите базовую установку, и вы увидите, что это займет около2 минут.
После этого вы можете использовать установщик для многих других пакетов по своему усмотрению. Мораль этой истории заключается в том, что Cygwin заботится о пользователе.
UNIX-подобное "чувство" довольно субъективно. Мой голос идет за CygWin, поскольку у него есть сервер CygWin/X Xwindows со всеми необходимыми функциями. SFU получил базовые инструменты X11, но было слишком мало и слишком поздно. Многие (включая меня) познакомились с CygWin из-за необходимости иметь сервер X11. С точки зрения полноты, CygWin также лучше позиционируется, так как является открытым исходным кодом, и на него перенесено много лицензионного программного обеспечения GNU или GPL. Я видел несколько коммерческих продуктов для CygWin, хотя видел только один продукт, требующий UNIX Services для Windows NT, и ни одного с тех пор. YMMV.
Доступность пакета является очевидной победой CygWin, на которую влияют несколько факторов: - более низкая стоимость входа: "любая Windows" с CygWin по сравнению с серверной лицензией для SFU/SUA. Некоторые функции доступны для настольных систем Windows, но более дорогих версий и без серверных компонентов; - открытый исходный код или закрытый исходный код и, что более важно, открытая документация. В прошлом даже список команд и предоставленных API-интерфейсов был доступен только подписчикам MSDN, и на сайте Microsoft было мало информации. Напротив, набор инструментов GNU был хорошо документирован и доступен как онлайн, так и в виде справочных страниц; - изменения именования и реализации сбивают с толку. В ранних версиях использовался инструментарий MKS, который позже был заброшен. Переименование из SFU в SUA может показаться приятным в глазах маркетинговой команды, но вводит в заблуждение неопытных пользователей.
С точки зрения производительности можно утверждать, что Interix ближе к ядру и, следовательно, имеет более короткий путь выполнения кода. Реальный вопрос в том, насколько это важно? Для большинства программ разница составляет несколько процентов и незначительна. Конечно, можно привести искусственный пример с тяжелым вводом / выводом. Я бы предпочел размещать такие загрузки на собственном UNIX, так как это будет быстрее, чем на родных дополнениях Windows и UNIX поверх Windows. Многие из них перешли с Windows на UNIX с увеличением нагрузки, хотя я не знаю ни одного примера преобразования из CygWin в Interix (или наоборот). Требуется совместимость с UNIX, а не производительность UNIX, поэтому я поставил это в конец списка.