Câu hỏi Làm thế nào để sử dụng đá quý với Ubuntu?


Gần đây tôi đã nâng cấp lên Ubuntu 9.04 và tôi gặp vấn đề khi sử dụng đá quý. Tôi đã cài đặt Ruby, Rubygems và Rails bằng apt-get. Các rails lệnh không hoạt động.

Sau đó tôi đã cài đặt capistrano và các loại đá quý khác, chẳng hạn như heroku. Để làm điều đó, tôi đã sử dụng lệnh:

sudo gem install XXX

Khi tôi muốn sử dụng cap lệnh nó không hoạt động:

bash: cap: command not found

Nó giống với các lệnh gem khác.

Tôi có một cái gì đó đặc biệt để làm như vậy mà các lệnh đá quý làm việc?


76
2018-05-26 08:55


gốc


câu hỏi này không phù hợp hơn trong superuser.com? - Thiago Diniz
@ThiagoDiniz hoặc trong askubuntu.com? - Eliran Malka


Các câu trả lời:


Đá quý của tôi đâu rồi?

Bạn có thể tìm thấy nơi đá quý của bạn được lưu trữ bằng cách sử dụng gem environment chỉ huy. Ví dụ:

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:

Nếu bạn nhìn vào phần "GEM PATHS:" bạn có thể thấy rằng đá quý có thể được lưu trữ ở hai nơi trên máy tính xách tay của tôi: /usr/lib/ruby/gems/1.8 hoặc trong .gem thư mục trong thư mục nhà của tôi.

Bạn cũng có thể thấy rằng các tệp thi hành được lưu trữ trong DIRECTORY EXECUTABLE, trong trường hợp này là /usr/bin.

Bởi vì /usr/bin là con đường của tôi, điều này cho phép tôi chạy cap, merb, rails v.v.

Cập nhật PATH của bạn

Nếu vì lý do nào đó, DIRECTORY EXECUTABLE của bạn không nằm trên đường dẫn của bạn (ví dụ nếu nó là /var/lib/gems/1.8/bin) thì bạn cần cập nhật biến PATH của bạn.

Giả sử rằng bạn đang sử dụng bash shell. Bạn có thể làm điều này một cách nhanh chóng cho phiên hiện tại bằng cách gõ lệnh sau tại dấu nhắc trình bao; chúng ta hãy giả vờ rằng bạn muốn thêm /var/lib/gems/1.8/bin vào đường dẫn:

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

và nhấn trở lại. Điều đó nối thêm thư mục mới vào cuối đường dẫn hiện tại. Lưu ý dấu hai chấm giữa $PATH và /var/lib/gems/1.8/bin

Để đặt giá trị cho tất cả các phiên, bạn cần phải chỉnh sửa .profile hoặc là .bashrc và thêm cùng một dòng vào cuối tệp. Tôi thường chỉnh sửa .bashrc không có lý do nào khác ngoài những gì tôi luôn làm. Khi hoàn tất, lưu tệp và sau đó làm mới môi trường của bạn bằng cách nhập:

bash

tại dấu nhắc trình bao. Điều đó sẽ gây ra .bashrc để đọc lại.

Tại bất kỳ thời điểm nào, bạn có thể kiểm tra giá trị hiện tại của $PATH bằng cách gõ

echo $PATH

tại dấu nhắc trình bao.

Đây là một mẫu từ một trong các máy chủ của riêng tôi, trong đó tên người dùng của tôi là "chris" và tên máy là "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:~$ 

Gem của tôi sẽ không tải!

"Đá quý Ruby sẽ không tải mặc dù đã cài đặt"nêu bật một vấn đề thường gặp khi sử dụng nhiều phiên bản Ruby khác nhau, đôi khi môi trường Gem và đường dẫn Gem không đồng bộ:

rb(main):003:0> Gem.path

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

Bất kỳ quá trình Ruby nào ở đây chỉ tìm kiếm một chỗ cho Gems của nó.

:~/$ 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/

Xem kỹ đầu ra của môi trường đá quý:

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

Đây không phải là đường dẫn giống như được trả về bởi Gem.path:

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

Thật khó để nói chính xác những gì đã gây ra lib/ruby để thay đổi thành lib/ruby1.9 nhưng rất có thể nhà phát triển đang làm việc với nhiều phiên bản Ruby. Một cách nhanh chóng mv hoặc là ln sẽ giải quyết vấn đề.

Nếu bạn cần làm việc với nhiều phiên bản Ruby thì bạn nên sử dụng rvm.


138
2018-05-26 10:23



Làm thế nào tôi có thể chỉnh sửa $ PATH của tôi để nó bao gồm hai thư mục nơi đá quý được cài đặt? Cảm ơn - Arthur
Tôi đã làm điều đó: sudo ln -s /var/lib/gems/1.8/gems/capistrano-2.5.5/bin/cap / usr / local / bin / cap ln: tạo liên kết tượng trưng `/ usr / local / bin / cap ': Tệp tồn tại Nhưng nó không hoạt động! Nó vẫn nhận được: bash: cap: lệnh không tìm thấy Đây là $ PATH của tôi: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / trò chơi: / opt / real / RealPlayer: /var/lib/gems/1.8: /home/arthur/.gem/ruby/1.8 - Arthur
Bây giờ nó hoạt động. Tôi đã thay đổi đường dẫn đến: /var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin - Arthur
Có cách nào để thay đổi EXECUTABLE_DIRECTORY thành tiêu chuẩn nào đó hơn, như / usr / bin hoặc / usr / local / bin không? Thêm /var/lib/gems/1.8/bin vào đường dẫn của tôi không được tốt, đặc biệt vì nó có số phiên bản trong đó. - Kief
Khi tôi muốn thay đổi điều đó ở cấp độ hệ thống, tôi phải thay đổi điều đó tại /etc/environment - dolzenko


Như đã lưu ý bởi @Chris bạn cần thêm môi trường đá quý vào đường dẫn của bạn. Bạn có thể làm điều này bằng cách:

echo 'export PATH=$PATH:/var/lib/gems/1.8/bin' | tee --append ~/.bashrc

5
2017-08-08 20:09





Thư mục trong đó đá quý là được lưu trữ phải nằm trên PATH của bạn, ví dụ như tôi là:

/home/victor/.gem/ruby/1.8/bin

Kiểm tra đường dẫn của bạn bằng cách nhập

echo $PATH

3
2018-05-26 09:07



Cảm ơn câu trả lời của bạn Đây là nội dung của ~ / .gem / ruby ​​/ 1.8 / bin: activerecord-2.3.2 activesupport-2.3.2 heroku-0.9.1 json-1.1.6 ray-2.3.2 Khi tôi cài đặt capistrano từ thư mục nhà của tôi ~, nó không đi trong thư mục này. Hơn nữa, đá quý heroku nằm trong thư mục bên phải nhưng lệnh heroku không hoạt động. Ngoài ra ở đây là những gì lệnh $ PATH trả về: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games - Arthur
Đá quý của bạn có hoạt động không? Vui lòng thêm thư mục của bạn ~ / .gem / ruby ​​/ 1.8 / bin vào đường dẫn và thử - victor hugo
Làm thế nào tôi có thể làm điều đó ? Tôi không biết lệnh shell - Arthur
Tôi đã hỏi một câu hỏi để biết cách chỉnh sửa $ PATH: stackoverflow.com/questions/910088/how-can-i-edit-the-path- trên-linux - Arthur


Nó seens rằng khi cài đặt rubygems, bây giờ trong ubuntu 9,04, tôi có vấn đề này. Tôi nhận thấy rằng trong "môi trường đá quý" thư mục thực thi là "/var/lib/gems/1.8/bin", thay vì "/ usr / bin" ... Đây là vấn đề với rubygems hoặc với ubuntu 9,04 ??

Giải pháp mà tôi gặp phải là thêm "/var/lib/gems/1.8/bin" vào $ PATH của tôi để làm điều này: xuất PATH = $ PATH: /var/lib/gems/1.8/bin Nhưng nó không được cứu ... làm thế nào tôi có thể cứu con đường của tôi?

Cảm ơn...

Resolvi: coloquei o xuất PATH = $ PATH: /var/lib/gems/1.8/bin no ~ / .bashrc! =]


1
2018-05-27 00:02



Để lưu đường dẫn, hãy xem câu hỏi khác tôi đã hỏi: stackoverflow.com/questions/910088/… - Arthur


mkmf là một phần của gói ruby1.9.1-dev. Gói này chứa các tệp tiêu đề cần thiết cho các thư viện mở rộng cho Ruby 1.9.1. Bạn cần cài đặt gói ruby1.9.1-dev bằng cách thực hiện:

sudo apt-get cài đặt ruby1.9.1-dev


0
2018-04-02 11:36