从命令提示符或PowerShell开始(两者都很好;我可以弄清楚如何执行给定的另一个),如何调用MSYS2 shell运行命令?

更具体的问题

我提供这些信息是为了避免XY问题,但我坚信可以通过上述(更一般)问题的答案来最好地解决此问题。

特别是,我希望编写一个Shell脚本来更新Part III, Step 3 here中列出的软件包。所以我需要这样的东西:

[invoke msys2 bash] -c "pacman -Sy --needed msys2-runtime"


直接调用bash可执行文件不起作用:

C:\>C:\msys64\usr\bin\bash.exe -c "pacman -Sy --needed msys2-runtime"
/usr/bin/bash: pacman: command not found


我认为这是环境问题。更改PATH以包括MSYS2的bin目录的路径也不能解决问题。当它尝试安装软件包时,会发生不好的事情(nano只是一个例子):

C:\>bash -c "pacman -Sy --needed --noconfirm nano"
:: Synchronizing package databases...
 mingw32 is up to date
 mingw64 is up to date
 msys is up to date
resolving dependencies...
looking for conflicting packages...

Packages (1) nano-2.3.6-2

Total Installed Size:  1.81 MiB
Net Upgrade Size:      0.17 MiB

:: Proceed with installation? [Y/n]
(1/1) checking keys in keyring                                                                   [########################################################] 100%
(1/1) checking package integrity                                                                 [########################################################] 100%
(1/1) loading package files                                                                      [########################################################] 100%
(1/1) checking for file conflicts                                                                [########################################################] 100%
(1/1) checking available disk space                                                              [########################################################] 100%
(1/1) upgrading nano                                                                             [########################################################] 100%
error: command (/usr/bin/bash /usr/bin/bash -c . /tmp/alpm_shqjUE/.INSTALL; post_upgrade 2.3.6-2 2.3.2-1 ) failed to execute correctly


尝试调用批处理文件(C:\ msys64 \ msys2_shell.bat)在新窗口中打开一个新的Shell,这使我不知道它是失败还是成功。

那么如何使Shell进入MSYS2的正常状态?

最佳答案

我们正在努力修复混乱的更新程序,希望它不会出现问题。

您可以在以下示例中看到一些有关如何在创建新安装程序时从批处理文件调用MSYS2的示例:

https://github.com/Alexpux/MSYS2-packages/blob/master/msys2-installer/make-msys2-installer.bat

但是正如@StevenPenny所说,

bash -l -c "pacman ..."


是正确的方法。

08-06 00:34