代码之家  ›  专栏  ›  技术社区  ›  0x26res

如何在Ubuntu中使用gems?

  •  76
  • 0x26res  · 技术社区  · 16 年前

    我最近升级到Ubuntu9.04,在使用gems时遇到问题。 我使用apt-get安装了ruby、rubygems和rails。 这个 rails 命令有效。

    然后我安装了Capistrano和其他宝石,如Heroku。 为此,我使用了以下命令:

    sudo gem install XXX
    

    当我想使用 cap 命令它不工作:

    bash: cap: command not found
    

    其他gem命令也是如此。

    我有什么特别的事情要做吗,以便gem命令可以工作?

    5 回复  |  直到 12 年前
        1
  •  138
  •   Community CDub    8 年前

    我的宝石在哪里?

    您可以使用 gem environment 命令。例如:

    chris@chris-laptop:~$ gem environment
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.2
    
      - RUBY VERSION: 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
      - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
      - RUBY EXECUTABLE: /usr/bin/ruby1.8
      - EXECUTABLE DIRECTORY: /usr/bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86-linux
      - GEM PATHS:
         - /usr/lib/ruby/gems/1.8
         - /home/chris/.gem/ruby/1.8
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
    

    如果你看“宝石路径:”部分,你可以看到宝石可以存储在我笔记本电脑的两个地方: /usr/lib/ruby/gems/1.8 或者在 .gem 我的主目录中的目录。

    您还可以看到可执行文件存储在可执行目录中,在本例中是 /usr/bin .

    因为 /UR/bin 在我的道路上这让我跑 cap , merb , rails 等。

    更新您的路径

    如果由于某种原因,可执行目录不在您的路径上(例如,如果它是/var/lib/gems/1.8/bin),那么您需要更新路径变量。

    假设您使用的是bash shell。通过在shell提示下键入以下内容,您可以为当前会话快速执行此操作;让我们假设您要添加 /var/lib/gems/1.8/bin 走向道路:

    export PATH=$PATH:/var/lib/gems/1.8/bin
    

    然后按回车键。它将新目录追加到当前路径的末尾。注意中间的冒号 $PATH /var/lib/gems/1.8/箱

    要设置所有会话的值,您需要编辑 .profile .bashrc 文件并将同一行添加到文件结尾。我通常编辑我的 BASHC 除了我一直做的事情以外,没有其他理由归档。完成后,保存文件,然后通过键入以下内容刷新环境:

    bash
    

    在shell提示下。这将导致 BASHC 重读。

    在任何时候,您都可以检查 $路径 通过打字

    echo $PATH
    

    在shell提示下。

    这是我自己的一台服务器的一个示例,我的用户名是“Chris”,机器名是“Chris Laptop”:

    chris@chris-laptop:~$ 
    chris@chris-laptop:~$ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    chris@chris-laptop:~$ 
    chris@chris-laptop:~$ export PATH=$PATH:/var/lib/gems/1.8/bin
    chris@chris-laptop:~$ 
    chris@chris-laptop:~$ echo $PATH
    /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/var/lib/gems/1.8/bin
    chris@chris-laptop:~$ 
    

    我的宝石装不下了!

    Ruby gems won't load even though installed “使用多个不同版本的Ruby突出显示了一个常见问题;有时gem环境和gem路径不同步:

    rb(main):003:0> Gem.path
    
    => ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
    irb(main):004:0> exit
    

    这里的任何Ruby进程都只在一个地方寻找它的宝石。

    :~/$ gem env
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.7
      - RUBY VERSION: 1.9.1 (2009-05-12 patchlevel 129) [x86_64-linux]
      - INSTALLATION DIRECTORY: /opt/ruby1.9/lib/ruby/gems/1.9.1
      - RUBY EXECUTABLE: /opt/ruby1.9/bin/ruby1.9
      - EXECUTABLE DIRECTORY: /opt/ruby1.9/bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86_64-linux
      - GEM PATHS:
         - /opt/ruby1.9/lib/ruby/gems/1.9.1
         - /home/mark/.gem/ruby/1.9.1
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
         - http://rubygems.org/
    

    仔细查看gem环境的输出:

      - GEM PATHS:
         - /opt/ruby1.9/lib/ruby/gems/1.9.1
    

    这与gem.path返回的路径不同:

    ["/opt/ruby1.9/lib/ruby1.9/gems/1.9.1"]
    

    很难说到底是什么造成的 lib/ruby 改为 lib/ruby1.9 但开发人员很可能正在使用多个Ruby版本。快速 mv ln 会解决问题的。

    如果您确实需要使用多个Ruby版本,那么您真的应该使用 rvm .

        2
  •  5
  •   Adam Greenhall    13 年前

    正如@chris所指出的,您需要将gems环境添加到您的路径中。您可以通过以下方式完成此操作:

    echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc
    
        3
  •  3
  •   victor hugo    16 年前

    宝石所在的文件夹 存储 必须在你的道路上,例如我的是:

    /主页/victor/.gem/ruby/1.8/bin

    通过键入检查路径

    echo $PATH
    
        4
  •  1
  •   Rafael Souza    16 年前

    现在在Ubuntu9.04安装rubygems时,我发现了这个问题。我注意到在“gem环境”中,可执行目录是“/var/lib/gems/1.8/bin”,而不是“/usr/bin”…这是RubyGems或Ubuntu 9.04的问题??

    我遇到的解决方案是在$path中添加“/var/lib/gems/1.8/bin”,这样做: 导出路径=$path:/var/lib/gems/1.8/bin 但它没有被保存…如何保存路径?

    谢谢。。。

    resolvi:colowei o export path=$path:/var/lib/gems/1.8/bin no~/.bashrc!= ]

        5
  •  0
  •   Sohan    12 年前

    mkmf是ruby1.9.1-dev包的一部分。这个包包含Ruby1.9.1扩展库所需的头文件。您需要通过执行以下操作安装ruby1.9.1-dev包:

    sudo apt get安装ruby1.9.1-dev