本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
AL2023 中的 Ruby
Rubyruby3.2或 ruby3.4)。 Ruby 3.4 也提供 MRI (Matz 的Ruby解譯器) 命名空間二進位 ruby3.4-mri,其參考 的標準 C 型參考實作Ruby。不過,一次只能有一個Ruby版本處於作用中狀態。此作用中版本提供預設目錄和檔案名稱,例如 ruby、gem 或 bundle,將它們指向目前作用中的執行時間。
這是使用替代工具的功能來實現的。請務必記住,預設可執行檔名稱是虛擬的,當指向不同的已安裝Ruby版本時, 可能會隨時變更。此彈性可讓在 shebang 中使用 ruby 的軟體在調用時選取所需的版本。不過,當需要特定版本的 Ruby 時,可以透過呼叫命名空間可執行檔 (例如, ruby3.2或 ruby3.4) 來實現該版本的持久性,這將始終使用指定的執行時間版本。此外,Gem 和 Bundler 工具的命名空間可執行檔,例如 ruby3.2-gem、ruby3.2-bundler、 ruby3.4-gem或 ruby3.4-bundler,一律與對應的Ruby版本相關聯,無論目前作用中的執行時間為何。
Ruby 以數個以 "ruby{MAJOR.MINOR}" 開頭的命名空間套件來分佈。這些套件提供 Gem 套件和套件工具、文件、程式庫等的 Ruby 相容版本。例如,核心 Ruby 3.2 執行期是由 ruby3.2套件提供,它會提取 ruby3.2-rubygems(提供 Gem) 和 ruby3.2-rubygem-bundler(提供 bundle 和 bundler) 做為相依性。
安裝Ruby版本後,搭配工具的項目可能會在替代組態中顯示為 null。這可以透過執行 進行驗證alternatives --display ruby。如果項目顯示為 null,則必須使用 手動註冊alternatives --install。例如,若要註冊 3.4 Ruby 的所有配套工具:
sudo alternatives --install /usr/bin/gem gem /usr/bin/ruby3.4-gem 34 sudo alternatives --install /usr/bin/bundle bundle /usr/bin/ruby3.4-bundle 34 sudo alternatives --install /usr/bin/bundler bundler /usr/bin/ruby3.4-bundler 34 sudo alternatives --install /usr/bin/erb erb /usr/bin/ruby3.4-erb 34 sudo alternatives --install /usr/bin/racc racc /usr/bin/ruby3.4-racc 34 sudo alternatives --install /usr/bin/rdoc rdoc /usr/bin/ruby3.4-rdoc 34 sudo alternatives --install /usr/bin/ri ri /usr/bin/ruby3.4-ri 34
優先順序值 (例如,3.4 為 Ruby 34,3.2 為 Ruby 32) 應與主要 Ruby 替代項目中使用的優先順序相符。註冊後,配套工具將與 Ruby 替代方案一起自動管理。
替代工具提供單一命令以在Ruby版本之間切換。根據預設,替代方案會設定為處於自動模式,這會使用優先順序來判斷目前作用中的Ruby版本。不過,您可以隨時啟用任何已安裝的版本。目前,所有支援的 版本Ruby具有相同的優先順序,這表示將自動啟用第一個安裝的版本。
使用替代方案的一些實用範例
-
檢查針對 設定哪些替代方案
alternatives --list -
檢查 ruby 目前的組態
alternatives --display ruby -
以互動方式變更Ruby版本
alternatives --config ruby -
切換到手動模式並選取特定版本
alternatives --set ruby /usr/bin/ruby{MAJOR.MINOR} -
切換回自動版本選擇模式
alternatives --auto ruby