Homebrew初始化
我在初步完成 Homebrew 安装之后,执行一些必要软件包安装,以便能够取代macOS操作系统默认工具:
使用更新的社区版本
为 darwin-jail 提供纯净的一次性打包
/usr/local
目录 不依赖 XCode command line tools
备注
XCode command line tools 安装在 /Library/Developer/CommandLineTools
, darwin-jail 构建时可i打包这个目录
初步设置和安装
~/.zprofile
添加配置eval "$(/usr/local/bin/brew shellenv)"
# 实际上只需要安装缺少的tmux和tree
# 其他软件可选安装,只是为了获得比macOS系统默认集成版本更新的官方版本
brew install tmux tree
brew install curl rsync git-svn python3 ruby
# 安装我的devops工具, neovim替换了vim
brew install neovim pssh webp gawk gsed
# 如有需要则安装openconnect nginx
# 可选安装
brew install --cask keepassxc
# 我现在不再使用docker,改为colima
# iterm2太消耗资源,改为alacritty
brew install colima
brew install --cask alacritty
#brew install --cask docker
#brew install --cask iterm2
#brew install golang
注意 macOS环境安装Ruby 是需要在环境中设置ruby路径的:
~/.zshrc
添加Ruby配置路径# 对于Intel架构macOS
if [ -d "/usr/local/opt/ruby/bin" ]; then
export PATH=/usr/local/opt/ruby/bin:$PATH
export PATH=`gem environment gemdir`/bin:$PATH
fi
# 对于Apple Silicon架构macOS
if [ -d "/opt/homebrew/opt/ruby/bin" ]; then
export PATH=/opt/homebrew/opt/ruby/bin:$PATH
export PATH=`gem environment gemdir`/bin:$PATH
fi
同样, curl 也需要添加配置路径,类似上面的 macOS环境安装Ruby
# 对于Intel架构macOS
if [ -d "/usr/local/opt/curl/bin" ]; then
export PATH=/usr/local/opt/curl/bin:$PATH
fi
# 对于Apple Silicon架构macOS
if [ -d "/opt/homebrew/opt/curl/bin" ]; then
export PATH=/opt/homebrew/opt/curl/bin:$PATH
fi
不过,对于我目前只有Intel架构的 MacBook Pro 2018 ,上述环境配置 ~/.zprofile
只需要简化成:
~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"
BREW_PATH=/usr/local/opt
export PATH=$BREW_PATH/curl/bin:$BREW_PATH/ruby/bin:$PATH
备注
不过我还是需要完成 "进一步安装和设置" 后再打包,因为我需要一个方便的开发环境
完成上述安装基础工具之后 brew
命令就是自包含依赖工具,可以直接将 /usr/local
目录打包放到 darwin-jail 中使用了:
sudo tar cfz brew.tar.gz /usr/local
# 打包以后的 brew.tar.gz 放到 darwin-jails 的chroot根目录下解压缩就可以使用
进一步安装和设置(现在跳过)
安装语言支持
备注
当安装了 XCode command line tools之后,系统就已经安装了 C (gcc是clang的别名),所以不需要再在brew中安装clang(llvm) - 参考 如何在 mac 电脑上轻量化地写C
甚至还包含了 swift 语言
安装 Node.js :
brew install node
警告
这里在jail容器中安装node会卡住,导致有部分依赖包没有安装完整。所以建议在host主机上安装好再打包进jail(我怀疑是创建 darwin-jails
时没有安装XCode command line tools,此时缺乏一些系统级的依赖库没有复制,等后续重新实践再看看能否修复)
安装部署 neovim
采用 NeoVim IDE 配置方法,其中配置文件位于 GitHub: cloud-studio :
mkdir ~/src
cd ~/src
git clone https://github.com/huataihuang/cloud-studio.git
cd ~/src/cloud-studio/config
sh install.sh
启动
nvim
时会自动安装插件
nvim插件安装错误排查
python-lsp-server 安装失败
Failed (1)
✗ python-lsp-server
▼ Displaying full log
WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProxyError('Cannot connect to proxy.', NewConnectionError('<pip._ven
ERROR: Could not find a version that satisfies the requirement python-lsp-server==1.12.0 (from versions: none)
ERROR: No matching distribution found for python-lsp-server==1.12.0
spawn: /Users/huatai/.local/share/nvim/mason/packages/python-lsp-server/venv/bin/python failed with exit code 1 and signal 0.
Installed (2)
✓ clangd
✓ lua-language-server lua_ls
重新在常规环境中安装正常,上述问题没有再现
ruby-lsp安装失败:
Failed (1)
✗ ruby-lsp
▼ Displaying full log
ERROR: Error installing ruby-lsp:
sorbet-runtime requires Ruby version >= 2.7.0. The current ruby version is 2.6.10.21
spawn: gem failed with exit code 1 and signal 0.
这个报错是因为macOS系统自带的ruby版本过低导致的,需要通过 ruby install ruby
安装社区最新版本,然后配置好环境 PATH
变量使得默认使用 Homebrew 提供的最新版本ruby就能解决
进一步安装和设置
我现在更换了一个思路,采用物理主机精简安装,而将整个开发和部署环境迁移到 Colima 中,构建一个标准化可移植的类似 Docker 运行环境。由于 Linux 环境更接近服务器后端,可以构建 Kubernetes 等模拟环境,所以也会把日常开发直接运行在相同的环境中。
通过 Homebrew 安装
colima
:
这里如果是在旧版本macOS上安装,其实会遇到不少问题,例如 Homebrew 安装 openssl 需要绕过openssl安装过程中不能通过test的问题。另外, brew install qemu
也遇到一个 cmake
版本过低问题。 但是,我检查 homebrew 实际上已经安装了 /usr/loca/bin/cmake
版本是 4.0.1
这个问题似乎有点类似 VDT Configuration Errors (Mac OS 15.4) ,似乎有多个项目兼容cmake 4.0有问题。果然,在snappy的github项目上,已经有人提出了issue: Require Update to CMakeLists.txt for source build due to new CMake 4.0(+) requirements #204 ,这个修复是在 snappy 1.2.2 ,但是目前 homebrew-core/snappy 1.2.2 #216761 还阻塞没有合并,所以当前安装的是 snappy 1.2.1 存在这个报错
可以参考 Homebrew Formulae: snappy 当前确实是 1.2.1 版本( snappy 官方 1.2.2 是3月26日发布,我当前在5月2日安装可以看到homebrew还停留在1.2.1)
警告
colima安装需要使用 配置Go程序代理服务器 配置来绕过GFW阻塞
然后自己构建 Colima镜像
debian-dev
镜像