Cách đặt Ruby GEM_HOME và GEM_PATH


10

Tôi là người dùng NOVICE của Linux và sử dụng Linux 17.1

Tôi đã cài đặt lại Linux Mint 20 lần trong 3 ngày qua vì sự cố đó nhưng không thể khắc phục được

Tôi đang cố gắng cài đặt ruby ​​trên đường ray bằng rvm, điều gì đã xảy ra nếu bắt đầu cài đặt Linux mới và thử cài đặt đá quý và ruby ​​và các thứ trong một phiên cuối, nó đã cài đặt thành công ngay khi tôi đóng phiên cuối, tôi không thể lấy các viên đá quý đó .

Bằng cách cài đặt lại hơn 20 lần trong 3 ngày qua tôi cũng đã tìm kiếm trên web. Tôi đã được yêu cầu đặt biến môi trường trong /etc/environmentđường dẫn tôi lặp lại trong phiên đó và dán nó vào /etc/environmenttệp.

ngay cả bây giờ tôi không nhận được đá quý cài đặt của tôi

Khi tôi gõ rvm -vtôi nhận được các lỗi sau

Warning: PATH set to RVM ruby but GEM_HOME and/or GEM_PATH not set, see:
    https://github.com/wayneeseguin/rvm/issues/3212

Warning! PATH is not properly set up, $GEM_HOME is not set,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-2.2.2'.
rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

Tôi là một người rất mới làm việc khi làm việc với thiết bị đầu cuối Tôi có thể chạy một số lệnh cơ bản để làm việc với ruby.

Tôi muốn biết

  1. Cách đặt PATH
  2. Cách đặt GEM_HOME
  3. Cách đặt GEM_PATH

Dưới đây là con đường đầy đủ của tôi

echo $PATH
/home/sharif/.rvm/gems/ruby-2.2.2/bin:/home/sharif/.rvm/gems/ruby-2.2.2@global/bin:/home/sharif/.rvm/rubies/ruby-2.2.2/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/sharif/.rvm/bin

mr @mohsen pahlevanzades tôi có thể hỏi vấn đề xóa hai dòng đó là gì không, nếu bạn không phiền tôi nói, liên quan
Amjad

Nếu tôi nhớ đúng, Bạn đã viết liên quan hoặc cảm ơn bạn,
tiếng Ba Tư

Câu trả lời:


18

Âm thanh như bạn muốn lệnh exportđể thiết lập các biến môi trường:

export PATH=$PATH':/path/to/add'
export GEM_HOME=$HOME/.gem
export GEM_PATH=$HOME/.gem

Điều đó sẽ chỉ có hiệu lực cho phiên hiện tại, mặc dù. Để làm cho chúng lâu dài hơn, hãy thêm những dòng đó vào của bạn ~/.bashrc.


3

Thông thường điều này có nghĩa là rvm không được thiết lập chính xác. Lỗi thông thường là bạn đã không sửa đổi .bashrcchính xác (hoặc tương tự) hoặc bạn đã không tải lại thiết bị đầu cuối của mình.

Bạn không nên đặt GEM_HOME hoặc GEM_PATH theo cách thủ công khi sử dụng rvm.

Bạn có thể thử source ~/.rvm/scripts/rvmvà xem nếu nó hoạt động.

Nó cũng có thể là bạn chưa xây dựng một viên đá quý. Không sử dụng rvm và sudo. Rvm hoạt động tốt nhất khi được cài đặt trong tài khoản của bạn chứ không phải toàn hệ thống.


Bạn cũng có thể thêm source ~/.rvm/scripts/rvmvào ~/.bashrcđể đảm bảo nó được tải mỗi khi bạn bắt đầu một vỏ mới.
Niel de Wet

2

Đây là những gì tôi đã học và cách tôi giải quyết vấn đề dường như phổ biến này của các biến môi trường GEM_HOME và GEM_PATH không đặt lỗi.


Lý lịch

Cài đặt RVM được cho là tạo ra các lọ đựng GEM_HOME và GEM_PATH env cho mỗi RVM được thiết lập và nó thực hiện điều đó. Nhưng có một lỗi rõ ràng là trong một số trường hợp, các env chỉ được đặt tạm thời và để thiết lập lại chúng, bạn phải đặt chúng bằng dòng lệnh. Tôi tìm thấy một cách giải quyết để làm cho các env vars tồn tại cho một RVM.

Giải pháp thay thế

  1. Tìm phiên bản Ruby hoạt động (trong RVM): Trên máy chủ sản xuất của bạn, hãy chuyển đến thư mục ứng dụng và nhập $rvm list. Điều này sẽ dẫn đến một danh sách các phiên bản Ruby được cài đặt và phiên bản nào đang hoạt động cho RVM. Ví dụ về câu trả lời:

    rvm rubies ruby-1.9.3-p547 [ x86_64 ] => ruby-1.9.3-p551 [ x86_64 ]

Vì vậy, tôi biết rằng RVM hiện đang sử dụng phiên bản ruby-1.9.3-p551. Bạn cần thông tin này cho bước tiếp theo.

  1. Nhận đường dẫn cho GEM_PATH và GEM_HOME : Bạn làm điều này bằng cách thực hiện từ dòng lệnh $rvm use ruby-1.9.3-p551. Sau đó, từ dòng comman hiển thị tất cả các cài đặt môi trường bằng lệnh env. Tìm kiếm GEM_PATH và GEM_HOME và sao chép toàn bộ chúng vào không gian làm việc.

    GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551

  2. Đặt các biến môi trường GEM_HOME và GEM_PATH: Bây giờ đặt các biến môi trường này trong một trong nhiều tệp hồ sơ. Tôi muốn duy trì cấu trúc cách ly phiên bản RVM, vì vậy tôi đã cập nhật /profile.d/appspecific.sh với hai dòng sau:

    export GEM_PATH=/usr/local/rvm/gems/ruby-1.9.3-p551:/usr/local/rvm/gems/ruby-1.9.3-p551@global export GEM_HOME=/usr/local/rvm/gems/ruby-1.9.3-p551


rõ ràng GEM_HOME và GEM_PATH không dành riêng cho RVM?
barlop

2

Tôi thấy rằng .profile được tải sau cùng và đặt ~ / .local / bin và ~ / bin ở phía trước đường dẫn. Tôi đã chuyển /etc/profile.d/rvm.sh sang ~ / .rvm và ở cuối .profile tôi đã thêm "nguồn ~ / .rvm / rvm.sh" và lỗi đã biến mất. Tôi đang dùng Linux Mint 18.3. Tôi đã cài đặt pyenv, rvm và sdkman và tất cả chúng đều muốn là cuối cùng. Bây giờ tất cả đều hoạt động tốt. :)

Nếu đó là một hệ thống được chia sẻ, chỉ cần di chuyển rvm.sh ra khỏi đường dẫn và bất kỳ người dùng nào khác cũng có thể tìm nguồn đó, chẳng hạn như từ /opt/rvm/rvm.sh.


1

Giống như @coteyr đã đề cập, bạn không nên đặt GEM_HOMEGEM_PATH theo cách thủ công khi sử dụng rvm. Nếu bạn kiểm tra biến môi trường PATH của mình, bằng cách chạy $ echo $PATHvà $ HOME / .rvm / bin là một phần của nó, thì bạn cần đảm bảo rằng thiết bị đầu cuối của bạn chạy các lệnh như một vỏ đăng nhập. Ví dụ: nếu bạn đang sử dụng máy Ubuntu, bạn mở thiết bị đầu cuối của mình, sau đó vào: menu> Chỉnh sửa> Tùy chọn hồ sơ> Lệnh sau đó chọn "Chạy lệnh làm vỏ đăng nhập"

Đây dường như là một vấn đề cũ rvmmà tôi cho là không tầm thường để khắc phục vì nó đã xuất hiện được một thời gian.


1

Để cư trú $GEM_PATHvới hệ thống của tôi (Manjaro / Arch) gemstôi đã thêm vào .bashrc:

for _entry in /usr/lib/ruby/gems/*; do
  if [[ -d $_entry ]]; then
    # TODO: Add only if not there already
    export GEM_PATH=$_entry:$GEM_PATH
  fi
done
unset _entry
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.