Interix和Cygwin有什么实际区别?


14

InterixCygwin似乎都在Windows中提供了类似Unix的用户环境。两者之间的实际区别是什么,例如:

  • 类Unix的“感觉”
  • 性能
  • 软件包的可用性/易于编译从互联网下载的随机软件
  • 与Windows应用程序和工具集成
  • 与虚拟机的集成/兼容性(例如,Interix和Ubuntu虚拟机是否可以共享相同的“主目录”)
  • 用户群规模/社区支持级别

我知道的一个区别是Interix需要Windows 7 Enterprise或Ultimate版本。Cygwin可以在任何东西上运行。

Answers:


7

我以前仅在Windows 2008上使用过Windows SFU,但我相信它是基于Interix的。我有时和cygwin一起玩,但是不是很多,所以如果我在这里说错了话,请有人纠正我。

  • Unix风格: Interix赢得了这一大奖。环境感觉更加“完整”。我不确定如何放置。Interix与win32子系统一起运行,而cygwin在其之上运行。因此,interix在Windows内核领域是“一流公民”。像psdf工作正常。
  • 性能:具有不进行任何重大的性能测试,我那也的Interix此获胜。同样,它在较低级别运行。您不仅在运行带有链接的POSIX兼容性DLL的Win32应用程序。
  • 软件包/随机软件: Cygwin赢得这一奖项有两个原因。首先,cygwin众所周知。许多Unixy软件都将支持其怪癖。您也可以从GUI安装程序非常轻松地安装东西。Interix(我相信)没有内置任何类似功能。当然,您可以下载某些东西,使用gcc进行编译(我想您可以对其进行预编译),然后祈祷它可以工作,但这有点像将软件移植到Unix的任何其他随机变体(如Solaris或AIX)上-事情会起作用,其他事情会试图咬住你的脚,谋杀你的孩子。
  • 与Windows应用程序和工具的集成:老实说,两者都是很烂的。例如,如果您有在cygwin或Interix中运行的Apache服务器,那么可以肯定的是,它将能够通过TCP与Win32程序进行通信,但这已经足够了。从Interix内部,我相信您可以杀死Win32程序并使用ps列出它们,不确定是否可以使用cygwin做到这一点。两者都可以使用Windows任务管理器杀死。
  • 与VM集成:解决您共享主目录的示例,然后单击是。您可以为此使用samba,我相信NFS也可以在Interix上工作,以实现更多的unixy。但是,您将找不到任何不错的GUI或任何可以为您完成工作的东西。cygwin和Interix都允许您访问常规文件系统。
  • 用户群规模:我想说Cygwin在这里赢了。很难找到经过测试和开发可以在Interix上运行的东西,因为大多数开放源代码的东西似乎都支持cygwin作为编译平台。

如果您拥有将支持Interix的Windows操作系统的副本(如您所说,是企业版,旗舰版或服务器版),那么试用它是没有害处的。这是一个非常完整的感觉环境。正如您所说,Cygwin可以运行在所有内容上,并且众所周知并且得到了更好的支持,但是对我来说有点像是一个肮脏的hack。有些人会定期使用它。


关于软件包,Interix的Gentoo前缀可能值得一

1
快进到2015年,答案就变成了“ cygwin仍然可用并受支持,而Interix(又名Unix服务又名基于Unix的应用程序子系统)已经停产”
adib 2015年

3

/ *元注释-我讨厌评论太短* /

我大致同意安德鲁斯的回答,并提供几点意见。我已经在Windows下用SUA / SFU替换了许多unix系统(它们不一样,但很接近)。

  • 性能-SUA比UNIX服务要快得多,但SFU也不乏味,两者通常都比cygwin快(但并非总是如此)
  • 集成-集成是SFU / SUA的重点,并且在technet站点上有很多关于可以做什么和不能做什么的文档。Cygwin旨在在Windows上运行* nix命令,而不是使2协同工作。请参阅Windows中的Unix / Linux互操作性组件(SUA,IdMU,NFS等)。
  • 用户群-我认为Interix方面比cygwin方面有更多可行的受支持的解决方案,与cygwin方面相比,兼容性问题要少得多,请参阅http://www.suacommunity.com/(工具仓库)。Cygwin可能具有更多的整体安装,因为它对“我需要unix外壳”解决方案很有帮助Cygwin运行命令,SUA是Windows的对等unix环境。

1

无法评论JimB的答案,因此请在此处解决,尤其是有关Windows集成的要点。Cygwin基于Win32,而不是在自己的子系统中运行,尽管运行速度较慢,但​​它提供了更大的Windows集成。它甚至允许Windows和UNIX API在同一程序中使用,从而可以实现Cygwin X服务器或mintty终端之类的功能。

Cygwin的'ps'会列出Windows进程(如果您给它提供-W选项),而'kill -f'将杀死它们。可以从Cygwin内部调用Windows程序,并使用所有常用机制(例如管道)将Windows程序与Cygwin程序一起插入。(我不知道在Interix中是否可行。)

支持带有正斜杠和反斜杠的Windows样式路径。Cygwin 1.7将UTF-8设置为默认字符集,并且Windows的UTF-16文件名会自动翻译,因此任何语言的文件名都能在Cygwin中正确显示。我不知道Interix在这里做什么,但是找不到支持Unicode的任何证据。

其他集成功能包括“ cygstart”实用程序,用于打开文件,就像在资源管理器中双击该文件一样;还有/ dev / clipboard设备,用于访问Windows剪贴板。


3
它如何提供“更大的Windows集成”?“它甚至允许Windows和UNIX API在同一程序中使用” –对于Interix来说也是如此。看到第一方源; 幻灯片37,“混合模式进程”,其中带有项目符号“结果混合模式进程可以在同一进程中同时进行SUA和Windows API调用”
user314104,2014年

1

让我分享我安装Windows 7 Interix的经验。

我们的旅程始于 Windows Server 2008 的晦涩页面

在这里,您会发现它甚至不再被称为Interix,而是用于基于Unix的应用程序SUA的子系统。接下来,您只会从用户评论中注意到SUA仅适用于Windows 7 Ultimate或Enterprise。本文中任何地方都没有提到这一点。安装“子系统”后,您将意识到开始菜单中的快捷键只有2个。

苏阿

现在,您进入了真正的邪恶。单击“下载”快捷方式,您将 进入下载页面。

旧

在这里,我们有3个可用文件可供下载。这些文件全部超过400MB,截至本文撰写时已有4年历史。另外,我们没有选择下载自定义软件包,某些部分等的任何选择。然后,您将意识到此链接实际上是针对Vista而不是Windows 7的,并且必须去互联网搜索 Windows 7页面。在这一点上,我放弃了。

西格温

转到cygwin.com。下载 cygwin.com/setup-x86.exe。该文件为 714 KB。运行基本安装,您将看到它大约需要 2分钟

时间

之后,您可以根据需要将安装程序重用于许多其他软件包。故事的寓意是Cygwin关心用户


让我正确地理解您-因为无需更改安装程序即可运行win 7附带的unix版本,这意味着不关心-并且Cygwin实际上允许您下载文件(您可能随后会下载文件)必须回去并获得更多)是加号吗?当然,最近决定从Windows中删除Unix组件,这表明用户不是在Windows下运行Unix(最有可能是恕我直言),或者他们根本不在乎,但我没有真正看到这一点。
Jim B

@JimB Windows 7不会“出现”。我以为我的帖子讲得很清楚。它仅适用于Win7 Ultimate,您必须下载它。再加上下载是4岁。在软件界,这是一个终身的过程,并且明显缺乏Microsoft的指导/倡议。
史蒂文·彭妮

3
Windows附带它,您正在下载的是使用子系统的Unix命令。由于Linux中的某些命令已有40多年的历史了,所以不必重写它们就不足为奇了(按照您的标准,我想自从它使用了几十年以来,再也没有人使用linux或unix)。在suacommunity.com/tool_warehouse.htm
Jim B

2
奇怪的是,我不得不遍历一些代码,是的-它与40年前的代码相同-猜想GNU的那些人正在做一些可怕的错误-也许-也许-无需更改某些错误。坏了
Jim B

0

类似UNIX的“感觉”非常主观。对于CygWin,我的投票是肯定的,因为它具有具有所有必需功能的CygWin / X Xwindows服务器。SFU使用了基本的X11工具,但是它太少了,太迟了。由于需要X11服务器,许多人(包括我)被介绍给CygWin。在完整性方面,由于CygWin是开源的,并且已移植了许多GNU或GPL许可的软件,因此CygWin的定位也更好。我见过很少有CygWin的商业产品,而只见过一种产品需要Windows NT的UNIX服务,此后再也没有。YMMV。

套餐可用性CygWin的成功无疑是受到以下几个因素影响:-较低的入门成本:具有CygWin的“任何Windows”与服务器级SFU / SUA许可证。某些功能可用于Windows的桌面版本,但价格更高,并且没有服务器组件。-开源与封闭源,更重要的是公开可用的文档。在过去,甚至提供的命令和API列表也仅对MSDN订户可用,而Microsoft网站上几乎没有信息。相比之下,GNU工具集具有充分的文档记录,可以在线使用,也可以作为手册页使用。-名称和实现更改令人困惑。早期版本使用的是MKS工具包,后来被放弃了。

从性能角度来看,可以说Interix更接近内核,因此享有较短的代码运行路径。真正的问题是多少,这有关系吗?对于大多数程序而言,差异仅为百分之几,可以忽略不计。当然,可以提出一个具有大量I / O的人工示例。我宁愿将此类负载放在本机UNIX上,因为它比本机Windows和Windows之上的UNIX加载项都快。随着负载的增加,许多人已从Windows迁移到UNIX,而我不知道从CygWin转换为Interix的示例(反之亦然)。寻求的是UNIX兼容性,而不是UNIX的性能,因此我将其放在列表的末尾。


2
在性能方面,Interix实际上在这里赢得了胜利。传统上实现为* nix syscall的许多东西(如fork())都是在Cygwin的Win32之上实现的合并。Win32没有fork()的任何概念,但是Interix(和NT)有。Cygwin遇到了麻烦-为fork()获得正确的地址空间-并导致了一些严重的性能问题。肯定会让有关此评论的链接不高兴的人,但是在这里,直接从点击即可
user314104 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.