Gem "Malformed Version Number String"
Gem "Malformed Version Number String"
我正在构建 gem。我刚刚布置了基本的项目结构,并尝试使用 gem build my_gem.gemspec
构建它,效果很好。然后我用 gem install My\ Gem-0.0.1.gem
安装它,它看起来仍然运行良好。然后我尝试 运行 irb
我得到了这个:
/Users//.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/version.rb:206:in `initialize': Malformed version number string on (ArgumentError)
我尝试进行了一些更改并保存了它们。我运行gem build my_gem.gemspec
。同样的错误。
所有 irb
、rails
和 gem
子命令都在生成一个堆栈跟踪,其位于顶部。我做了什么来破坏所有这些命令,我该如何撤销它?
您应该手动删除您的 gem:
cd $GEM_HOME
find . -path \*my_gem\*
如果一切正常(即没有与您的 gem 无关的文件):
find . -path \*my_gem\* -delete
在再次安装 gem 之前,请确保您在 .gemspec
中指定了 version
。
UPD.
寻找gem残基的其他位置:
~/.rvm/gems/ruby-<version>@global
~/.rvm/gems/ruby-<version>
/System/Library/Frameworks/Ruby.framework/
# look for "GEM PATHS" section
gem env
# rbenv paths
~/.rbenv/versions
~/.gem/
UPD2
问题解决了!采取的步骤:
这显示了无法加载的特定 Rubygems 可执行文件的确切位置:
rbenv which gem
# => /Users/<username>/.rbenv/versions/2.2.2/bin/gem
然后发现在2.2.2
目录下有cache
、doc
和specifications
目录,里面都有一个文件或子目录有残差破碎的 gem。全部删除问题解决了。
(2016-5-24)
我今天解决了这个问题。
我正在尝试学习如何编写 gem。然后导致这个问题。
我的猜测是因为我的 gem 的名字包含 whitespace: "hola 1c7"
并且gem不告诉你如何解决这个问题,这很烦人
你应该去:
/usr/local/lib/ruby/gems/2.3.0/specifications
删除 xxx.gemspec
就我而言,我的 gem 的名字是 "hola 1c7"
所以我删除了 "hola 1c7-0.1.2.gemspec"
我认为是 space 导致问题。
如果这不起作用,
尝试在 /usr/local/lib/ruby/gems/
中搜索您 gem 的名字
并删除所有你能找到的文件,
就我而言,首先删除
hola 1c7.1.3.2.gem
来自 /usr/local/lib/ruby/gems/2.3.0/cache
所以命令是:
/usr/local/lib/ruby/gems/2.3.0/cache$ sudo rm -rf hola\ 1c7-1.3.2.gem
然后
/usr/local/lib/ruby/gems/2.3.0/gems$ sudo rm -rf hola\ 1c7-1.3.2/
我的Ruby版本:Ruby2.3.0
我的 Linux 版本:Ubuntu 16.04 LTS
我找不到参考路径中的文件,也找不到此 post 中的一些其他建议路径。对我有帮助的是首先注释掉第 201 行 version.rb 文件中引发的错误。然后使用 GEM PATH 目录使用 $ gem env
查找引用了的路径gem。确保从 doc、cache 和 specifications 文件夹中删除所有内容。这终于解决了我的问题。
我正在构建 gem。我刚刚布置了基本的项目结构,并尝试使用 gem build my_gem.gemspec
构建它,效果很好。然后我用 gem install My\ Gem-0.0.1.gem
安装它,它看起来仍然运行良好。然后我尝试 运行 irb
我得到了这个:
/Users//.rbenv/versions/2.2.2/lib/ruby/2.2.0/rubygems/version.rb:206:in `initialize': Malformed version number string on (ArgumentError)
我尝试进行了一些更改并保存了它们。我运行gem build my_gem.gemspec
。同样的错误。
所有 irb
、rails
和 gem
子命令都在生成一个堆栈跟踪,其位于顶部。我做了什么来破坏所有这些命令,我该如何撤销它?
您应该手动删除您的 gem:
cd $GEM_HOME
find . -path \*my_gem\*
如果一切正常(即没有与您的 gem 无关的文件):
find . -path \*my_gem\* -delete
在再次安装 gem 之前,请确保您在 .gemspec
中指定了 version
。
UPD.
寻找gem残基的其他位置:
~/.rvm/gems/ruby-<version>@global
~/.rvm/gems/ruby-<version>
/System/Library/Frameworks/Ruby.framework/
# look for "GEM PATHS" section
gem env
# rbenv paths
~/.rbenv/versions
~/.gem/
UPD2
问题解决了!采取的步骤:
这显示了无法加载的特定 Rubygems 可执行文件的确切位置:
rbenv which gem
# => /Users/<username>/.rbenv/versions/2.2.2/bin/gem
然后发现在2.2.2
目录下有cache
、doc
和specifications
目录,里面都有一个文件或子目录有残差破碎的 gem。全部删除问题解决了。
(2016-5-24)
我今天解决了这个问题。
我正在尝试学习如何编写 gem。然后导致这个问题。
我的猜测是因为我的 gem 的名字包含 whitespace: "hola 1c7"
并且gem不告诉你如何解决这个问题,这很烦人
你应该去:
/usr/local/lib/ruby/gems/2.3.0/specifications
删除 xxx.gemspec
就我而言,我的 gem 的名字是 "hola 1c7"
所以我删除了 "hola 1c7-0.1.2.gemspec"
我认为是 space 导致问题。
如果这不起作用,
尝试在 /usr/local/lib/ruby/gems/
中搜索您 gem 的名字
并删除所有你能找到的文件,
就我而言,首先删除
hola 1c7.1.3.2.gem
来自 /usr/local/lib/ruby/gems/2.3.0/cache
所以命令是:
/usr/local/lib/ruby/gems/2.3.0/cache$ sudo rm -rf hola\ 1c7-1.3.2.gem
然后
/usr/local/lib/ruby/gems/2.3.0/gems$ sudo rm -rf hola\ 1c7-1.3.2/
我的Ruby版本:Ruby2.3.0
我的 Linux 版本:Ubuntu 16.04 LTS
我找不到参考路径中的文件,也找不到此 post 中的一些其他建议路径。对我有帮助的是首先注释掉第 201 行 version.rb 文件中引发的错误。然后使用 GEM PATH 目录使用 $ gem env
查找引用了的路径gem。确保从 doc、cache 和 specifications 文件夹中删除所有内容。这终于解决了我的问题。