Ruby GEM_HOME 및 GEM_PATH를 설정하는 방법


10

저는 Linux의 NOVICE 사용자이며 Linux mint 17.1을 사용하고 있습니다.

지난 3 일 동안 Linux Mint를 20 시간 동안 다시 설치했지만 문제를 해결할 수 없습니다

rvm을 사용하여 레일에 루비를 설치하려고합니다. 새 Linux 설치를 시작하고 터미널 세션을 닫 자마자 성공적으로 설치된 하나의 터미널 세션에서 gem과 ruby ​​및 물건을 설치하려고하면 해당 보석을 얻을 수 없습니다. .

지난 3 일 동안 20 번 이상 다시 설치하면 웹에서도 검색했습니다. /etc/environment해당 세션의 경로를 에코하고 /etc/environment파일에 붙여 넣은 환경 변수를 넣으라는 말을 들었습니다 .

지금도 설치된 보석을 얻지 못합니다

입력 rvm -v하면 다음과 같은 오류가 발생합니다

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/]

나는 터미널로 작업 할 때 매우 초보자 인 루비로 작업하기 위해 몇 가지 기본 명령을 실행할 수 있습니다.

나는 알고 싶다

  1. PATH 설정 방법
  2. GEM_HOME 설정 방법
  3. GEM_PATH 설정 방법

아래는 내 전체 경로입니다

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

씨 @mohsen pahlevanzades 나는 당신이, 내가 말하는 마음과 관련 해달라고하면, 그 두 줄을 삭제하는 지점이 무엇인지 요청할 수
암 자드를

내가 바르게 기억한다면, 당신은 안부 또는 감사를 썼습니다
PersianGulf

답변:


18

export환경 변수를 설정 하는 명령 을 원하는 것처럼 들립니다 .

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

그러나 현재 세션에만 적용됩니다. 더 영구적으로 만들려면 해당 줄을에 추가하십시오 ~/.bashrc.


3

일반적으로 이것은 rvm이 올바르게 설정되지 않았 음을 의미합니다. 일반적인 실수는 .bashrc올바르게 (또는 유사한) 수정하지 않았 거나 터미널을 다시로드하지 않은 것입니다.

rvm을 사용할 때 GEM_HOME 또는 GEM_PATH를 수동으로 설정해서는 안됩니다.

시도 source ~/.rvm/scripts/rvm하고 작동하는지 확인할 수 있습니다 .

보석 세트를 아직 작성하지 않았을 수도 있습니다. rvm 및 sudo를 사용하지 마십시오. Rvm은 시스템 전체가 아닌 계정 개미에 설치 될 때 가장 잘 작동합니다.


당신은 또한 추가 할 수 있습니다 source ~/.rvm/scripts/rvm당신에 ~/.bashrc있는지가 새 쉘을 시작할 때마다로드 할 수 있습니다.
Niel de Wet

2

여기에 내가 배운 것과 GEM_HOME 및 GEM_PATH 환경 변수의 오류로 설정되지 않은이 일반적인 문제를 해결하는 방법이 있습니다.


배경

RVM 설치는 설정된 각 RVM에 대해 GEM_HOME 및 GEM_PATH env vars를 작성해야합니다. 그러나 어떤 경우에는 env var가 일시적으로 만 설정되고 다시 설정하려면 명령 줄을 사용하여 설정 해야하는 버그가 있습니다. env vars가 RVM에 지속되도록하는 해결 방법을 찾았습니다.

해결 방법

  1. 활성 (RVM에서) Ruby 버전 찾기 : 프로덕션 서버에서 app 디렉토리로 이동 하여을 입력하십시오 $rvm list. 그러면 설치된 루비 버전 목록과 RVM에 활성화 된 버전이 나타납니다. 응답의 예 :

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

따라서 RVM이 현재 version을 사용하고 있음을 알고 ruby-1.9.3-p551있습니다. 다음 단계에는이 정보가 필요합니다.

  1. GEM_PATH 및 GEM_HOME의 경로를 가져옵니다 . 명령 줄에서 실행하면됩니다 $rvm use ruby-1.9.3-p551. 그런 다음 여전히 명령 줄에서 명령을 사용하여 모든 환경 설정을 표시하십시오 env. GEM_PATH 및 GEM_HOME을 검색하고 전체를 작업 공간에 복사하십시오.

    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. GEM_HOME 및 GEM_PATH 환경 변수를 설정 하십시오. 이제 이러한 환경 변수를 여러 프로파일 파일 중 하나에 설정하십시오. RVM 버전 격리 구조를 유지하고 싶었으므로 /profile.d/appspecific.sh를 다음 두 줄로 업데이트했습니다.

    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


분명히 GEM_HOME과 GEM_PATH는 RVM에만 국한되지 않습니까?
barlop

2

.profile이 마지막으로로드되고 ~ / .local / bin 및 ~ / bin을 경로 앞에 넣는 것을 알았습니다. /etc/profile.d/rvm.sh를 ~ / .rvm으로 옮기고 .profile의 맨 끝에 "source ~ / .rvm / rvm.sh"를 추가했는데 오류가 사라졌습니다. Linux Mint 18.3을 사용하고 있습니다. pyenv, rvm 및 sdkman이 설치되어 있으며 모두 마지막이되고 싶습니다. 그들은 지금 모두 잘 작동하고 있습니다. :)

공유 시스템 인 경우 rvm.sh를 경로 어딘가로 옮기면 /opt/rvm/rvm.sh와 같이 다른 사용자가 소스를 찾을 수 있습니다.


1

@coteyr에서 언급 했듯이을 사용할 때 GEM_HOMEGEM_PATH를 수동으로 설정해서는 안됩니다 rvm. PATH 환경 변수를 확인 $ echo $PATH하고 $ HOME / .rvm / bin이 그 일부인 경우, 터미널이 명령을 로그인 쉘로 실행하는지 확인해야합니다. 예를 들어 Ubuntu 컴퓨터에있는 경우 터미널을 열고 메뉴> 편집> 프로필 환경 설정> 명령으로 이동 한 다음 "로그인 명령으로 명령 실행"을 선택하십시오.

이것은 오래 동안 문제가 rvm있었기 때문에 해결하기가 쉽지 않은 오래된 문제 인 것으로 보입니다 .


1

채우기를 들어 $GEM_PATH내 시스템 (Manjaro / 아치)와 함께 gems내 추가 .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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.