Làm cách nào để sử dụng đá quý với Ubuntu?


76

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

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 caplệnh, nó không hoạt động:

bash: cap: command not found

Nó cũng giống như các lệnh gem khác.

Tôi có việc gì đặc biệt phải làm để các lệnh gem hoạt động không?


câu hỏi này không phù hợp hơn được hỏi trong superuser.com ?
Thiago Diniz

@ThiagoDiniz hoặc trong askubuntu.com ?
Eliran Malka

Câu trả lời:


138

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

Bạn có thể tìm thấy nơi lưu trữ đá quý của mình bằng gem environmentlệnh. 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.8hoặc trong .gemthư mục trong nhà của tôi.

Bạn cũng có thể thấy rằng các tệp thực thi được lưu trữ trong HƯỚNG DẪN THỰC HIỆN, trong trường hợp này là /usr/bin.

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

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

Nếu vì một lý do nào đó, HƯỚNG DẪN THỰC HIỆN của bạn không có 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 mình.

Giả sử rằng bạn đang sử dụng bash shell. Bạn có thể thực hiện việc này nhanh chóng cho phiên hiện tại bằng cách nhập nội dung sau vào dấu nhắc trình bao; giả sử rằng bạn muốn thêm /var/lib/gems/1.8/binvào đường dẫn:

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

và nhấn quay lại. Điều đó nối 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/var/lib/gems/1.8/bin

Để đặt giá trị cho tất cả các phiên, bạn sẽ cần phải chỉnh sửa tệp .profilehoặc của mình .bashrcvà thêm cùng một dòng vào cuối tệp. Tôi thường chỉnh sửa .bashrctệp của mình không vì lý do gì khác ngoài những gì tôi luôn làm. Khi hoàn tất, hãy 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 shell. Điều đó sẽ gây ra .bashrcđể được đọ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 $PATHbằng cách nhập

echo $PATH

tại dấu nhắc shell.

Đây là 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:~$ 

Đá quý của tôi sẽ không tải!

" Ruby gems sẽ không tải ngay cả khi đã được cài đặt " nêu bật một vấn đề phổ biến khi sử dụng nhiều phiên bản Ruby khác nhau; Đôi khi môi trường Đá quý và đường dẫn Đá quý 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

Mọi quy trình Ruby ở đây đều chỉ tìm kiếm ở một nơi cho các Đá quý 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 xét 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 điều gì đã gây ra lib/rubysự thay đổi lib/ruby1.9nhưng rất có thể nhà phát triển đã làm việc với nhiều phiên bản Ruby. Một nhanh chóng mvhoặc lnsẽ 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 thực sự nên sử dụng rvm .


Làm cách nào để tôi có thể chỉnh sửa $ PATH của mình để nó bao gồm hai thư mục nơi các viên ngọc được cài đặt? Cảm ơn
0x26res

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
0x26res

Bây giờ nó hoạt động. Tôi đã thay đổi đường dẫn thành: /var/lib/gems/1.8/bin:/home/arthur/.gem/ruby/1.8/bin
0x26res

Có cách nào để thay đổi EXECUTABLE_DIRECTORY thành một thứ gì đó chuẩn hơn, như / usr / bin hoặc / usr / local / bin không? Việc thêm /var/lib/gems/1.8/bin vào đường dẫn của tôi không ổn, đặc biệt vì nó có số phiên bản trong đó.
Kief

Khi tôi muốn thay đổi điều đó về mặt kĩ hệ thống tôi đã phải thay đổi điều đó tại/etc/environment
dolzenko

5

Như đã lưu ý bởi @Chris, bạn cần thêm môi trường đá quý vào đường dẫn của mình. 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

3

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

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

Kiểm tra đường dẫn của bạn bằng cách gõ

echo $PATH

1
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 rails-2.3.2 Khi tôi cài đặt capistrano từ thư mục chủ của tôi ~, nó không nằm 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à nội dung lệnh $ PATH trả về: / usr / local / sbin: / usr / local / bin: / usr / sbin: / usr / bin: / sbin: / bin: / usr / games
0x26res

Đá quý đường ray 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

Tôi đã đặt 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- on-linux
0x26res

1

Nó thấy rằng khi cài đặt rubygems, bây giờ trong ubuntu 9.04, tôi gặp sự cố 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à sự cố 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 để thực hiện việc này: export PATH = $ PATH: /var/lib/gems/1.8/bin Nhưng nó không được lưu ... làm thế nào tôi có thể lưu đường dẫn của mình?

Cảm ơn...

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


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

0

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 install ruby1.9.1-dev

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.