Виртуальные машины против Cygwin

Ответы:

20

Виртуальные машины и Cygwin отвечают на два разных вопроса.

Виртуальные машины предназначены для тех случаев, когда вы хотите запустить несколько операционных систем одновременно. Это как иметь два компьютера без затрат на покупку двух комплектов оборудования.

Cygwin предназначен для предоставления Windows ряда инструментов Unix, чтобы гики Unix могли более эффективно использовать Windows (хотя я бы сказал, что Cygwin на самом деле не очень хорошо это делает), а также для предоставления некоторых инструментов, обладающих более широкими возможностями, чем Windows. обеспечивает самостоятельно. Я не думаю, что характеристика Cygwin, обеспечивающая «среду, похожую на Linux», является особенно точной. (Cygwin на самом деле предназначен для предоставления более полной среды разработки POSIX для Windows, и при этом предоставляет ряд утилит. Однако конечный результат для конечных пользователей заключается в том, что он просто предоставляет инструменты.)

Там на самом деле своего рода третий вариант, Cooperative Linux , который я думаю , что на самом деле делает обеспечить Linux-подобную среду в Windows. Он фактически запускает ядро ​​Linux как процесс в Windows. Есть несколько дистрибутивов, которые работают под ним; andLinux приходит на ум. В этих системах у вас действительно есть среда Linux, которая может более напрямую взаимодействовать с вашей средой Windows, чем виртуальная машина.

wfaulk
источник
2
Cygwin, являющийся набором утилит, на самом деле является просто побочным эффектом. Он в первую очередь предназначен для Linux-подобной среды для программного обеспечения, а не для пользователя, поэтому у вас есть соответствующие API, обернутые в эмуляцию. В coLinux ядро ​​Linux работает как драйвер устройства внутри ядра Windows, а не как процесс.
Джои
3
Я только устанавливаю cygwin, чтобы иметь возможность иметь приличную оболочку для работы с моими файлами Windows. Я был бы потерян без find, grep, sed и все такое.
Nifle
1
@Johannes: на веб-странице coLinux сказано, что «coLinux всегда использует только один процесс операционной системы хоста для всех своих процессов Linux, управляя их расписанием, ресурсами и сбоями в частном порядке». AFAICR, он работает как сервис, а не как драйвер.
wfaulk
4

Он по-прежнему полезен для запуска таких инструментов Unix, как rsync, с которыми вы хотите работать с файлами на коробке Windows, а не залипать на виртуальной машине. Затем вы также можете использовать планировщик Windows для запуска заданий с помощью инструментов.

andynormancx
источник
1
Я бы лучше взял нативную сборку, чем установил cygwin.
Джои
2
однако не все доступно в нативных сборках.
Квик-кихот
2

Насколько я понимаю, Cygwin - это другая концепция. В отличие от виртуальной машины, она предоставляет DLL, которая эмулирует среду / слой Linux, которая может запускать и создавать программы linux на машине с Windows. Например, если вы хотите использовать какую-то библиотеку, которая распространяется только как исходный код и предназначена для встроенной системы Linux, что, если вы хотите использовать эту библиотеку в Visual Studio? Вы не можете использовать VS для его построения, поскольку он зависит от Linux-зависимостей, поэтому в этой ситуации вам нужен Cygwin.

Пейти Ли
источник