在
Mac OS
中使用Linux
开发环境本身并不是一件难事,因为Mac OS
本身就是一个类Uinx
系统,加上有HomeBrew
可以直接安装大部分Linux
的软件包, 即使不使用虚拟机,也能有一个相对较好的开发体验,但是难免会有特殊需求, 或者不想污染宿主机的开发环境,那就可以使用 如VMware Fusion
、Parallels Desktop
或VirtualBox
),然后在虚拟机中安装完整的 Linux 发行版, 但是这类虚拟机比较重
,启动比较慢,内存占用大,就不在我的考虑范围内了,当然也可以使用Docker Desktop
直接使用各类Linux
发行版的镜像, 或者创建Dev Container
直接创建一个环境齐全的开发镜像, 但是目前Docker
镜像源的问题没有一劳永逸的方案,所以也不在我的考虑范围内,最终我决定使用Orbstack
中的Mechines
来搭建一个开发环境
Orbstack
官网里可以直接下载安装包, 或者使用 HomeBrew
直接安装
我这里使用的是 Fedroa
orbstack 软件
Fedroa
第一步当然是换 清华源,首先备份一下默认源
然后直接替换默认源
如果你喜欢手动换
fedora 仓库 (/etc/yum.repos.d/fedora.repo)
updates 仓库 (/etc/yum.repos.d/fedora-updates.repo)
fedora-modular 仓库 (/etc/yum.repos.d/fedora-modular.repo)
updates-modular 仓库 (/etc/yum.repos.d/fedora-updates-modular.repo)
清理缓存
更新软件包
使用 zsh
替换默认的 bash
git
和 zsh
oh my zsh
安装常用的 oh my zsh
插件
修改 zsh
配置文件,将其中的 plugins 修改为
安装 NVM
管理 NodeJS
版本
如何使用
进阶请查看 文档
使用 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
就可以直接使用
brew install orbstack
sudo cp -r /etc/yum.repos.d /etc/yum.repos.d.backup
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]
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]
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]
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]
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
sudo dnf clean all
sudo dnf makecache
sudo dnf update
sudo dnf install git zsh
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git $ZSH_CUSTOM/plugins/zsh-syntax-highlighting
git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting
git clone --depth 1 -- https://github.com/marlonrichert/zsh-autocomplete.git $ZSH_CUSTOM/plugins/zsh-autocomplete
vim ~/.zshrc
plugins=(
git
zsh-autosuggestions
zsh-syntax-highlighting
fast-syntax-highlighting
zsh-autocomplete
)
source ~/.zshrc
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
$ 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