msys,msys2和msysgit如何相互关联?

jpm*_*c26 155 msys msys2

我一直在寻找,但我找不到这三个版本的MSYS正在发生什么的详尽描述.(完全有可能我只是不知道该寻找什么.)我明白MSYS是支持使用MinGW进行开发的Linux工具的最小端口,但我不清楚它们三者之间的关系还是开发/维护它们的团队.

要解决的具体问题:

  • 哪些正在积极发展?(特别是,MSYS死了,MSYS2有效吗?)
  • 维护它们的团体之间有什么关系?(特别是,MSYS团队是否创建了MSYS2?)
  • msysgit只是使用其他一个,还是他们有自己的MSYS分支?
  • 这些中的任何一个是否相互兼容?
  • 对于其中任何一种,特定版本的Windows是否存在任何兼容性问题?
  • 一个提供主要功能吗?

Ray*_*lly 169

免责声明:我是MSYS2开发人员

虽然MSYS没有死,但我会说它看起来也不健康.这是多年前由mingw团队开创的一个项目,作为Cygwin的一个分支,从未与Cygwin保持同步.

msysgit是一个稍微旧版本的MSYS的分支,带有一些自定义补丁,旧版本的bash和perl以及git的本机端口.

MSYS2是由mingw-builds团队的Alexey Pavlov(他们是MinGW-w64工具链的官方包装商)开始的项目,作为Cygwin的最新分支,它密切跟踪最新的Cygwin,以便它不会过时.Alexey向前移植了旧的MSYS补丁并添加了一些自己的补丁.

除了提供用于编译本机软件的必要Unix工具 - MSYS的既定目标 - 我们从Arch Linux移植了Pacman包管理器.Pacman不仅仅是管理二进制包(尽管它做得非常好).它有一个名为makepkg的软件构建基础架构,允许创建用于构建软件的配方(PKGBUILD和补丁文件).恕我直言,Pacman的采用改变了Windows上开源开发的重要性.而不是每个人都用他们自己的定制shell脚本来破解以不兼容的方式构建软件,现在包依赖于其他包,PKGBUILD文件和相关的补丁可以用作构建新PKGBUILD的参考.它与(本机)Windows可以获得的Linux系统(特别是Arch)一样接近Linux系统,并允许简单更新所有已安装的软件包.

我们将Windows XP SP3作为最低目标,并支持32位和64位Windows.我们要求你永远不要将MSYS2与msys或msysgit混合使用.Pacman用于管理整个系统,因此来自其他系统的文件将导致冲突.

我们还尝试上传我们构建的项目的补丁,并积极征求其他开源项目的贡献.我们希望其他人觉得与我们合作很容易.

我们的主要网站是Sourceforge,它包含我们PKGBUILD存储库的链接.我们在github上也有一个更友好的安装程序站点.

如果您想了解更多信息,请随时加入我们的IRC(oftc#msys2).

  • 不,我们的MSYS2 git功能齐全且无黑客攻击.我们在开发其他软件包时广泛使用它.有人担心MSYS2(因为它是Cygwin的一个分支)会给文件操作增加很多开销,因为git文件操作很重,本机git会更快.证明或反驳这一点的方法是同时拥有它们并对它们进行基准测试,这就是我们将要做的.我应该注意这里的术语,因为我对msysgit的引用是两个不同的东西,msys-fork与本机Windows git以及本机Windows git.在这里我指的是后者! (16认同)
  • MSYS2有一个git包.它是MSYS2版本而不是本机版本.要安装git:pacman -S git ..我们在MINGW-packages存储库中还有一个msysgit正在进行的工作端口. (10认同)
  • @eckes我只想说我已经使用MSYS2几个月了.MSYS2有几个粗糙的区域(什么软件没有?),但我一直很高兴使用它.他们都没有与git本身相关. (7认同)
  • msys2的承诺符合我的期望.保持良好的工作,@ RayDonnelly (7认同)
  • msys2可用于构建和运行git(即替换msysgit). (6认同)
  • 非常感谢.这清除了很多.你说MSYS2团队正在开发一个msysgit的端口; 何必?git包中是否缺少主要功能? (2认同)
  • 来自 MSYS2 主页的 2017 年小更新/注释: **MSYS2 无法安装在 FAT* 分区上。当前的 MSYS2 无法再安装在 Windows XP 上。** - 但它仍然是最好的 MSYS*。 (2认同)
  • MSYS2改变了生活。先生,这是你的帽子。我从Windows时代的肮脏未洗的少年开始涉足计算机领域。在过去的几年中,我对unix系统和工具有所了解。现在,这些新功能立即在Windows上得到了支持,这要归功于此新功能的实际实现。 (2认同)

Von*_*onC 67

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

请参阅Johannes Schindelin()提交df5218b(2016年1月13日).(由Junio C Hamano合并- -提交116a866,2016年1月29日)dscho
gitster

很长一段时间,Git for Windows落后于Git的2.x版本,因为Git for Windows开发人员希望让这个大跳跃与从MSys到MSys2的急需跳跃相吻合.

要理解为什么这是一个大问题,需要注意的是Git的许多部分都不是用便携式C编写的,而是Git依赖于POSIX shell和Perl可用.

为了支持脚本,Git for Windows必须发布一个带有Bash和Perl的最小POSIX仿真层,当Git for Windows工作于2007年8月开始时,这个开发人员决定使用MSys,一个精简的Cygwin版本.
因此,该项目的原始名称是"msysGit"(遗憾的是,由于很少有Windows用户知道MSys,甚至更少关心,因此引起了很多混乱).

为了编译Git for Windows的C代码,也使用了MSys:它运行两个版本的GNU C编译器:

  • 一个隐式链接到POSIX仿真层的,
  • 另一个针对普通Win32 API(带有一些便利函数).

Git for Windows的可执行文件是使用后者构建的,因此它们实际上只是Win32程序.为了识别需要POSIX仿真层的可执行文件,当前者被称为MSys可执行文件时,后者被称为MinGW(Windows的Minimal GNU).

这种对MSys的依赖也带来了挑战:

  • 我们对MSys运行时的一些更改 - 更好地支持Git for Windows所必需的 - 在上游不被接受,所以我们必须维护自己的fork.
  • 此外,MSys运行时没有进一步开发以支持例如UTF-8或64位,并且除了缺少包管理系统直到很久以后(mingw-get引入时),MSys/MinGW项目提供的许多包滞后于各自源代码版本,特别是Bash和OpenSSL.

有一段时间,Git for Windows项目试图通过尝试构建这些软件包的更新版本来解决这种情况,但这种情况很快就变得难以理解,特别是像Heartbleed bug这样的问题需要迅速采取与开发Git无关的问题. Windows进一步.

令人高兴的是,与此同时出现了MSys2项目(https://msys2.github.io/),并被选为Windows 2.x的Git基础.
就像MSys一样,MSys2是Cygwin的精简版,但它与Cygwin的源代码保持同步.
因此,它已经在内部支持Unicode,并且它还提供了自Git for Windows项目开始以来我们渴望的64位支持.

MSys2还从Arch Linux移植了Pacman包管理系统并大量使用它.这为Linux用户提供了相同的便利,yum或者使用apt-getMacOSX用户从Homebrew或MacPorts或者来自Ports系统的BSD用户到MSys2:简单的pacman -Syu将所有已安装的软件包更新到最新版本目前可用.

MSys2也非常活跃,通常每周多次提供包更新.

它仍然需要两个月的努力才能将所有内容带到Git测试套件通过的状态,直到第一个官方Git for Windows 2.x发布之前还有几个月,还有一些补丁还在等待他们提交给各自的上游项目.然而,如果没有MSys2,Git for Windows的现代化根本就不会发生.

此提交为支持基于MSys2的Git构建奠定了基础.


在评论中,问题是在2016年1月提出的:

由于Git for Windows已基于MSYS2,因此不依赖于仿真层的二进制文件是否可用作MSYS2包?

Ray Donnelly当时回答:

我们还没有完全合并,没有.我们正在努力.

但是...... madz 指出,在2017年初,这种努力并没有成功.
看到:

问题是我无法提供将导致新的msys2-runtime及时更改的更改.
但不是一个大问题:我只是让Git for Windows的分支无限期地运行.

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

Git for Windows为msys2-runtime创建了一些尚未向上游发送的补丁.(这已经计划好了,但在问题#284中确定它可能不会发生.)
这意味着你必须安装Git for Windows自定义msys2-runtime才能在MSYS2中拥有一个完全正常工作的git.

  • 我们还没有完全合并,没有.我们正在努力. (4认同)
  • 为了扩展它..目前还没有,现在,MSYS2的git包仍然链接到msys-2.0.dll,有一个正在进行的将MSYS2与Git for Windows合并的过程'一旦完成,我们希望放弃我们的git包因为它们是完全原生的,因为msys-2.0.dll链接的软件包可以支持构建本机软件,并且它们本身并不是最终目标. (4认同)
  • 这是一个后续问题:[msys/git和git-for-windows/mingw-w64-x86_64-git之间有什么区别?](http://stackoverflow.com/questions/40262434/what-are-the -differences-之间-MSYS-git的和 - GIT-为 - 窗口的mingw-W64-X86-64-G) (2认同)

rai*_*tin 10

我对它们之间联系的理解是

  • cygwin在windows上提供POSIX仿真
  • msys试图简化cygwin,但从2010年开始就过时了
  • msysGit - 允许在windwos中使用高达1.9.4的git(可以称为git-for-windows-1.X),基于旧版本的msys.
  • msys2 - 一个简化的cygwin,从它分叉,从msys改变并与cygwin的功能保持同步,与pacman集成
  • minGW - 最初的minGW,从2010年放弃
  • minGW-w64 - 更快更好地与Windows集成,没有POSIX
  • git-for-windows-2.x - 为使用minGW-64,minGW-32的 Windows提供2.X的git,以及何时无法回退到msys2

比较cygwin,msys,msys2,minGW,git-for-windows,msysGit

摆弄美人鱼的完整图形定义


归档时间:

查看次数:

35965 次

最近记录:

6 年 前