宝石我在linux上写的不是可执行文件,但似乎可以在windows上运行

时间:2013-08-02 15:47:19

标签: linux rubygems

我在Windows上写了一个名为“getDartPortalAndInitBuild”的gem,以从我们的神器中获取一些依赖项。当我进行rake安装时,宝石在窗户上工作得很漂亮。我使用geminabox将它上传到我们的gem存储库,工作正常。

然后我以root身份将它安装在我们的linux盒子上

gem install getDartPortalAndInitBuild

安装似乎正常。当我输入getDartPortalAndInitBuild时,它会显示“找不到命令”。我找到了gem的安装位置,并注意到bin文件夹(包含可执行文件的文件夹)丢失了。我做了一个,并再次创建了可执行文件。我chmodded该文件,并试图执行它。同样的问题。我检查了我的/ usr / bin文件夹,并且没有getDartPortalAndInitBuild。我试图在gem上进行rake安装但是,它仍然没有添加可执行文件。最后,我变得沮丧,并将可执行文件复制到bin中。那确实执行了文件,但我得到了`require':没有这样的文件要加载 - getDartPortalAndInitBuild。

这是我的宝石环境:

  • RUBYGEMS版本:1.3.7
  • RUBY VERSION:1.8.7(2011-06-30 patchlevel 352)[x86_64-linux]
  • 安装目录:/usr/lib/ruby/gems/1.8
  • RUBY EXECUTABLE:/ usr / bin / ruby​​
  • EXECUTABLE目录:/ usr / bin
  • RUBYGEMS PLATFORMS:
    • 红宝石
    • x86_64的Linux的
  • GEM路径:
    • /usr/lib/ruby/gems/1.8
    • /root/.gem/ruby/1.8
  • GEM配置:
    • :update_sources =>真
    • :verbose =>真
    • :benchmark =>假
    • :backtrace =>假
    • :bulk_threshold => 1000

这是我的$ PATH

/sbin:/bin:/usr/sbin:/usr/bin:/usr/lib/ruby/gems/1.8:/root/.gem/ruby/1.8:/usr/lib/ruby/gems/1.8/bin:/root/.gem/ruby/1.8/bin:/usr/bin/ruby

这是完整的gemspec

# coding: utf-8
lib = File.expand_path('../lib', __FILE__)
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
require 'getDartPortalAndInitBuild/version'

Gem::Specification.new do |spec|
  spec.name          = "getDartPortalAndInitBuild"
  spec.version       = GetDartPortalAndInitBuild::VERSION
  spec.authors       = ["Tyler MacMillan"]
  spec.email         = ["tyler.macmillan@recondotech.com"]
  spec.description   = "Gets risvc, dartsvc, entrypoint, rcp, dataadmin, and user management and initializes the install script"
  spec.summary       = "Grab wars and build portal for iAT server"
  spec.homepage      = ""
  spec.license       = "MIT"

  spec.files         = `git ls-files`.lines.map { |s| s.chomp }
  spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
  spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
  spec.require_paths = ["lib"]

  spec.add_development_dependency "bundler", "~> 1.3"
  spec.add_development_dependency "rake"
end

这是我的可执行文件的相关部分(名称为getDartPortalAndInitBuild):

#!/usr/bin/env ruby

require 'getDartPortalAndInitBuild'

如何让我的宝石正确安装?我的道路似乎是正确的,而且一切都在Windows上运行良好。提前感谢您的帮助,请询问我是否提供了足够的信息。

更新:

值得注意的是,除非我进行rake安装,否则可执行文件在Windows上也不起作用。

1 个答案:

答案 0 :(得分:0)

我替换了

spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }

spec.executables = ["getDartPortalAndInitBuild"]

现在它起作用了。我不确定为什么rake安装工作正常,但确实如此。