Каковы практические различия между Interix и Cygwin?

14

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

  • Unix-подобное "чувство"
  • Производительность
  • Доступность пакета / простота компиляции случайного программного обеспечения, загруженного из Интернета
  • Интеграция с приложениями и инструментами Windows
  • Интеграция / совместимость с виртуальными машинами (например, может ли Interix и виртуальная машина Ubuntu совместно использовать один и тот же «домашний каталог»)
  • Размер базы пользователей / уровень поддержки сообщества

Мне известно одно отличие: Interix требует Windows 7 Enterprise или Ultimate Edition; Cygwin будет работать на что угодно.

ithinkihaveacat
источник

Ответы:

7

Я использовал только 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, как вы сказали, работает на всем, его лучше знают и лучше поддерживают, но он мне кажется немного грязным. Некоторые люди используют его регулярно, хотя.

Андрей
источник
Что касается пакетов, Gentoo-префикс для Interix может стоить того
Тобиас Кинцлер
1
Если перейти к 2015 году, то теперь ответ будет простым: «Cygwin по-прежнему доступен и поддерживается, в то время как Interix (иначе называемая« Сервисы для Unix »или« Подсистема для Unix-приложений ») больше не
поддерживается
3

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

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

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

Не могу прокомментировать ответ 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.

ak2
источник
3
Как это обеспечивает "гораздо большую интеграцию с Windows"? «Он даже позволяет использовать API Windows и UNIX в одной и той же программе» - это верно и для Interix; посмотрите это для первого источника партии; слайд 37, «Процессы в смешанном режиме», в котором есть пул «Результирующий процесс в смешанном режиме может выполнять вызовы как SUA, так и Windows API в одном процессе»
user314104
1

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

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

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

зиа

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

старый

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

Cygwin

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

время

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

Стивен Пенни
источник
Позвольте мне правильно вас понять - потому что больше не было необходимости менять установщик для запуска версии unix, поставляемой с win 7, это означает, что это не заботит - и тот факт, что Cygwin действительно позволяет вам загружать фрагменты (что вы можете затем надо вернуться и получить больше) это как-то плюс? Конечно, недавнее решение удалить компоненты unix из окон является признаком того, что пользователи либо не запускают unix под окнами (IMHO, скорее всего), либо что им почему-то просто все равно, но я не вижу этого.
Джим Б.
@JimB Это не «идет» с Windows 7. Я бы подумал, что мой пост ясно дал понять. Это доступно только для Win7 Ultimate, и вы должны загрузить его. Плюс скачивание 4 года. В сообществе разработчиков программного обеспечения, которое является пожизненным и демонстрирует явное отсутствие руководства / инициативы со стороны Microsoft.
Стивен Пенни
3
это идет с окнами, то, что вы загружаете, является командой unix, которая использует подсистему. Поскольку некоторым командам в Linux уже более 40 лет, я не удивлен, что их не нужно было переписывать (и по вашему стандарту я полагаю, что никто не использует linux или unix больше с тех пор, как он существует уже десятилетия). Новые инструменты и команды добавлены в сообщество SU по адресу suacommunity.com/tool_warehouse.htm
Джим Б.
2
Как ни странно, мне пришлось пройтись по некоторому коду и тому подобное - это тот же код, что и 40 лет назад, - предположить, что эти люди в GNU делают что-то ужасно неправильное - или, может быть, просто может быть, нет необходимости менять что-то, что не t сломан
Джим Б
0

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, который позже был заброшен.

С точки зрения производительности можно утверждать, что Interix ближе к ядру и, следовательно, имеет более короткий путь выполнения кода. На самом деле вопрос в том, насколько это важно? Для большинства программ разница составляет несколько процентов и незначительна. Конечно, можно привести искусственный пример с тяжелым вводом / выводом. Я бы предпочел размещать такие загрузки на собственном UNIX, так как это будет быстрее, чем на родных дополнениях Windows и UNIX поверх Windows. Многие перешли с Windows на UNIX с увеличением нагрузки, в то время как я не знаю ни одного примера преобразования из CygWin в Interix (или наоборот). Требуется совместимость с UNIX, а не производительность UNIX, поэтому я поставил это в конец списка.

Goldie
источник
2
Что касается производительности, Interix на самом деле побеждает здесь; многие вещи, традиционно реализуемые как системные вызовы * nix (например, fork ()), представляют собой кладжи, реализованные поверх Win32 в Cygwin. Win32 не имеет никакого понятия о fork (), но Interix (и NT) имеет. У Cygwin есть проблемы с этим - получение адресного пространства точно для fork () - и это приводит к серьезным проблемам с производительностью. Кто-то наверняка расстроится из-за ссылки, содержащей больше, чем этот комментарий, но здесь, прямо из-под крана .
user314104