[英]Rails: How can I remove default version of bundler?
我嘗試更改默認捆綁版本,但它已更新為 2 個默認版本。 如何修改為單一默認值?
$ gem list bundler
*** LOCAL GEMS ***
bundler (2.0.1, default: 1.16.6, default: 1.16.2)
如果我執行 gem uninstall 不刪除默認值,
$ gem uninstall bundler
Successfully uninstalled bundler-2.0.1
$ gem list bundle
*** LOCAL GEMS ***
bundler (default: 1.16.6, default: 1.16.2)
如何將(如下所示)默認設置為單一版本?
bundler (2.0.1, default: 1.16.6)
我遇到了同樣的問題,但版本較新
$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 2.1.4, default: 2.1.2)
但是按照這篇文章的指示安裝了兩個默認版本的 rake - 如何刪除一個允許我刪除一個。
您必須刪除與要刪除的默認 gem 對應的.gemspec文件。
所以首先,找到這些文件的位置。
# I'm running RVM to manage my Ruby versions
~/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/specifications/default/
-rw-r--r-- 1 myuser staff 10731 Dec 26 17:22 bundler-2.1.2.gemspec
-rw-r--r-- 1 myuser staff 15134 Jan 7 17:30 bundler-2.1.4.gemspec
刪除你不需要的那個。
$ rm ~/.rvm/rubies/ruby-2.7.0/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec
然后安裝(或重新安裝)要設置為默認值的 gem。
$ gem install bundler:2.1.4 --default
Successfully installed bundler-2.1.4 as a default gem
最后,您將只安裝您想要的版本。
$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 2.1.4)
對於那些使用 rbenv 的人,假設您有兩個默認版本
$ gem list | grep bundler
bundler (default: 2.1.4, default: 1.17.2)
檢查你的 gem 安裝路徑
$ gem environment
RubyGems Environment:
.
.
- INSTALLATION DIRECTORY: /home/yohanes/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0
.
轉到specifications/default
目錄並查找 bundlers gemspec
$ cd /home/yohanes/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/specifications/default
$ ls -lah
total 200K
drwxr-xr-x 2 yohanes yohanes 4,0K Jun 1 10:05 .
drwxr-xr-x 3 yohanes yohanes 20K Jun 1 10:05 ..
.
.
-rw-r--r-- 1 yohanes yohanes 16K Jun 1 10:05 bundler-1.17.2.gemspec
-rw-r--r-- 1 yohanes yohanes 15K Jun 1 09:31 bundler-2.1.4.gemspec
.
.
刪除需要刪除的版本
$ rm bundler-2.1.4.gemspec
再檢查一遍
$ gem list | grep bundler
bundler (default: 1.17.2)
$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 1.17.2)
但是,如果您檢查捆綁版本,您仍然會默認獲得已刪除的版本
$ bundler -v
Bundler version 2.1.4
所以我們必須通過重新安裝所需的 bundler 版本來覆蓋它
$ gem install bundler --version '1.17.2'
Successfully installed bundler-1.17.2
Parsing documentation for bundler-1.17.2
Done installing documentation for bundler after 1 seconds
1 gem installed
然后,如果您再次檢查,它將顯示您所需的版本
$ bundle -v
Bundler version 1.17.2
gem update --system
這個命令對我有用
運行后試試這個gem list bundler
有問題的默認 .gemspec 的 rbenv 路徑應該如下所示。
/Users/yourusername/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec
來晚了,但也許我的發現可能對某人有所幫助:
在 Ruby 2.6 bundler 成為默認 gem 之后,這意味着對於每個 ruby 版本都有一個默認的 bundler ,並且 bundler gem 帶有一個可執行的bundle
命令。
您無法刪除此 gem,更新默認 gem 的唯一方法是使用gem update --system [<version>]
更新 RubyGems 系統
我在刪除安裝路徑中的文件以強制使用默認 gem 時遇到了很多問題,我不推薦但 YMMV。 為了讓 ruby 2.6.x 具有 2.x 默認和工作捆綁器,我必須從干凈的 ruby 安裝開始並將 Rubygems 更新到它具有項目所需的捆綁器版本的點。
我觀察到有時默認 gems 不存在於gem environment
命令的輸出中提供的INSTALLATION DIRECTORY
路徑中。
我在安裝了Ruby v2.7.0
Alpine
OS 中發現了這個問題。
在這種情況下,您可以使用gem list -d <GEM_NAME> -v <VERSION>
命令來獲取默認gem
的安裝位置。
/ # gem list -d rexml -v 3.2.3
*** LOCAL GEMS ***
rexml (3.2.3)
Author: Kouhei Sutou
Homepage: https://github.com/ruby/rexml
License: BSD-2-Clause
Installed at (default): /usr/lib/ruby/gems/2.7.0
An XML toolkit for Ruby
要刪除默認版本,您可以使用上面輸出中顯示的/usr/lib/ruby/gems/2.7.0
。 刪除命令將是:
rm -rf <INSTALLED_AT_PATH>/specifications/default/<GEM_NAME>-<VERSION>.gemspec
例如:
rm -rf /usr/lib/ruby/gems/2.7.0/specifications/default/rexml-3.2.3.gemspec
TLDR:卸載 ruby 然后重新安裝它。
細節:
對於使用rbenv
其他人已經用盡了其他想法,以下對我rbenv
:
cd /tmp
)rbenv uninstall 2.6.6
)rbenv install 2.6.6
)cd -
)gem install bundler:2.1.4
)在您的項目目錄中,您將看到如下內容:
-bash> gem list | grep bundle
bundler (2.1.4, default: 1.17.2)
在您的項目目錄(例如cd /tmp
)之外,您將看到如下內容:
-bash> gem list | grep bundle
bundler (default: 1.17.2)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.