我正在阅读git-for-windows的github wiki,上面说msys 2捆绑了pacman:https://github.com/git-for-windows/git/wiki/Package-management
但是当我调用它时,我得到:
$ pacman
bash: pacman: command not found
有人知道发生了什么吗?
这个wiki指的是哪个git版本?
有没有办法在Git for windows中安装额外的软件包到msys 2?
我正在阅读git-for-windows的github wiki,上面说msys 2捆绑了pacman:https://github.com/git-for-windows/git/wiki/Package-management
但是当我调用它时,我得到:
$ pacman
bash: pacman: command not found
有人知道发生了什么吗?
这个wiki指的是哪个git版本?
有没有办法在Git for windows中安装额外的软件包到msys 2?
8条答案
按热度按时间unftdfkk1#
正如第397期所述:
这是有意的。我们不随Git for Windows一起提供pacman。
如果你对一个完全成熟的包管理器维护的环境感兴趣,你必须给予一试Git for Windows SDK。
你在最新的git for Windows(2.5.3)中看到的bash是一个more recent bash than the old msysgit one,它只是用来执行git命令的。
它不是一个成熟的linux环境来安装任何第三方软件包。
警告:评论中的dhj报告
不要使用目录连接将现有的git for windows与msys2主系统链接。
如果您卸载它将决定链接的目录属于它,并删除您的整个主目录,包括子目录,如“下载”。
小心处理msys2。
我不知道git for windows SDK是否也是如此,但是要小心尝试从其他与git for windows集成的系统中获取pacman。
cedebl8k2#
Git for Windows(https://gitforwindows.org/或https://git-scm.com/downloads)有Git Bash,但不包括
tree
。tree
可通过pacman
(软件包管理器)获得,但仅当您安装“Git for WindowsSDK”时才可用(滚动到https://gitforwindows.org/底部,其中提供了从https://github.com/git-for-windows/build-extra/releases/latest下载安装程序的链接)The accepted answer非常有帮助。他们提到
git-for-windows
并不意味着在默认安装中包含pacman
。所以我安装了“Git for Windows SDK”,然后在其bash提示符(SDK-64)中运行以下命令来安装当前的树v1.7.0-1(截至2018年8月30日):
在我的系统上,Git for Windows SDK安装在:
C:\git-sdk-64
,所以从我的Git for Windows Bash shell(它没有安装树),我通过tree.exe将它复制到它的/usr/bin
目录,例如:现在我可以从两个Git Bash shell运行
tree
v1.7.0了。为了让其他人甚至是我自己在未来的机器上更容易,我通过在我的Git for Windows SDK Bash终端中运行以下命令来查看
pacman
从哪里获得tree
包:这里的关键是
pacman
从“msys”存储库(仅供参考:尽管它说的是msys,但实际上使用的是msys 2),因此我查看了/etc/pacman.d/mirrorlist.msys
,第一个镜像指向http://repo.msys2.org/msys/$arch/
所以下次你想要一个不在Git for Windows中的软件包时,你可以从以下网址下载:http://repo.msys2.org/msys/x86_64/(适用于64位)或http://repo.msys2.org/msys/i686/(适用于32位)
例如,树v1.7.0-1的直接下载链接
仅供参考:Git SCM的Windows下载位于https://git-scm.com/download/,从Git for Windows GitHub下载最新版本(https://github.com/git-for-windows/git来自https://github.com/git-for-windows/git/releases/链接)
9nvpjoqh3#
我不想离开我已经在工作的Git for Windows安装,所以我临时做了一点:
1.在其他位置安装Git for Windows SDK。您需要3 GB以上的可用空间。
1.将
${git-sdk}/usr/bin/pacman.exe
复制到${git}/usr/bin
1.将
${git-sdk}/etc/pacman.conf
和${git-sdk}/etc/pacman.d
复制到${git}/etc
1.将
${git-sdk}/var
复制到${git}/
现在你可以打开Git Bash并运行
pacman -S python
来在现有的Git for Windows安装程序上安装包了。你需要对Git for Windows目录有写权限。另外,你的
pacman
现在认为它安装了很多软件包(来自SDK),但它并没有阻止我使用它。s4chpxco4#
“Git for Windows SDK”是5.33GB相比“Git for Windows”691 MB相比“Portable Git”275 MB.我使用精益和平均便携式Git.一开始,似乎没有希望尝试恢复和使用pacman在后两种风格的Git(msys 2),因为谷歌排除了所有的元数据文件在/var/lib/pacman/local.请阅读以下官方解释:
https://wiki.archlinux.org/index.php/Pacman#.22Failed_to_commit_transaction_.28conflicting_files.29.22_error
如果没有这些元数据文件,你就不知道Google选择的msys 2包的确切集合和版本,如果你强制安装或复制msys 2包的当前版本,你就有可能与Google构建和测试的git二进制文件版本不匹配。
直到我发现了这个文件/etc/package-versions.txt,匹配msys 2软件包和版本的清单。现在github中有一个确定的源代码。下面是我如何在Portable Git中恢复pacman:
步骤1:运行以下命令下载/etc/pacman.conf和3个软件包:pacman,pacman-mirrors和msys2-keyring。这些都是msys 2切换到zstd之前的.xz包。请看下面我的评论。
步骤2:在根目录下解压缩它们,然后使用以下命令恢复pacman:
步骤3:接下来的两个命令恢复所有匹配的元数据。第二个命令是多行的,但仍然可以安全地剪切和粘贴(请耐心等待):
第四步:现在,要求“make”和“zip”是不是太过分了?
瞧,仍然只是一个337 MB意味着小环境,可以扩展和升级!
oxf4rvwz5#
似乎有一个documented way可以做到这一点,而不必安装Git for Windows SDK(非常大)。当我在GitHub issue #1912上询问这一切时,PhilipOakley给了我这个信息的链接。
以下是Git for Windows GitHub wiki page的最新文本:
安装在MSYS 2内部
请注意,Git for Windows不正式支持此方案
(The不支持此方案原因是没有志愿者支持该方案。)
本指南假设您需要64位版本的Git for Windows。
由于Git for Windows是基于MSYS 2的,因此可以将
git
包安装到现有的MSYS 2安装中。这意味着如果您的计算机上已经在使用MSYS 2,则可以使用Git for Windows,而无需运行完整的安装程序或使用便携版。不过要注意的是,这样做需要注意一些问题。Git for Windows为
msys2-runtime
创建了一些补丁,但这些补丁还没有被发送到上游。(这是计划好的,但在发行版#284中已经确定,这可能不会发生。)这意味着你必须安装Git for Windows自定义的msys2-runtime
,才能在MSYS 2中拥有一个完全工作的git。以下是要采取的步骤:
1.打开一个MSYS 2终端。
1.编辑
/etc/pacman.conf
并在[mingw32]
之前(在我的机器上是第71行)添加git-for-windows
包库:[git-for-windows] Server = https://wingit.blob.core.windows.net/x86-64
以及可选地,还包括用于 * 相反 * 架构的仅MINGW储存库(即,用于64位SDK的MINGW 32):
[git-for-windows-mingw32] Server = https://wingit.blob.core.windows.net/i686
1.授权签名密钥(可能需要偶尔重复此步骤,直到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
1.然后同步新存储库
pacboy update
1.这会更新
msys2-runtime
,因此会要求您关闭窗口(* 而不是 * 退出pacman进程)。不要惊慌,只需关闭所有当前打开的MSYS 2 shell和MSYS 2程序。仔细检查任务管理器并杀死pacman.exe
,因为它在窗口关闭后仍在运行,因为它可能会逗留。一旦所有程序都关闭,再启动一个新的终端。1.然后 * 再次 * 同步(更新软件包的非核心部分):
pacboy update
1.最后安装Git/cURL包:
pacboy sync git:x git-doc-html:x git-doc-man:x git-extra: curl:x
1.最后,检查在MINGW 64 shell中执行
git --version
是否一切正常,它应该输出类似git version 2.14.1.windows.1
(或更新版本)的内容。@VonC在评论中指出,在https://github.com/git-for-windows/git/issues/2688的讨论进行到一半时,有人讨论了这种方法可能需要的额外步骤。
而现在,一个潜在的新方法来实现所需的结果了:
qlvxas9a6#
已在运行Windows 10 x86_64 1909 10.0.18363.752的msys 2 20190524和运行Windows 11 x86_64 21 H2 10.0.22000.434的msys 2 20220128上进行了测试
使用Windows版的常规Git。
1.安装
msys2
(版本20190524已测试。)或Git for Windows SDK
。(未完全测试,但应该可以工作。)两者都包含PacMan和Git。使用VFS for Git for Windows或Scalar for Git for Windows(又名Microsoft git)。方法#1(有一些限制)
1.安装用于Git的VFS(https://github.com/microsoft/VFSForGit)。
1.安装Microsoft git(https://github.com/microsoft/git),并启用“从命令行和第三方软件安装Git”选项。
1.在
msys64\usr\bin\
中创建指向C:\Program Files\Git\bin\git.exe
的名为“git”的符号链接。1.克隆新的gvfs存储库。
gvfs clone https://dev.azure.com/somebody/_git/somerepo
。只有gvfs命令不能在msys 2上执行。1.在msys 2上使用git命令。
使用VFS for Git for Windows或标量for Git for Windows。方法2
建议使用Git的虚拟文件系统(以前是GVFS。官方网站https://vfsforgit.org/)。版本2.22和2.26已经过测试。不建议使用标量(官方网站https://github.com/microsoft/scalar),也没有经过完全测试。
1.安装
GVFS
和Git for Windows with GVFS patch
。或者在同一台计算机上安装Scalar for Git
和Git for Windows with Scalar patch
。不能同时安装。默认安装目标是C:\Program Files\Git
。1.将msys 2 x64安装在
C:\Program Files\Git
以外的位置。默认情况下,它位于C:\msys64
中。1.复制msys 2的文件和子文件夹(/etc和git二进制文件除外。msys 2出厂时不带git。)复制到Git for Windows VFS版本,并将msys 64文件夹中的
/etc/pacman.d
和/etc/pacman.conf
复制到Git安装文件夹,覆盖现有文件。它会将msys 2和MinGW运行时更新到最新版本。对于PacMan,所需文件为/usr/bin/pac* ; /etc/pacman.conf ; /etc/pacman.d/ ; /var ; /usr/bin/msys* ;
。(未完全测试。)1.设置终端应用程序。运行
C:\Program Files\Git\bin\bash.exe
将启动Windows的Git的bash。运行C:\Program Files\Git\usr\bin\bash.exe
将启动msys 2的bash。为终端程序配置bash的路径,例如Hyper Terminal。由于Git在系统文件夹中,终端程序应该是以管理员身份运行。export PATH=$PATH:/C/Program\ Files/GVFS
或export PATH=$PATH:"/C/Program Files/GVFS"
中运行此命令。或者在控制面板的系统属性中设置GVFS的环境变量。重新登录才能生效。有时此配置不起作用,但PacMan仍然可以运行。1.修正PacMan。为二进制文件设置可执行权限。Fox example.
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安装的。n9vozmp47#
pacman现在使用zstd压缩。所以更新了@michael-chen的场景(我使用wsl的unzstd):
qf9go6mv8#
从msys 2复制pacman对我来说很有效,最后大多数人忘记了可以使用pacman进行自我更新,如
pacman -Syy msys/pacman
1.在msys
pacman -Ql pacman
中运行1.复制列出的匹配文件
1.以及复制数据库
1.此时,我已经有了一个工作的pacman,我用
pacman -Ss pacman
检查它,但有丢失的文件,所以我运行自我刷新pacman -Syy msys/pacman