1. 首页 > 科技问答

macos catalina,macos catalina怎么用

关注留言点赞,带你了解最流行的软件开发知识与最新科技行业趋势。

虽然 Mac 上的 Vagrant 通常可以完美运行,但安装错误可能而且确实会发生。让我们解决每个系统上的潜在绊脚石。

什么是 Vagrant?

早在 2010 年 3 月,由Hashicorp 的 Mitchell Hashimoto和他的犯罪伙伴John Bender首次推出,Vagrant一个用于虚拟机 (VM) 生命周期管理的开源命令行工具。该实用程序旨在通过简化此过程来提高开发效率。虽然 Vagrant 最初与 Oracle VirtualBox 绑定,但从 1.1 版开始,它还包括对VMware、KVM 等的支持。然而,尽管虚拟化在 Web 开发中很有帮助,但使用 Vagrant 并不总是万无一失的选择。

为什么要使用 Vagrant?这值得么?

首先,Vagrant通过基于管理程序的不可变环境提供了更大的灵活性。这使开发人员能够构建需要仅在其他系统上可用的功能的环境。

例如,如果您需要构建一个支持各种操作系统和内核的应用程序,您可以轻松创建多个虚拟机,这些虚拟机可以使用 Vagrant 运行测试。同样,如果您想复制客户的环境(操作系统、资源等),结合使用 VM 和 Vagrant 可能也特别有用。

在工作站上安装 Vagrant

要开始使用 Vagrant,请从官方Vagrant 下载页面下载安装程序或合适的包。以下说明适用于 Vagrant v2.3.3(截至 2022 年 12 月的最新版本)。

在 Windows 上安装 Vagrant

为了在 Windows 上安装Vagrant ,您首先需要从 这里下载 MSI 包。接下来,您可以简单地运行该文件并完成常规安装过程。

注意:安装程序会自动将“vagrant”添加到您的系统路径中,因此它也可以在终端中使用。但是,如果找不到 Vagrant,请尝试注销并重新登录系统,因为这在 Windows 上很常见。

在 MacOS Catalina 上安装 Vagrant

假设您已经安装了“brew”包管理器,要在 Mac 上快速设置Vagrant ,您可以使用以下单行命令运行安装:

```bash$> brew install vagrant```

或者,如果您想从二进制文件安装 Vagrant,请单击此处,下载应该会立即开始。

在 Linux 上安装 Vagrant

对于Linux系统,我们将演示Vagrant在Ubuntu 20.04上的安装过程:

安装密钥:

```bash$> wget -O- https://apt.releases.hashicorp.com/gpg | gpg --dearmor | sudo tee /usr/share/keyrings/hashicorp-archive-keyring.gpg```

添加存储库:

```bash$> echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list```

拉取更新并运行安装:

```bash$> sudo apt update && sudo apt install vagrant```

这里的所有都是它的!现在你需要做的就是打开你的终端并输入“vagrant”。然而,还值得指出的是,如果您单独运行 Vagrant,您将获得一个包含可用子命令的列表。

安装 Vagrant 时可能遇到的主要问题

虽然Vagrant 安装错误相当少见,但如果您的计算机上安装了多个虚拟机管理程序,则出现这种情况的可能性会大大增加。毕竟,当一个以上的虚拟机已经在使用时,管理程序不允许创建虚拟机。

以下是取自Vagrant 官方文档的几个快速解决方案,可以帮助您在存在另一个管理程序时使用 Vagrant 和 VirtualBox:

在 Linux 上

使用其他管理程序时,您可能会遇到以下错误:

```bashThere was an error while executing `VBoxManage`, a CLI used by Vagrant for controlling VirtualBox. The command and stderr is shown below.Command: ["startvm", <ID of the VM>, "--type", "headless"]Stderr: VBoxManage: error: VT-x is being used by another hypervisor (VERR_VMX_IN_VMX_ROOT_MODE).VBoxManage: error: VirtualBox can't operate in VMX root mode. Please disable the KVM kernel extension, recompile your kernel and reboot(VERR_VMX_IN_VMX_ROOT_MODE)VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component ConsoleWrap, interface IConsole```

为了让 VirtualBox 正确运行,任何额外的管理程序都需要添加到系统的拒绝列表中。

为此,首先要了解管理程序的名称:

```bash$> lsmod | grep kvmkvm_intel 204800 6kvm 593920 1 kvm_intelirqbypass 16384 1 kvm```

接下来,只需使用“黑名单”命令将管理程序添加到您的拒绝列表中。

```bashecho 'blacklist kvm-intel' >> /etc/modprobe.d/blacklist.conf```

最后,重新启动机器并再次使用“vagrant”命令。

在 Windows 上

在 Windows 上,如果您尝试启动VirtualBox VM,您可能会遇到刺耳的蓝屏。

为了正常使用 VirtualBox,您必须确保禁用 Hyper-V。使用以下简单命令关闭Windows 10上的功能:

```PowerShell$> Disable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V-All```

在Windows 11上,您还可以使用提升的 Powershell:

```PowerShell$> bcdedit /set hypervisorlaunchtype off```

或者,您可以从 Windows 系统设置中禁用 Hyper-V。

右键单击 Windows 按钮并选择“应用程序和功能”打开打开或关闭 Windows 功能取消选中 Hyper-V,最后单击“确定”

重新启动您的机器以应用这些更改。

在 MacOS 上

如果您在尝试执行 VBoxManage 时遇到以下错误消息:

failed to open /dev/vboxnetctl: No such file or directory

完全重新安装 Virtualbox 或简单地使用以下命令:

sudo /Library/StartupItems/VirtualBox/VirtualBox restart

或者

sudo /Library/StartupItems/VirtualBox/VirtualBox start

请注意,在较新的版本中,该文件/Library/StartupItems/VirtualBox/VirtualBox不存在,因此您必须使用以下命令:

sudo launchctl load /Library/LaunchDaemons/org.virtualbox.startup.pl

MacOS Catalina:但它可以在我的机器上运行

Mac 上可能出现的另一个问题是当您听到某个应用程序“在我的机器上运行良好”时出现的经典问题,并且再多的乞求或哭泣也无法让它在其他任何地方都运行良好。

想象一下,您当前正在使用 Vagrant + VirtualBox 部署和测试本地环境。您团队中的一位软件工程师使用定制版本的 VagrantBox,到目前为止,该版本对他们来说运行良好。他们将被称为Developer 1。在他们的工作站上,VirtualBox v6.1.34、Vagrant 2.2 和 Ubuntu 都可以正常运行。

另一方面,显然开发者 2需要升级他们的本地环境。他们目前在自己的工作站上混合使用 MacOS、VirtualBox v6.1.24 和 Vagrant 2.1.x。

因此,至少乍一看,开发人员 2 的策略似乎很简单:

第一步:更新VirtualBox和Vagrant版本(使用统一版本很关键)第 2 步:安装所有其他项目组件

两个操作都成功完成,但结果肯定出乎意料——由于某种原因,安装在 VirtualBox 上的网站现在完全无法访问。有没有搞错!?

当遇到这样的谜题时,集思广益找出解决方案并采取如下所列的明智行动至关重要:

检查日志文件验证所有 VirtualBox 服务(例如 PHP、Nginx 和 MySQL)是否正常运行使用 curl 访问页面

然而,在这种情况下,一切似乎都在正常运行,VirtualBox 实例本身内部没有任何明显的问题。

然后您的团队决定改变策略并确定是否可以从外部访问 VirtualBox 主机。使用简单的 ping 命令后,他们毫无准备地发现 100% 的数据包丢失。虽然这个消息有些令人不安,但也可能是整个社会的起因。

遵循此线程,他们最终发现 HostOnly 适配器现在必须接收不同范围的 IP 地址。这显然是从VirtualBox v6.1.30更新开始的(所有内容的补丁更新):

192.168.55.х prior to the update192.168.56.х. after the update.

很明显,在最近修订的 VirtualBox用户手册中:

在 Linux、Mac OS X 和 Solaris 上,Oracle VM VirtualBox 将只允许将 192.168.56.0/21 范围内的 IP 地址分配给仅主机适配器。”

您团队中的每个人都松了一口气。创建新的 HostOnly 适配器并更改 VirtualBox 实例中的适配器后,问题突然消失。解决方案的关键 Web 组件终于可以访问了,开发人员 2 终于高兴了。

流浪者还是……?存在哪些替代方案?他们如何更好?

如此兴奋,您可能会寻找Vagrant 替代品,这是情有可原的。但是,如果您这样做,您可能会遇到许多将实用程序与容器(通常是 Docker)进行比较的网站。但这实际上是一个有效的比较吗?事实证明,它实际上是,只要你意识到两者之间的区别。

Docker 相对于虚拟机管理程序的许多优势也可以被视为劣势——这取决于您需要它做什么。那么,让我们从一个大问题开始:加载时间。虽然容器可以快速启动,因为它们基本上只是一组进程,但这也意味着它使用主机内核。因此,容器将不依赖于虚拟化硬件,而是直接使用主机的硬件。

管理程序还可以拥有内存、CPU 时间、驱动器空间等形式的专用资源。另一方面,容器与主机上的其他进程共享资源。同样,虽然 Vagrant 使您能够创建一个完整的虚拟机——这将需要更多的时间和资源——但 Docker 的容器化方法允许您以更少的资源更快地进行部署。

因此,考虑到这一点,请记住这不是比赛。这只是关于贵公司的需求。

结论

虽然 Vagrant 无疑是一个强大的工具,但它也不能幸免于问题。如果您的公司缺乏专业知识或知识,专门的软件开发人员团队可能会提供帮助。毕竟,即使它只能“在我的机器上工作”,每个问题都有解决方案。

本文采摘于网络,不代表本站立场,转载联系作者并注明出处:https://www.miyuegong.com/kejiwenda/64993.html

联系我们

在线咨询:点击这里给我发消息

微信号:666666