Назад | Перейти на главную страницу

В чем практические различия между Interix и Cygwin?

Обе Interix и Cygwin похоже, что обеспечивает Unix-подобную пользовательскую среду в Windows. Каковы практические различия между ними, например, с точки зрения:

Одно отличие, о котором я знаю, заключается в том, что Interix требует выпуска Windows 7 Enterprise или Ultimate; Cygwin будет работать на чем угодно.

Раньше я использовал Windows SFU только в Windows 2008, но считаю, что это основано на Interix. Иногда я играл с cygwin, но не очень много, так что кто-нибудь поправьте меня, если я скажу что-то явно не так.

  • Unix-подобный вид: Interix выигрывает в этом. Окружающая среда кажется гораздо более «законченной». Не знаю, как это выразить. Interix работает вместе с подсистемой win32, а cygwin - поверх нее. Итак, Interix - это «гражданин первого класса» в мире ядра Windows. Вещи как ps и df работают нормально.
  • Производительность: Не проводя серьезного тестирования производительности, я бы угадать что Interix тоже выигрывает. Опять же, он работает на более низком уровне. Вы не просто запускаете приложения Win32 с подключенной библиотекой совместимости с POSIX.
  • Пакеты / случайное ПО: Cygwin побеждает в этом по двум причинам. Во-первых, cygwin гораздо более известен. Многие программы Unixy будут поддерживать свои особенности. Вы также можете очень легко установить что-то из установщика с графическим интерфейсом. В Interix (я думаю) нет ничего подобного. Конечно, вы можете что-то загрузить, скомпилировать с помощью gcc (который, я думаю, вы можете получить заранее) и молиться, чтобы он работал, но это немного похоже на перенос программного обеспечения на любой другой случайный вариант Unix (например, Solaris или AIX) - некоторые все будет работать, другие будут пытаться откусить вам ногу и убить ваших детей.
  • Интеграция с приложениями и инструментами Windows: Если честно, оба отстой в этом. Если у вас есть, скажем, сервер Apache, работающий внутри cygwin или Interix, то, конечно, он сможет общаться через TCP с программами Win32, но это все, что нужно. Я считаю, что изнутри interix вы можете убить программы Win32 и перечислить их с помощью ps, не уверен, что вы можете сделать это с помощью cygwin. В обоих случаях вы можете использовать диспетчер задач Windows, чтобы убивать вещи.
  • Интеграция с ВМ: Если обратиться к вашему примеру совместного использования домашнего каталога, тогда да. Вы можете использовать для этого самбу, и я считаю, что NFS также работает с Interix для чего-то более unixy. Однако вы не найдете ни хороших графических интерфейсов, ни чего-либо еще, что сделало бы работу за вас. И cygwin, и Interix позволяют вам получить доступ к вашим обычным файловым системам.
  • Размер пользовательской базы: Я бы сказал, что здесь побеждает Сигвин. Было очень сложно найти что-то, что было протестировано и разработано для работы на Interix, поскольку большинство материалов с открытым исходным кодом, казалось, поддерживали cygwin в качестве платформы компиляции.

Если у вас есть копия ОС Windows, которая будет поддерживать Interix (как вы сказали, выпуск Enterprise, выпуск Ultimate или выпуск Server), это не повредит. Это очень полная среда ощущений. Cygwin, как вы сказали, работает на всем, он более известен и лучше поддерживается, но для меня это немного грязный хакер. Однако некоторые люди используют его регулярно.

/ * мета-заметка - ненавижу такие короткие комментарии * /

Я в основном согласен с ответом Эндрюса с парой комментариев. Я заменил многие системы unix на SUA / SFU (нет, они не такие, но близкие) под окнами.

  • производительность - SUA намного быстрее, чем службы для unix, но SFU тоже не сутулился, оба обычно быстрее, чем cygwin (но не всегда)
  • интеграция - интеграция - это весь смысл SFU / SUA, и на сайте Technet есть множество документов о том, что вы можете и чего не можете делать. Cygwin предназначен для запуска команды * nix в Windows, а не для взаимодействия двух. Видеть Компоненты взаимодействия Unix / Linux в Windows (SUA, IdMU, NFS и т. Д.)
  • пользовательская база - я думаю, что на стороне interix больше рабочих, поддерживаемых решений, чем на стороне cygwin, и гораздо меньше проблем с совместимостью, чем на стороне cygwin см. http://www.suacommunity.com/ (склад инструмента). Cygwin, вероятно, имеет больше общих установок, так как он хорош для решения «Мне нужна оболочка unix». Cygwin запускает команды, SUA - это среда unix, которая является одноранговой для Windows.

Разрешите поделиться своим опытом установки Interix для Windows 7.

Наше путешествие начинается в непонятная страница для Windows Server 2008.

Здесь вы обнаружите, что это больше не называется Interix, а Подсистема для Unix-приложений или SUA. Далее вы заметите только из комментария пользователя, что SUA доступен только для Windows 7 Ultimate или Enterprise. Об этом нигде в статье не упоминается. После установки «подсистемы» вы поймете, что в вашем стартовом меню не более двух ярлыков.

Теперь вы подошли к настоящему злу. Нажмите ярлык для загрузки, и вы попадете на страницу загрузки.

Здесь у нас есть 3 доступных файла для загрузки. Эти файлы имеют размер более 400 МБ, и на момент написания старше 4 лет. Кроме того, у нас нет никаких вариантов загрузки пользовательских пакетов, определенных частей и прочего. Затем вы поймете, что эта ссылка на самом деле предназначена для Vista, а не для Windows 7, и вам придется поискать в Интернете, чтобы найти страница Windows 7. На этом я сдался.

Cygwin

Перейти к cygwin.com. Скачать cygwin.com/setup-x86.exe. Этот файл 714 КБ. Запустите базовую установку, и вы увидите, что она занимает около 2 минуты.

После этого вы можете повторно использовать установщик для многих других пакетов по своему усмотрению. Мораль истории в том, что Cygwin заботится о пользователе.

Не могу прокомментировать ответ JimB, поэтому рассмотрим его здесь, в частности, об интеграции с Windows. Cygwin основан на Win32, а не работает в собственной подсистеме, хотя и работает медленнее, но обеспечивает гораздо большую интеграцию с Windows. Он даже позволяет использовать API-интерфейсы Windows и UNIX в одной программе, что позволяет использовать такие вещи, как X-сервер Cygwin или терминал mintty.

Cygwin 'ps' действительно перечисляет процессы Windows, если вы укажете ему параметр -W, а 'kill -f' убьет их. Программы Windows можно вызывать из Cygwin и подключать вместе с программами Cygwin, используя все обычные механизмы, такие как каналы. (Я не знаю, возможно ли это в Interix.)

Поддерживаются пути в стиле Windows с прямой и обратной косой чертой. Cygwin 1.7 сделал UTF-8 набором символов по умолчанию, а имена файлов Windows UTF-16 переводятся автоматически, поэтому имена файлов на любом языке отображаются в Cygwin правильно. Я не знаю, что здесь делает Interix, но не смог найти никаких доказательств того, что он поддерживает Unicode.

Другие функции интеграции включают утилиту cygstart для открытия файла, как если бы вы дважды щелкнули его в проводнике, и устройство / dev / clipboard для доступа к буферу обмена Windows.

UNIX-подобный "вид" довольно субъективно. Я голосую за CygWin, так как он имеет сервер CygWin / X Xwindows со всеми необходимыми функциями. SFU получил базовые инструменты X11, но этого было слишком мало и слишком поздно. Многие (включая меня) познакомились с CygWin из-за необходимости иметь сервер X11. С точки зрения полноты CygWin также лучше позиционируется, так как это открытый исходный код, и на него портировано много программного обеспечения под лицензией GNU или GPL. Я видел несколько коммерческих продуктов для CygWin, но видел только один продукт, требующий служб UNIX для 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, поэтому я поставил это в конец списка.