我在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安装其他软件包?
答案 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),但不包括tree
。 tree
可通过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中运行了以下命令,以查看pacman
从tree
包中获取的信息:
$ 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。以下步骤:
打开一个MSYS2终端。
编辑
/etc/pacman.conf
,然后在[mingw32]
之前(在我的计算机上的第71行),添加git-for-windows
软件包存储库:
[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
- 授权签名密钥(可能有时需要重复执行此步骤,直到修复https://github.com/msys2/msys2/issues/62为止)
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
- 然后同步新存储库
pacboy update
此更新
msys2-runtime
,因此将要求您关闭窗口(不是,仅退出pacman进程)。不要惊慌,只需关闭所有当前打开的MSYS2 shell和MSYS2程序。仔细检查任务管理器,并杀死pacman.exe
,因为它可能会持续存在,但它在关闭窗口后仍在运行。全部关闭后,再次启动新终端。然后再次同步 (更新软件包的非核心部分):
pacboy update
- 最后安装Git / cURL软件包:
pacboy sync git:x git-doc-html:x git-doc-man:x git-extra: curl:x
- 最后,通过在MINGW64 shell中执行
git --version
来检查一切是否正常,并且应该输出类似git version 2.14.1.windows.1
(或更高版本)的内容。
答案 3 :(得分:2)
msys2
(已测试版本20190524。)或Git for Windows SDK
。 (未经全面测试,但应该可以。)两者都包括PacMan和Git。建议使用Git虚拟文件系统(以前是GVFS。官方网站https://vfsforgit.org/)。测试了2.22和2.26版。不建议使用标量(官方网站https://github.com/microsoft/scalar),也没有经过全面测试。
安装GVFS
和Git for Windows with GVFS patch
。或安装Scalar for Git
和Git for Windows with Scalar patch
。 两者都不在同一台计算机上。默认安装目标为C:\Program Files\Git
。
在其他位置安装msys2 x64。默认情况下,它位于C:\msys64
中。
将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* ;
。(未完全测试。)
设置终端应用程序。运行C:\Program Files\Git\bin\bash.exe
将启动Windows版Git的bash。运行C:\Program Files\Git\usr\bin\bash.exe
将启动bsys msys2。为终端程序(例如Hyper Terminal)配置bash的路径。由于Git位于系统文件夹中,因此终端程序应以管理员身份运行。
Config $ PATH GVFS的环境变量。在Git Bash中运行此命令。 export PATH=$PATH:/c/Program\ Files/GVFS
或export PATH=$PATH:"/c/Program Files/GVFS"
。或在控制面板的系统属性中为GVFS设置环境变量。重新登录生效。有时此配置不起作用,但是PacMan仍然可以运行。
修复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中的所有元数据文件。请阅读以下官方说明:
如果没有这些元数据文件,您将不知道Google为构建这两种Git版本而选择的msys2软件包的确切集合和版本。如果您强制安装或复制当前版本的msys2软件包,则存在与Google生成和测试的git二进制文件不匹配的风险。
好吧,直到找到该文件:/etc/package-versions.txt,这是匹配的msys2软件包和版本的清单。现在,github中有一个确定的资源。这是我在Portable Git中还原pacman的方法:
步骤1:转到msys2下载3个软件包:pacman,pacman-mirrors和msys2-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迁移过来,所以我做了一些即兴创作:
${git-sdk}/usr/bin/pacman.exe
复制到${git}/usr/bin
${git-sdk}/etc/pacman.conf
和${git-sdk}/etc/pacman.d
复制到${git}/etc
${git-sdk}/var
复制到${git}/
仅此而已。现在,您可以打开Git Bash并运行pacman -S python
以在现有的Windows Git安装程序上安装软件包。
您将需要对Git for Windows目录的写权限。另外,您的pacman
现在认为(从SDK中)安装了很多软件包,但并没有阻止我使用它。