Windows 10 (WSL2) 上不支持的操作系统 Laravel 8 with Sail
Posted
技术标签:
【中文标题】Windows 10 (WSL2) 上不支持的操作系统 Laravel 8 with Sail【英文标题】:Unsupported operating system Laravel 8 with Sail on Windows 10 (WSL2) 【发布时间】:2021-12-20 21:29:57 【问题描述】:我花了 13 个小时编写 Laravel Sail,但我无法在 Windows 10 操作系统上安装它。 但幸运的是,后来我的同事在遇到此错误消息时也找到了解决方案:
Unsupported operating system [MINGW64_NT-10.0-19042]. Laravel Sail supports macOS, Linux, and Windows (WSL2).
在 13 小时内:
首先我将 Docker Desktop 安装到运行 Docker 环境的 Windows 上。 Docker 在 Windows 上需要 WSL-2,在我看来,它似乎也需要安装 Linux 操作系统。这就是我完成整个过程的原因:https://docs.microsoft.com/en-us/windows/wsl/install 我安装了 Ubuntu 20.04 版本。 安装后,我将整个项目复制到 Linux 用户的文件夹中。由于身份验证问题,我无法在其中执行任何操作(例如拉取或推送到我的 git 存储库)。 为了解决这个问题,我根据这两个答案在 Windows 和 Linux 中的项目之间创建了一个符号链接:https://***.com/questions/52545505/how-to-synchronize-code-files-on-windows-with-wsl-linux/62715180#62715180、https://***.com/questions/65227492/laravel-8-laravel-sail-for-dev-on-windows-10-is-slow-how-to-speed-up/65236920#65236920 它没有解决问题,所以我删除了项目中的/vendor/
文件夹并根据以下答案运行 composer udpate
:https://***.com/a/65513584/10473070 也没有工作。
在我没有成功完成所有下一个过程之后:https://codeburst.io/how-to-use-laravel-sail-with-the-docker-desktop-wsl-2-backend-3768a126a85
这是一个副作用,即 mysql 无法访问远程数据库,当 Docker 最终工作时,该进程消耗了我一半的可用内存。
我最后的尝试是创建一个空的 Laravel 8 项目,以便通过本文档使用 curl 调用进行测试:https://laravel.com/docs/8.x/installation#getting-started-on-windows
结果失败。最后我卸载了 Linux 和 Docker Desktop。
解决方案和部分解释在我的回答中。
【问题讨论】:
【参考方案1】:解决方案在 Sail 中,问题是一种错误。
但首先是准备步骤:
您需要在 Windows 上安装 Docker Desktop 您需要按照本指南安装和设置 WSL 2:https://docs.microsoft.com/en-us/windows/wsl/install 但是 您绝对不需要在 Windows 上安装 Linux。因为问题是 Sail 中的操作系统检查条件。 在供应商文件夹中找到sail
文件:vendor/laravel/sail/bin/sail
并从此代码更改:
Verify operating system is supported...
case "$UNAMEOUT" in
Linux*) MACHINE=linux;;
Darwin*) MACHINE=mac;;
*) MACHINE="UNKNOWN"
esac
if [ "$MACHINE" == "UNKNOWN" ]; then
echo "Unsupported operating system [$(uname -s)]. Laravel Sail supports macOS, Linux, and Windows (WSL2)." >&2
exit 1
fi
到这里:
# Verify operating system is supported...
#case "$UNAMEOUT" in
# Linux*) MACHINE=linux;;
# Darwin*) MACHINE=mac;;
# *) MACHINE="UNKNOWN"
#esac
#
#if [ "$MACHINE" == "UNKNOWN" ]; then
# echo "Unsupported operating system [$(uname -s)]. Laravel Sail supports macOS, Linux, and Windows (WSL2)." >&2
#
# exit 1
#fi
这解决了问题。
为什么我们可以这样做?
因为要检查vendor/laravel/sail/bin/sail
bash 文件,您会注意到每个命令都可以在Windows 上的bash 和终端中运行,也没有任何问题。
也许他们忘记在上面的这段代码中添加一个 Windows 检查行。
要完成这些过程,Laravel Sail 就像基于 Laravel Sail 文档的魅力一样工作。
别忘了这只是一个修补程序,因为下一次 Sail 更新将覆盖修改后的 Sail bash 文件!
【讨论】:
以上是关于Windows 10 (WSL2) 上不支持的操作系统 Laravel 8 with Sail的主要内容,如果未能解决你的问题,请参考以下文章
最详尽教程完整介绍-Windows 的 Linux 子系统-WSL1&WSL2
WSL2 使用“localhost”访问 Windows 服务
在 WSL2 中:安装了适用于 Windows 10 nodejs 的 Ubuntu 20.04,但 npm 无法正常工作