如何MSYS,msys2和msysgit的相互关系?如何MSYS,msys2和msysgit的相互关

2019-05-09 07:30发布

我一直在寻找身边,但我找不到什么事情与这3个版本MSYS的完整描述。 (这是完全有可能我只是不知道要寻找什么。)我不明白,MSYS是Linux的工具,以支持使用MinGW的发展最小的端口,但我不是他们三个或之间的关系明确该开发团队/维护。

特定问题需要解决:

  • 哪些是正在积极发展? (具体地,是MSYS死和MSYS2活性?)
  • 什么是保持他们的群体之间的关系? (尤其是做了MSYS团队创建MSYS2?)
  • 是否msysgit只是用别人的一个,或者他们有自己的MSYS的分支?
  • 是否有任何的这些数据相互兼容?
  • 是否有与任何这些Windows的特定版本的任何兼容性问题?
  • 难道一个提供对其它主要特点是什么?

Answer 1:

免责声明:我是一个MSYS2开发商

虽然MSYS是不是死了,我会说这是不是看上去非常不健康的。 它是由MinGW的团队很多年前开始作为的Cygwin的一个分支 ,从来没有跟上Cygwin的一个项目。

msysgit 有一些自定义补丁,旧版本的bash和perl和Git的本地端口的稍旧版本MSYS的一个分支

MSYS2是由阿列克谢巴甫洛夫启动了一个项目的MinGW,建立团队(谁是MinGW的-W64工具链的官方打包) 作为最近的Cygwin叉其密切跟踪最新的Cygwin的,这样它不会结束过时。 阿列克谢向前移植旧MSYS补丁并添加了一些自己的。

除了提供必要的Unix工具与编译原生软件 - MSYS的既定目标 - 我们从移植Arch Linux的吃豆子包管理器。 吃豆子不仅仅是关于管理二进制软件包(尽管它是很清楚)更多。 它有一个名为makepkg软件基础设施的建设,使食谱为构建软件创建(PKGBUILD和补丁文件)。 恕我直言,通过吃豆子的显著变化的东西在Windows开源开发。 而不是大家黑客自己定制的shell脚本的大杂烩,不兼容的方式来构建软件,包现在可以依赖于其他包和PKGBUILD文件和相关补丁可以用作构建新PKGBUILDs参考。 这是接近到Linux系统的(本地)Windows可以得到(特别是ARCH),并允许所有已安装的更新简单。

我们面向Windows XP SP3作为最低限度,并支持32位和64位Windows。 我们会问,你从来没有与MSYS或msysgit混合MSYS2。 吃豆子是用来管理整个系统,因此,与其他系统上的文件会造成冲突。

我们也尝试向上游我们的补丁,我们所建立的项目,并积极征求其他开源项目的贡献。 我们希望别人发现很容易与我们合作。

我们的主要网站是在Sourceforge上 ,它包含链接到我们的PKGBUILD库。 我们也有一个更加用户友好的安装部位github上 。

随时加入我们的IRC(OFTC#msys2)如果您想了解更多信息。



Answer 2:

Git的2.8(2016年3月),包括一个非常详细的承诺这解释msys2的新的重要性混帐的窗口 ,其在2015年初更换msysgit 。

见提交df5218b (2016年1月13日)由约翰内斯Schindelin( dscho ) 。
(通过合并JUNIOÇ滨野- gitster -在提交116a866 ,2016年1月29日)

长期以来,混帐的Windows落后Git的2.x版本,因为混帐的Windows开发者想要让那个大跳跃与井需要的距离以MSys的跳MSys2一致。

要理解为什么这是一个大问题, 它需要指出的是,Git的许多地方都没有写在便携式C,而是混帐依靠POSIX外壳和Perl是可用的

为了支持脚本,Git的用于Windows的船舶使用bash和Perl扔在一个最小的POSIX模拟层 ,当Git的用于Windows的努力,2007年8月开始,对这位开发人员使用MSys的,Cygwin的的精简版解决。
因此,该项目的原始的名字是“msysGit”(其中,可悲的是,造成了很多困惑,因为一些Windows用户了解MSys的,更不关心)。

要编译的Git的Windows的C代码,在MSys的使用,也一样,体育的GNU C编译器的两个版本:

  • 一个链接隐含的POSIX模拟层,
  • 和另外一个靶向纯的Win32 API(与抛出在几个方便的功能)。

混帐的Windows的可执行文件使用的是后者而建,因此他们真的只是Win32程序。 辨别需要从不感兴趣的POSIX模拟层的可执行文件,后者被称为MinGW的(最小GNU适用于Windows)时,前者被称为可执行MSys的

在此MSys的依赖所产生的挑战,也是如此,虽然:

  • 我们的一些在运行时MSys的变化 - 有必要支持Git的用于Windows更好的 - 未被接受的上游,所以我们必须保持我们自己的叉子。
  • 此外,MSys的运行时间并没有进一步发展,以支持如UTF-8或64位,而且除了缺乏一个软件包管理系统,直到很久以后(当mingw-get介绍),由MSys的/ MinGW的项目滞后提供了许多包后面的相应的源代码版本,特别击和OpenSSL。

有一段时间,对于Windows项目的Git试图通过努力建立这些软件包的更新版本,以纠正这种情况,但情况很快变得站不住脚的,尤其是像心脏出血漏洞错误要求无关与发展中国家的Git迅速采取行动的问题视窗进一步。

令人高兴的是,在此期间MSys2项目( https://msys2.github.io/ )出现,被选为混帐的用于Windows 2.x的基础
就像MSys的,MSys2 Cygwin的是一个精简版本,但它正在积极跟上最新与Cygwin的源代码
因此,它已经支持Unicode在内部,它也提供了64位支持,因为混帐的开始为Windows项目,我们渴望。

MSys2也移植来自Arch Linux的吃豆子包管理系统,并使用它严重 。 这带来了同样方便的Linux用户从使用yumapt-get ,并且到MacOSX的用户习惯于从家酿的MacPorts或,或者从Ports系统BSD用户,MSys2:一个简单的pacman -Syu将更新所有已安装的软件包,以目前掌握的最新版本。

MSys2也非常活跃,通常提供封装每周更新多次。

它仍然需要两个月的努力,使一切都在那里Git的测试套件的推移,更多的几个月,直到为Windows 2.x的第一个正式的Git被释放的状态,和几个补丁仍等待其提交给各自的上游项目。 然而,如果没有MSys2,混帐for Windows的现代化就不只是不会发生

这次提交奠定了基础工作,以支持基于MSys2-的Git版本。


在评论中,有人问在2016年1月:

由于混帐的Windows已经基于MSYS2,已经不依赖仿真层上的二进制文件可作为MSYS2包?

雷·唐纳利回答的时间:

我们还没有完全合并到目前为止,还没有。 我们虽然在努力。

但是...... madz 指出的是2017年期间的早期,这一努力没有成功。
看到:

  • Alexpux/MSYS2-packages PR 786
  • git-for-windows/git问题284

问题是,我不能做出贡献,这将导致及时新msys2运行时的变化。
不是什么大问题,但我就继续的Git叉的Windows上运行下去。

维基因此现在提到(2018):

混帐for Windows创建一些补丁尚未上游发送msys2运行时。 (这已在筹划中,但它是在问题#284,这将可能不会发生的确定。)
这意味着你必须安装的Git为Windows定制msys2运行时有内部MSYS2一个完全工作的饭桶。



Answer 3:

我对它们之间的连接理解

  • Cygwin的提供在Windows上POSIX仿真
  • MSYS试图简化cygwin的,但已经过时从2010年
  • msysGit -允许混帐高达1.9.4在WINDWOS基于旧版本的MSYS的(可称为混帐的窗口-1.X)。
  • msys2 -简化cygwin的,从它分叉,与来自MSYS变化和保持同步从cygwin的特征,使用pacman集成
  • MinGW的 -最初的MinGW,从2010年弃
  • MinGW的-W64 -更快,使用Windows更好的集成,没有POSIX
  • GIT-对-窗口2.x的 -从2.X提供GIT中使用MINGW-64,MINGW-32的窗口和是不可能的时回退到msys2

拨弄在美人鱼完全图的定义



文章来源: How are msys, msys2, and msysgit related to each other?
标签: msys msys2