rbenv:Ruby 多版本管理利器

来源:https://www.cnblogs.com/liam-i/p/18209426
-Advertisement-
Play Games

在 Ruby 開發的世界中,經常需要面對不同項目使用不同 Ruby 版本的情況。這時,一個高效、靈活且易於使用的 Ruby 版本管理工具就顯得尤為重要。 rbenv 正是這樣一個工具,它允許開發者在同一臺電腦上輕鬆安裝、切換和管理多個 Ruby 版本。本文將詳細介紹 rbenv 的安裝、基本使用以... ...


在 Ruby 開發的世界中,經常需要面對不同項目使用不同 Ruby 版本的情況。這時,一個高效、靈活且易於使用的 Ruby 版本管理工具就顯得尤為重要。

rbenv 正是這樣一個工具,它允許開發者在同一臺電腦上輕鬆安裝、切換和管理多個 Ruby 版本。本文將詳細介紹 rbenv 的安裝、基本使用以及一些高級特性,幫助你更好地掌握這個強大的工具。

rbenv 簡介

rbenv 是一個輕量級的 Ruby 版本管理工具,通過修改環境變數來控制當前使用的 Ruby 版本。它不會幹擾系統自帶的 Ruby 環境,而是為用戶提供一個隔離的 Ruby 運行環境。這意味著你可以根據項目需求,輕鬆切換到所需的 Ruby 版本,確保項目的相容性和運行穩定性。

安裝 rbenv

Homebrew 安裝

  1. 在 macOS (或 Linux) 系統上,建議使用 Homebrew 安裝 rbenv。詳細教程

    brew install rbenv ruby-build
    

    Homebrew 詳細教程可查看:

  2. 在 shell 中載入 rbenv

    運行下麵命令,並按照列印的說明進行操作:

    rbenv init
    

    例如,下麵這個示例,我們運行 rbenv init 後,提示將 eval "$(rbenv init - zsh)" 添加到 ~/.zshrc 文件中,才能自動載入 rbenv。

    $ rbenv init
    
    # Load rbenv automatically by appending
    # the following to ~/.zshrc:
    
    eval "$(rbenv init - zsh)"
    
  3. 執行 source ~/.zshrc 或者關閉終端視窗並打開一個新視窗,讓我們的更改生效。

克隆 Git 倉庫安裝

對於更自動化的安裝,可以使用 rbenv-installer。如果更喜歡手動方法安裝,請按照以下步驟操作。

  1. 將 rbenv 克隆到 ~/.rbenv:

    git clone https://github.com/rbenv/rbenv.git ~/.rbenv
    
  2. 配置 shell 來載入 rbenv: 詳細教程

    • 對於 bash:

      在 macOS (或 Linux) 系統上,bash 通常通過以下方式配置 ~/.bash_profile:

      echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
      
    • 對於 Zsh:

      echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
      

    如果你好奇,請查看此處以瞭解 init 的作用

  3. 執行 source ~/.zshrc 或者關閉終端視窗並打開一個新視窗,讓我們的更改生效。

卸載 rbenv

rbenv 的簡單性使得臨時禁用或從系統中卸載它變得很容易。詳細教程

  1. 禁用 rbenv 管理你的 Ruby 版本,只需從 shell 啟動配置中註釋或刪除 rbenv init 行即可。這將從 PATH 中刪除 rbenv shims 目錄,並且將以後的使用(例如 ruby)將執行系統版本 Ruby,完全繞過 rbenv。

    禁用後,rbenv 仍可在命令行上訪問,但你的 Ruby 應用程式不會受到版本切換的影響。

  2. 要完全卸載 rbenv,請執行步驟(1),然後刪除 rbenv 根目錄。這將刪除安裝在 `rbenv root`/versions/ 下的所有 Ruby 版本:

    rm -rf "$(rbenv root)"
    

    如果你已使用包管理器安裝了 rbenv,則最後一步執行 rbenv 包刪除:

    • Homebrew:brew uninstall rbenv
    • Debian、Ubuntu 及其衍生版本:sudo apt purge rbenv
    • Archlinux 及其衍生版本:sudo pacman -R rbenv

rbenv 基本使用

安裝 Ruby 版本

rbenv install 命令不隨 rbenv 一起提供,而是由 ruby​​-build 插件提供。

在嘗試安裝 Ruby 之前,請檢查你的構建環境是否具有必要的工具和庫。然後:

rbenv install -l     # 列出最新的穩定版本
rbenv install -L     # 列出所有本地版本
rbenv install 3.3.0  # 安裝 Ruby 版本

要對 BUILD FAILED 場景進行故障排除,請查看 ruby-build 討論部分

如果 rbenv install 命令找不到,你可以將 ruby-build 作為插件安裝:

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

設置 Ruby 版本

安裝完後,需要設置 Ruby 版本以完成安裝並開始使用 Ruby,你可以使用 rbenv versions 命令查看已安裝的版本列表。要切換/設置到特定版本,請運行:

rbenv global 3.3.0   # 設置本機的預設 Ruby 版本,你可以替換為你已安裝的版本號
# 或:
rbenv local 3.3.0    # 設置該目錄的 Ruby 版本,你可以替換為你已安裝的版本號
# 或:
rbenv shell 3.3.0   # shell 環境,切換到 Ruby 3.3.0 版本,你可以替換為你已安裝的版本號

除了 rbenv install 命令之外,你還可以手動下載並編譯 Ruby 作為 ~/.rbenv/versions 的子目錄。該目錄中的內容也可以是安裝在文件系統其他位置的 Ruby 版本的符號鏈接。

安裝 Ruby gem

例如,使用 rbenv local 3.3.0 為你的項目選擇 Ruby 版本。然後,像平常一樣繼續安裝 gems:

gem install bundler

你不應該使用 sudo 來安裝 gem。通常,Ruby 版本將安裝在你的主目錄下,因此你的用戶可以寫入。如果你在安裝 gems 時收到“你沒有寫入許可權”錯誤,則很可能你的“系統” Ruby 版本仍然是全局預設版本。使用 rbenv global <version> 更改它,然後重試。

使用 gem env 檢查 gem 的安裝位置:

gem env home
# => ~/.rbenv/versions/<version>/lib/ruby/gems/...

卸載 Ruby 版本

隨著時間的推移,你安裝的 Ruby 版本將累積在 ~/.rbenv/versions 目錄中。

要刪除舊的 Ruby 版本,只需 rm -rf 你要刪除的版本的目錄即可。你可以使用 rbenv prefix 命令查找特定 Ruby 版本的目錄,例如 rbenv prefix 3.3.0

ruby-build 插件提供了 rbenv uninstall 命令來自動執行刪除過程。

rbenv uninstall 3.3.0  # 自動執行刪除 Ruby 版本

常用命令

你需要瞭解的主要 rbenv 命令是。詳細教程

rbenv versions

列出 rbenv 已知的所有 Ruby 版本,併在當前活動版本旁邊顯示一個星號。

$ rbenv versions
  system
  2.7.4
* 3.3.0 (set by /Users/liam/.rbenv/version)
  jruby-9.4.6.0
  mruby-3.3.0
  truffleruby-24.0.1

rbenv version

顯示當前活動的 Ruby 版本,以及有關其設置方式的信息。

$ rbenv version
3.3.0 (set by /Users/liam/.rbenv/version)

rbenv local

通過將版本名稱寫入當前目錄中的 .ruby-version 文件來設置本地應用程式特定的 Ruby 版本。此版本覆蓋全局版本,並且可以通過設置 RBENV_VERSION 環境變數或使用 rbenv shell 命令來覆蓋自身。

rbenv local 3.1.2

當不帶版本號運行時,rbenv local 會報告當前配置的本地版本。你還可以取消設置本地版本:

rbenv local --unset

rbenv global

通過將版本名稱寫入 ~/.rbenv/version 文件來設置要在所有 shell 中使用的 Ruby 全局版本。此版本可以通過特定於應用程式的 .ruby-version 文件或通過設置 RBENV_VERSION 環境變數來覆蓋。

rbenv global 3.1.2

特殊版本名稱 system 告訴 rbenv 使用系統 Ruby(通過搜索 $PATH 來檢測)。

當沒有版本號運行時,rbenv global 報告當前配置的全局版本。

rbenv shell

通過在 shell 中設置 RBENV_VERSION 環境變數來設置特定於 shell 的 Ruby 版本。此版本覆蓋特定於應用程式的版本和全局版本。

rbenv shell jruby-9.4.6.0

當沒有版本號運行時,rbenv shell 會報告 RBENV_VERSION 的當前值。你還可以取消設置 shell 版本:

rbenv shell --unset

請註意,你需要啟用 rbenv 的 shell 集成(安裝說明的步驟 3)才能使用此命令。如果你不想使用 shell 集成,你可以簡單地自己設置 RBENV_VERSION 變數:

export RBENV_VERSION=jruby-9.4.6.0

rbenv rehash

為 rbenv 已知的所有 Ruby 可執行文件安裝 shims (~/.rbenv/versions/*/bin/*)。通常你不需要運行此命令,因為它會在安裝 gems 後自動運行。

rbenv rehash

rbenv which

顯示給定可執行文件的,的完整路徑。

$ rbenv which irb
/Users/liam/.rbenv/versions/3.3.0/bin/irb

rbenv whence

列出包含指定可執行文件名稱的所有 Ruby 版本。

$ rbenv whence rackup
3.3.0
jruby-9.4.6.0
truffleruby-24.0.1

環境變數

名稱 預設 描述
RBENV_VERSION 指定要使用的 Ruby 版本。另請參閱 rbenv shell
RBENV_ROOT ~/.rbenv 定義 Ruby 版本和 shims 所在的目錄。另請參閱 rbenv root
RBENV_DEBUG 輸出調試信息。例如:rbenv --debug <subcommand>
RBENV_HOOK_PATH 查看 wiki 搜索 rbenv hooks 查看路徑列表
RBENV_DIR $PWD 開始搜索 .ruby-version 文件的目錄

插件支持

rbenv 還支持通過插件來擴展功能。例如,ruby-buildrbenv-vars 插件可以讓你更方便地安裝和管理 Ruby 版本。你可以通過 Homebrew 或直接從 Git 倉庫安裝這些插件,並使用它們來簡化 Ruby 版本的安裝和管理過程。

ruby-build

安裝 ruby-build 插件的命令如下。詳細教程

# 通過 Homebrew 安裝
brew install ruby-build

# 或者通過 Git 安裝
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build

安裝完成後,你可以使用 ruby-build 命令來安裝和管理 Ruby 版本,而無需手動下載和編譯 Ruby 源代碼。

ruby-vars

安裝 rbenv-vars 插件的命令如下。詳細教程

# 通過 Homebrew 安裝
brew install rbenv-vars

# 或者通過 Git 安裝
git clone https://github.com/rbenv/rbenv-vars.git "$(rbenv root)"/plugins/rbenv-vars

安裝完成後,你可以使用 ruby-vars 命令讓你在生成 Ruby 進程之前設置全局和特定於項目的環境變數。

結語

rbenv 是一個功能強大的 Ruby 版本管理工具,它允許開發者在同一臺電腦上輕鬆安裝、切換和管理多個 Ruby 版本。通過使用 rbenv,你可以確保你的項目在正確的 Ruby 環境中運行,從而提高開發效率和代碼質量。

隨著 Ruby 生態系統的不斷發展,rbenv 將繼續成為開發者不可或缺的工具之一。希望本文能幫助你更好地理解和使用 rbenv,為你的 Ruby 開發之旅提供便利!

相關鏈接


訪問博址 liam-i.github.io 獲取更佳閱讀體驗和最新內容。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • node-sass 安裝過程 npm 拉下 node-sass包; 根據node版本和node-sass版本拉取對應的binding.node編譯器,原因是sass的編譯語言比較特殊,需要下載對應版本的編譯器才能編譯;(node scripts/install.js 階段) 如果能拉下binding ...
  • 本文分享自華為雲社區《npm install -g 和 npm install --save-dev 的關係》,作者: SHQ5785。 一、npm install 本地安裝 將安裝包放在 ./node_modules 下(運行 npm 命令時所在的目錄),如果沒有 node_modules 目錄, ...
  • form-create-designer 是基於 @form-create/element-ui實現的表單設計器組件。可以通過拖拽的方式快速創建表單,提高開發者對錶單的開發效率,節省開發者的時間。 ...
  • 正文 4T 硬碟降價了,好心動。雖然只降了 10 塊錢……. 為什麼硬碟這麼貴啊!哼。 櫃面上雜事好多。雖然一天到晚見不到幾個客戶,但雜事就是很多。一個頭兩個大。也不知道從哪兒冒出來的這麼多事。 芒果乾到了!還沒去取,希望好吃 w。 今天真的好睏好睏,感覺從沒這麼困過。早上一睜眼,剛剛好 8:30, ...
  • 大家好,我是R哥。 最近,R哥分享了兩個特別有意思的面試輔導成功案例: 35K*14 薪入職了,這公司只要不裁員,我能一直呆下去。。 幹了 2 年多 Java 外包,終於脫離了! 今天再分享一個振奮人心的面試輔導 case: 這個兄弟空窗期 5 個月,0 Offer,面試一問項目就掛,報名面試輔導, ...
  • 提供靜態內容 配置 NGINX 和 NGINX Plus 以提供靜態內容,使用類型特定的根目錄,檢查文件存在性,併進行性能優化。 本節介紹如何配置 NGINX 和 NGINX Plus 以提供靜態內容,如何定義搜索請求文件的路徑,如何設置索引文件,以及如何調整 NGINX 和 NGINX Plus ...
  • C-10.索引優化與查詢優化 都有那些維度可以進行資料庫調優?簡言之: 索引失效,沒有充分利用到索引 -- 索引建立 關聯查詢太多JOIN(設計缺陷或不得已的需求) -- SQL優化 伺服器調優及各個參數設置(緩衝,線程數等) -- 調整my.cnf 數據過多 -- 分庫分表 關於資料庫調優的知識點 ...
  • 正態分佈(高斯分佈)是重要的概率模型,具有鐘形曲線特征,由均值μ和標準差σ描述。NumPy的`random.normal()`可生成正態分佈隨機數,Seaborn庫方便繪製分佈圖。正態分佈廣泛應用於統計學、機器學習、金融和工程等領域。練習包括生成正態分佈數據、比較不同標準差影響及模擬考試成績計算平均... ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...