用于Windows的git包管理?

时间:2015-09-22 08:31:53

标签: windows git bash msysgit msys

我在github上阅读wiki for git,它说msys2捆绑了pacman:https://github.com/git-for-windows/git/wiki/Package-management

但是当我调用它时:

$ pacman
bash: pacman: command not found

有没有人知道发生了什么?这个wiki指的是哪个git版本?有没有办法在Git for windows中为msys2安装其他软件包?

6 个答案:

答案 0 :(得分:27)

issue 397中所述:

  

这是有意的。我们不通过Git for Windows发送pacman   如果您对完全成熟的软件包管理器维护环境感兴趣,那么您必须尝试Git for Windows SDK

您在latest git for Windows (2.5.3)中看到的bash是more recent bash than the old msysgit one,仅用于执行git命令。
安装任何第三方软件包都不是一个成熟的Linux环境。

答案 1 :(得分:10)

适用于Windows的Git(https://gitforwindows.org/https://git-scm.com/downloads)(具有Git Bash),但不包括treetree可通过pacman(软件包管理器)使用,但仅当您安装“ Git for Windows SDK ”(滚动到https://gitforwindows.org/的底部时)才可用。该链接提供了从https://github.com/git-for-windows/build-extra/releases/latest为其下载安装程序的链接

这样:“ Windows的git软件包管理?”很有帮助 Package management in git for windows?

也正如上面的SO中所评论的那样,它们链接到Windows的git问题[在新的2.5.2安装#397中缺少吃豆子],其默认安装中不包含pacman

无论如何,我安装了“ Git for Windows SDK”,然后在bash提示(SDK-64)中运行了 以下安装当前树v1.7.0-1(截至2018年8月30日发布):

[SDK-64: Bash Terminal for Git for Windows SDK]
pacman -S tree
...
Proceed with installation? [Y/n] Y

在我的系统上,适用于Windows SDK的Git安装在以下位置:C:\git-sdk-64,因此从我的适用于Windows Bash的Git Bash shell(未安装树)中,将它通过tree.exe复制到了/ usr /。 bin目录,例如

[MINGW64: Bash Terminal for Git for Windows]
cd /usr/bin
cp /c/git-sdk-64/usr/bin/tree.exe .

现在,我可以从两个Git Bash shell运行tree v1.7.0。

因此,为了使其他人甚至可能将来在我自己的机器上更容易,我在Windows SDK Bash终端程序的Git中运行了以下命令,以查看pacmantree包中获取的信息:

$ pacman -S --info tree
Repository      : msys
Name            : tree
Version         : 1.7.0-1
Description     : A directory listing program displaying a depth indented list of files
Architecture    : x86_64
...

关键是,pacman是从“ msys”存储库中获取的(仅供参考:即使它说是msys,它实际上是在使用msys2),所以我查看了/etc/pacman.d/mirrorlist.msys和第一个镜像指向http://repo.msys2.org/msys/$arch/

因此,下一次您想要的Windows不包含在Git中的软件包时,可以从http://repo.msys2.org/msys/x86_64/(对于64位)或http://repo.msys2.org/msys/i686/(32位)下载它们。

例如树的直接下载链接v1.7.0-1

FYI:在https://git-scm.com/download/上下载Git SCM的Window可从Git for Windows GitHub获取最新信息(从https://github.com/git-for-windows/git链接获得https://github.com/git-for-windows/git/releases/

答案 2 :(得分:3)

似乎有一个documented way来执行此操作,而不必安装用于Windows SDK的Git(非常大)。当我在GitHub issue #1912上询问所有这些信息时,PhilipOakley给了我指向此信息的链接。

以下是有关Windows GitHub wiki page的Git的当前文本:

  

在MSYS2内部正确安装

     

本指南假定您需要Windows的64位版本的Git。

     

用于Windows的Git基于MSYS2,可以将git软件包安装到现有的MSYS2安装中。这意味着,如果您已经在计算机上使用MSYS2,则可以在不运行完整安装程序或使用便携式版本的情况下,将Git for Windows用于Windows。

     

但是请注意,使用这种方法有一些注意事项。 Windows的Git为msys2-runtime创建了一些尚未向上游发送的补丁。 (这已经计划好了,但是在问题#284中确定可能不会发生。)这意味着您必须安装Git for Windows自定义msys2-runtime才能在MSYS2中拥有完整的git。

     

以下步骤:

     
      
  1. 打开一个MSYS2终端。

  2.   
  3. 编辑/etc/pacman.conf,然后在[mingw32]之前(在我的计算机上的第71行),添加git-for-windows软件包存储库:

  4.   
     

[git-for-windows] Server = https://wingit.blob.core.windows.net/x86-64

     

以及可选的相反体系结构的MINGW-only存储库(即用于64位SDK的MINGW32):

     

[git-for-windows-mingw32] Server = https://wingit.blob.core.windows.net/i686

     
      
  1. 授权签名密钥(可能有时需要重复执行此步骤,直到修复https://github.com/msys2/msys2/issues/62为止)
  2.   
     

curl -L https://raw.githubusercontent.com/git-for-windows/build-extra/master/git-for-windows-keyring/git-for-windows.gpg | pacman-key --add - && pacman-key --lsign-key 1A9F3986

     
      
  1. 然后同步新存储库
  2.   
     

pacboy update

     
      
  1. 此更新msys2-runtime,因此将要求您关闭窗口(不是,仅退出pacman进程)。不要惊慌,只需关闭所有当前打开的MSYS2 shell和MSYS2程序。仔细检查任务管理器,并杀死pacman.exe,因为它可能会持续存在,但它在关闭窗口后仍在运行。全部关闭后,再次启动新终端。

  2.   
  3. 然后再次同步 (更新软件包的非核心部分):

  4.   
     

pacboy update

     
      
  1. 最后安装Git / cURL软件包:
  2.   
     

pacboy sync git:x git-doc-html:x git-doc-man:x git-extra: curl:x

     
      
  1. 最后,通过在MINGW64 shell中执行git --version来检查一切是否正常,并且应该输出类似git version 2.14.1.windows.1(或更高版本)的内容。
  2.   

答案 3 :(得分:2)

在Windows 10 x86_64 1909 10.0.18363.752上进行测试

使用Windows的常规Git。

  1. 安装msys2(已测试版本20190524。)或Git for Windows SDK。 (未经全面测试,但应该可以。)两者都包括PacMan和Git。

对于Windows的Git使用VFS或对于Windows的Git使用Scalar。

建议使用Git虚拟文件系统(以前是GVFS。官方网站https://vfsforgit.org/)。测试了2.22和2.26版。不建议使用标量(官方网站https://github.com/microsoft/scalar),也没有经过全面测试。

  1. 安装GVFSGit for Windows with GVFS patch。或安装Scalar for GitGit for Windows with Scalar patch两者都不在同一台计算机上。默认安装目标为C:\Program Files\Git

  2. 在其他位置安装msys2 x64。默认情况下,它位于C:\msys64中。

  3. 将Windows VFS版本的msys2的文件和子文件夹(/ etc和git二进制文件除外。msys2出厂时没有git。)复制到git,并在其中复制/etc/pacman.d/etc/pacman.conf msys64文件夹到Git文件夹,覆盖现有文件。这会将msys2和MinGW运行时更新为最新版本。对于PacMan,必要的文件为/usr/bin/pac* ; /etc/pacman.conf ; /etc/pacman.d/ ; /var /usr/bin/msys* ;。(未完全测试。)

  4. 设置终端应用程序。运行C:\Program Files\Git\bin\bash.exe将启动Windows版Git的bash。运行C:\Program Files\Git\usr\bin\bash.exe将启动bsys msys2。为终端程序(例如Hyper Terminal)配置bash的路径。由于Git位于系统文件夹中,因此终端程序应以管理员身份运行

  5. Config $ PATH GVFS的环境变量。在Git Bash中运行此命令。 export PATH=$PATH:/c/Program\ Files/GVFSexport PATH=$PATH:"/c/Program Files/GVFS"。或在控制面板的系统属性中为GVFS设置环境变量。重新登录生效。有时此配置不起作用,但是PacMan仍然可以运行。

  6. 修复PacMan。设置二进制文件的可执行权限。福克斯的例子。 chmod +x /usr/bin/pacman ; pacman-key --init ; pacman-key --populate msys2 ; pacman-key --refresh-keys ; pacman --sync pacman --refresh --sysupgrade --sysupgrade --overwrite "*"。使用选项--overwrite \*是因为Git for Windows而非PacMan安装了某些软件包。

答案 4 :(得分:2)

“用于Windows SDK的Git”为5.33GB,而“用于Windows的Git”为691MB,而“便携式Git”为275MB。我用的是精瘦的便携式Git。最初,尝试在Git的后两种版本(msys2)中恢复和使用pacman似乎毫无希望,因为Google排除了/ var / lib / pacman / local中的所有元数据文件。请阅读以下官方说明:

https://wiki.archlinux.org/index.php/Pacman#.22Failed_to_commit_transaction_.28conflicting_files.29.22_error

如果没有这些元数据文件,您将不知道Google为构建这两种Git版本而选择的msys2软件包的确切集合和版本。如果您强制安装或复制当前版本的msys2软件包,则存在与Google生成和测试的git二进制文件不匹配的风险。

好吧,直到找到该文件:/etc/package-versions.txt,这是匹配的msys2软件包和版本的清单。现在,github中有一个确定的资源。这是我在Portable Git中还原pacman的方法:

步骤1:转到msys2下载3个软件包:pacmanpacman-mirrorsmsys2-keyring。点击每个程序包的“文件:”链接。

第2步:从根目录解压缩它们,然后使用以下命令恢复pacman:

cd /
tar x --xz -vf ~/Downloads/msys2-keyring-1~20201002-1-any.pkg.tar.xz usr
tar x --xz -vf ~/Downloads/pacman-mirrors-20201028-1-any.pkg.tar.xz etc
tar x --xz -vf ~/Downloads/pacman-5.2.2-4-x86_64.pkg.tar.xz usr
pacman-key --init
pacman-key --populate msys2
pacman -Syu

第3步:接下来的两个命令将还原所有匹配的元数据。第二个命令是多行,但仍然可以安全剪切和粘贴(请耐心等待):

URL=https://github.com/git-for-windows/git-sdk-64/raw/main
cat /etc/package-versions.txt | while read p v; do d=/var/lib/pacman/local/$p-$v;
 mkdir -p $d; for f in desc files install mtree; do curl -sSL "$URL$d/$f" -o $d/$f;
 done; done

步骤4:现在,要求“ make”和“ zip”是否太多?

pacman -S make zip

Voilà仍然只有337MB,这意味着几乎没有可以扩展和升级的环境!

答案 5 :(得分:1)

我不想从已经可以运行的Windows版Git迁移过来,所以我做了一些即兴创作:

  1. 在其他地方安装Windows SDK的Git。您将需要3 GB以上的可用空间。
  2. ${git-sdk}/usr/bin/pacman.exe复制到${git}/usr/bin
  3. ${git-sdk}/etc/pacman.conf${git-sdk}/etc/pacman.d复制到${git}/etc
  4. ${git-sdk}/var复制到${git}/

仅此而已。现在,您可以打开Git Bash并运行pacman -S python以在现有的Windows Git安装程序上安装软件包。

您将需要对Git for Windows目录的写权限。另外,您的pacman现在认为(从SDK中)安装了很多软件包,但并没有阻止我使用它。