我想我已经把自己逼到了一个角落,试图覆盖默认的 Ruby 安装,以便我可以安装 Jekyll。
这是一个粗略的时间表:
jekyll build
并得到jekyll not found
gem install jekyll
重新安装 Jekyll 并得到Successfully installed jekyll-4.3.3
1 gem installed
which jekyll
检查安装并得到 jekyll not found
gem uninstall jekyll
、sudo gem clean system
、gem install jekyll --no-document
which jekyll
并再次得到jekyll not found
。gem list
中有 Jekyll 项目,Gemini 建议我可能存在环境变量问题,并告诉我通过在 .zshrc 文件中添加像 export PATH="$PATH:/path/to/jekyll/bin"
这样的行来修复它。我尝试通过查找带有 gem path
的路径来做到这一点,但没有 Jekyll gem 路径。Setting up your shell with `rbenv init zsh' ...
writing ~/.zprofile: now configured for rbenv.
我使用的是一台相当新的笔记本电脑,所以我正在考虑重置为出厂设置,因为这看起来相当棘手,但我对 Ruby 和 Jekyll 是全新的,所以我在这里发帖看看是否有任何不那么激烈的解决方案。 Mac 上预装的 Ruby 似乎是一个巨大的痛苦!
别担心,你真的不需要重置任何东西!您说得对,内置 Ruby 很麻烦,Homebrew Ruby 也是如此。当我开始时,我遇到了最神秘的错误,它们让我困惑了好几天!
rbenv
这样的版本管理器是个好主意!我个人现在真的很喜欢mise
。它是一个多语言版本管理器,因此它基本上可以处理任何语言,包括 Ruby。 (asdf
是另一个非常流行的多语言版本管理器,但我最近切换到mise
,因为我更喜欢它的 CLI,而且感觉更快。)您可以使用 Homebrew 安装 mise
:brew install mise
。
下一个元素是 zsh 的初始化文件,正如评论中所讨论的。这些可能会有点令人困惑,但是这里列出了何时读取和执行哪些文件。我将大部分配置保留在 .zshrc
中,但请注意,它仅针对交互式 zsh 会话执行。这些是我的
.zshrc
文件中的两行相关内容:
eval "$(/opt/homebrew/bin/brew shellenv)"
eval "$(mise activate zsh)"
由于 mise 是随 Homebrew 一起安装的,因此在调用 mise activate zsh
之前添加 Homebrew 路径非常重要,否则将无法找到
mise
可执行文件。将这些行添加到 .zshrc
(或
.zprofile
或列表中的任何相关文件)后,请确保刷新 shell 会话以获取更改:您只需关闭终端窗口并打开新进程,或者您可以运行 exec zsh
(这会将当前 zsh
进程替换为新进程)。您可以通过运行 mise
来确保 $PATH
在您的 whence mise
中。从那里,使用mise非常简单:cd
到您的项目目录并运行
mise use ruby@latest
(或者,更好的是,mise use [email protected]
或您想要的任何版本,这样您的版本就被固定了)。 mise 将安装 Ruby 并更新 $PATH
以使用指定版本。您可以通过运行 whence -a ruby
来检查这一点;你应该得到这样的东西:$ whence -a ruby
/Users/you/.local/share/mise/installs/ruby/latest/bin/ruby
/usr/bin/ruby
现在你的mise安装的Ruby就在系统Ruby前面了,一切都准备好了!
希望这至少有一点帮助,抱歉这么长!