我在 Windows 8.1 测试机上安装了单独的 MSYS2 32 位和 64 位。MSYS2 是从MinGW-64 下载页面。每个安装都安装了开发人员工具,如 GCC、Git、GDB、Make 等。
我无法更新 MSYS2。当我尝试更新组件时,我收到“此操作成功至少需要一个有效且已启用的存储库”:
设置 | 网络被设定为无代理。设置 | 存储库有默认存储库:
此问题在 MSYS2 32 位和 MSYS2 64 位上均有发生。以maintenancetool.exe
管理员和普通用户身份运行时也会出现此问题。
据我所知,自从我安装 MSYS 或各种开发人员软件包以来,什么都没有改变。存储库与以前相同。
搜索无果预期成绩。我期望会有很多匹配结果和很多建议,但只有 5 个结果(这似乎很奇怪)。
为什么我会遇到这个错误?如何修复它?
答案1
在我看来,这maintenancetool.exe
无疑是一个彻头彻尾的残破怪物,msys2 开发团队(显然全世界只有 4 个人)在 MSYS2 Github repo 上列出了这个怪物:
早就应该把它撤下来了,答案的第一部分是,除了完全手动卸载整个 MSYS2 之外,目前根本不可能用它做任何事情。
在任何其他情况下,我都不会发布这样的官方堆栈答案,但不幸的是,这是事实,在这种情况下,这将为其他人节省大量搜索时间。我自己也浪费了很多时间尝试一切,是的,你可以手动尝试添加 QT 等的存储库,但这不是有效的解决方案,在典型的 Windows 安装中,它通常是 mingwin32/64/msys+。
相反,作为部分答案,第二部分是我发现的唯一解决方法是启动 shell,并且因为您将收到使用错误等,所以我通常只是跳转到运行:
<DO>
1. pacman -Syu --force
2. <WAIT UNTIL PROMPTED WITH IN USE (IF CORE UPDATING) - CLICK X TO KILL SHELL/RELAUNCH/RERUN SAME ABOVE COMMAND AGAIN>
<LOOP UNTIL IT REPORTS UP TO DATE>
直到提交此代码的开发人员将其留给公众,因为多年来一直如此损坏的工具集的主要面决定将工作代码放在提供现有无线 GUI 按钮/下拉菜单/文本框/等所预期功能的表单上。 (使其成为一个工作的 GUI 包管理界面) 帮自己一个忙,按照我所做的那样,下次提醒自己,并在此处进行最后一步,将文件放在maintenancetool.exe.IS.BROKEN!!!.txt
目录中的正下方。:)
答案2
帖子太长,无法作为评论,所以我将其作为答案发布。如果你这样做,pacman -Syu
你会得到什么?你有得到任何存储库吗?
你应该得到一些像我的情况一样的东西:
$ pacman -Syu
:: Synchronizing package databases...
mingw32 485.9 KiB 576K/s 00:01 [#####################] 100%
mingw32.sig 119.0 B 0.00B/s 00:00 [#####################] 100%
mingw64 486.8 KiB 956K/s 00:01 [#####################] 100%
mingw64.sig 119.0 B 0.00B/s 00:00 [#####################] 100%
msys 171.6 KiB 1016K/s 00:00 [#####################] 100%
msys.sig 119.0 B 0.00B/s 00:00 [#####################] 100%
:: Starting core system upgrade...
warning: terminate other MSYS2 programs before proceeding
resolving dependencies...
looking for conflicting packages...
Packages (2) msys2-runtime-2.11.1-2 msys2-runtime-devel-2.11.1-2
Total Download Size: 7.00 MiB
Total Installed Size: 40.27 MiB
Net Upgrade Size: 0.73 MiB
:: Proceed with installation? [Y/n]
使用 msys2 shell 时您是否得到类似的响应?
正如我在评论中所写,我建议使用scoop
安装 msys2。