我尝试更改默认捆绑软件版本,但它已更新为2个默认版本。如何修改为单个默认值?
$ gem list bundler
*** LOCAL GEMS ***
bundler (2.0.1, default: 1.16.6, default: 1.16.2)
如果我卸载gem不会删除默认值,
$ 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)
答案 0 :(得分:18)
我遇到了同样的问题,但是版本更新了
$ gem list bundler
*** LOCAL GEMS ***
bundler (default: 2.1.4, default: 2.1.2)
但是在遵循了这篇帖子的指示Two default versions of rake installed - how to delete one之后,我允许我删除了一个帖子。
您必须删除与要删除的默认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)
答案 1 :(得分:5)
对于那些使用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
目录并查找捆绑包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
因此,我们必须通过重新安装所需的捆绑器版本来覆盖它
$ 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
答案 2 :(得分:4)
gem update --system
此命令对我有用
运行后,尝试使用此gem list bundler
答案 3 :(得分:1)
违规的默认.gemspec的rbenv路径应如下所示。
/Users/yourusername/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/specifications/default/bundler-2.1.2.gemspec
答案 4 :(得分:0)
TLDR:卸载 ruby,然后重新安装。
详情:
对于使用 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)
答案 5 :(得分:0)
参加聚会迟到了,但也许我的发现可能对某人有所帮助:
在 Ruby 2.6 bundler 成为默认 gem 之后,这意味着 for each ruby version there's a default bundler,并且 bundler gem 带有一个可执行的 bundle
命令。
您无法删除此 gem,更新默认 gem 的唯一方法是使用 gem update --system [<version>]
更新 RubyGems 系统
我在删除安装路径中的文件以强制使用默认 gem 时遇到了很多问题,我不推荐但 YMMV。为了让 ruby 2.6.x 具有 2.x 默认和工作捆绑器,我必须从干净的 ruby 安装开始,并将 Rubygems 更新到项目所需的捆绑器版本。
答案 6 :(得分:0)
我发现有时在 INSTALLATION DIRECTORY
命令的输出中提供的 gem environment
路径中不存在默认 gem。
我在安装了 Alpine
的 Ruby v2.7.0
操作系统中发现了这个问题。
在这种情况下,您可以使用 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