在 MacOS 中搭建 独立Linux 开发环境

前言

在 Mac OS 中使用 Linux 开发环境本身并不是一件难事，因为 Mac OS 本身就是一个 类Uinx 系统，加上有 HomeBrew 可以直接安装大部分 Linux 的软件包， 即使不使用虚拟机，也能有一个相对较好的开发体验，但是难免会有特殊需求， 或者不想污染宿主机的开发环境，那就可以使用 如 VMware Fusion、Parallels Desktop 或 VirtualBox），然后在虚拟机中安装完整的 Linux 发行版， 但是这类虚拟机比较 重 ，启动比较慢，内存占用大，就不在我的考虑范围内了，当然也可以使用 Docker Desktop 直接使用各类 Linux 发行版的镜像， 或者创建 Dev Container 直接创建一个环境齐全的开发镜像， 但是目前 Docker 镜像源的问题没有一劳永逸的方案，所以也不在我的考虑范围内，最终我决定使用 Orbstack 中的 Mechines 来搭建一个开发环境

安装 Orbstack

官网里可以直接下载安装包， 或者使用 HomeBrew 直接安装

Copy
brew install orbstack

选择一个合适的发行版

我这里使用的是 Fedroa

完善开发环境

第一步当然是换
清华源，首先备份一下默认源

Copy
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup

然后直接替换默认源

Copy
sudo sed -e 's|^metalink=|#metalink=|g' \
-e 's|^#baseurl=http://download.example/pub/fedora/linux|baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora|g' \
-i.bak \
/etc/yum.repos.d/fedora.repo \
/etc/yum.repos.d/fedora-modular.repo \
/etc/yum.repos.d/fedora-updates.repo \
/etc/yum.repos.d/fedora-updates-modular.repo

如果你喜欢手动换

fedora 仓库 (/etc/yum.repos.d/fedora.repo)

Copy
[fedora]
name=Fedora $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Everything/$basearch/os/
metadata_expire=28d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

updates 仓库 (/etc/yum.repos.d/fedora-updates.repo)

Copy
[updates]
name=Fedora $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Everything/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

fedora-modular 仓库 (/etc/yum.repos.d/fedora-modular.repo)

Copy
[fedora-modular]
name=Fedora Modular $releasever - $basearch
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/releases/$releasever/Modular/$basearch/os/
enabled=1
metadata_expire=7d
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False

updates-modular 仓库 (/etc/yum.repos.d/fedora-updates-modular.repo)

Copy

[updates-modular]
name=Fedora Modular $releasever - $basearch - Updates
failovermethod=priority
baseurl=https://mirrors.tuna.tsinghua.edu.cn/fedora/updates/$releasever/Modular/$basearch/
enabled=1
gpgcheck=1
metadata_expire=6h
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearch
skip_if_unavailable=False
```

清理缓存

Copy
sudo dnf clean all
sudo dnf makecache

Copy
- 更新软件包

```bash
sudo dnf update
```
---

2. 使用 `zsh` 替换默认的 `bash`

- 安装 `git` 和 `zsh`

```bash
sudo dnf install git zsh

安装 oh my zsh

Copy
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

安装常用的 oh my zsh 插件

自动提示

Copy
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions

高亮显示

Copy
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting

Copy

git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
```
- 自动补全

Copy
``` bash

git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git $ZSH_CUSTOM/plugins/zsh-autocomplete
```

修改 zsh 配置文件，将其中的 plugins 修改为

Copy
vim ~/.zshrc

Copy
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
fast-syntax-highlighting
zsh-autocomplete

)

Copy
- 应用修改

```bash
source ~/.zshrc

安装 NVM 管理 NodeJS 版本

Copy
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash

如何使用

Copy
$ nvm use 16
Now using node v16.9.1 (npm v7.21.1)
$ node -v
v16.9.1
$ nvm use 14
Now using node v14.18.0 (npm v6.14.15)
$ node -v
v14.18.0
$ nvm install 12
Now using node v12.22.6 (npm v6.14.5)
$ node -v
v12.22.6

进阶请查看 文档

使用 VS Code 连接到刚才创建的虚拟机中

安装插件 Remote Development

添加远程链接，在左侧菜单中选择 远程资源管理器， 点击 SSH 上的 + 号，或者使用快捷键 Shift+Command+P 输入 remote add, 来打开添加 SSH 链接的窗口

输入 ssh orb 即可连接至刚创建的虚拟机中
::: warning
如果有多个虚拟机，SSH 链接的时候需要指定连接到哪台主机，如果不指定则连接到默认主机中，例如 ssh debain@orb 使用默认用户链接到 debain 主机中， 示例
ssh machine@orb，
ssh user@orb，
ssh user@machine@orb
:::

这样就有了一个隔离宿主机系统的开发环境，再怎么折腾也不怕，有点类似于 Windows 中的 WSL ，胜在简单便捷，不需要额外开启系统的某些功能，下载完 Orbstack 就可以直接使用

此文由 Mix Space 同步更新至 xLog
原始链接为 https://remrin.dev/posts/linux/dev-env