에 설치된 최신 버전의 ruby 1.9.2를 다운로드하여 컴파일 /usr/local/bin/ruby
했지만 시스템은 시스템에 /usr/bin/ruby
설치된 1.8.7 만 인식 합니다. 새로운 루비를 어떻게 제자리에 넣을 수 있습니까?
이 경우 루비 버전을 교체하고 명령 행 작업 및 레일 개발을 위해 업데이트 된 버전을 사용할 수 있어야합니다.
에 설치된 최신 버전의 ruby 1.9.2를 다운로드하여 컴파일 /usr/local/bin/ruby
했지만 시스템은 시스템에 /usr/bin/ruby
설치된 1.8.7 만 인식 합니다. 새로운 루비를 어떻게 제자리에 넣을 수 있습니까?
이 경우 루비 버전을 교체하고 명령 행 작업 및 레일 개발을 위해 업데이트 된 버전을 사용할 수 있어야합니다.
답변:
Ruby 버전 관리자 인 RVM을 사용해야합니다 . 그것은 시스템의 루비 설치에 영향을 미치지 않으면 서 루비의 여러 병렬 설치를 가능하게합니다. 루비는 다른 주석가가 지적했듯이 잠재적 으로 문제가 될 수 있습니다.
루비의 최신 패치 레벨, 루비 버전, 또는 JRuby, MacRuby 또는 Rubinius와 같은 대체 구현을 빠르고 쉽게 설치할 수 있습니다.
설치하기 위해서:
$ bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)
일단 설치되면 1.9.2를 기본값으로 설정하는 것은 입력하는 것만 큼 간단합니다.
rvm default 1.9.2
그리고 일시적으로 1.8.7로 다시 전환하고 싶다면 :
rvm use 1.8.7
"새로운 루비를 제자리에 설치"한다는 것은 무엇을 의미합니까?
command 명령 만 사용하여 명령 행에서 실행하려고하면 ruby
, 시스템은 /etc/paths
일치하는 것을 찾을 때까지 지정된 각 경로 를 순서대로 검색합니다. Snow Leopard에서 기본 /etc/paths
파일은 다음과 같습니다.
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
따라서 ruby
명령 행에 입력 하면 시스템이 /usr/bin/ruby
먼저 찾아서 찾은 후 나머지 경로를 확인하지 않습니다 (따라서 절대 도달하지 않음 /usr/local/bin/ruby
). 이를 확인하기 which ruby
위해 명령 행에 입력 하면 시스템이 해당 명령에 사용할 실행 파일의 경로를 인쇄합니다.
명령 행에서 최신 버전의 Ruby를 실행하려면 /usr/local/bin/ruby
대신 대신 입력하십시오 ruby
.
Ruby를 간접적으로 사용하는 다른 프로그램을 사용하는 경우 경로를 지정하는 옵션이있을 수 ruby
있습니다.
편집 : 최후의 수단으로 내장 시스템 버전의 Ruby를 최신 버전으로 덮어 쓸 수 있습니다. 다음 명령을 사용하고 프롬프트가 표시되면 관리자 비밀번호를 입력하십시오.
cp /usr/bin/ruby ~/Desktop/ruby_OLD
sudo cp /usr/local/bin/ruby /usr/bin/ruby
무언가가 깨지면 다음 명령으로 다시 넣으십시오.
sudo mv ~/Desktop/ruby_OLD /usr/bin/ruby
그러나 다른 사람들이 언급했듯이 RVM과 같은 도구를 사용하여 Ruby를 관리하는 것이 기본 제공 설치를 업그레이드하는 것보다 낫습니다.
ruby
OS X에서 그 가능성이 매우 희박하다고 생각합니다 (PHP4에서 PHP5와 같은 주요 변경에 대해 이야기하고 있다면 다를 것입니다). 그러나 당신은 그것이 일반적으로 나쁜 생각이라는 것이 옳습니다. 이것이 제가 마지막으로 언급 한 이유입니다. 이 사용자가 1.8.7보다 1.9.2를 선호하거나이 질문을하지 않는 이유가 있다고 가정합니다. 최신 버전을 실행하면 잠재적 인 이점이 다음 미성년자로 업그레이드되어 무언가를 깨뜨릴 수있는 작은 위험을 능가 할 수 있습니다. 번역.
기존 파일 ( /usr/bin/ruby
심볼 링크 /System/Library/Frameworks/Ruby.framework/Versions/Current/usr/bin/ruby
) 을 바꾸려면 파일 권한과 일치하도록주의해서 컴파일 한 파일로 기존 파일을 덮어 쓰십시오 .
이를 수행하지 않는 이유는 많지만 질문에 대한 문자 적 해석을 고려하면 간단합니다.
대부분의 사람들은 시스템보다 먼저 새로운 루비를 포함하도록 경로를 변경합니다. 왜냐하면 설치된 루비 버전과 관련 dylib, gem, rdocs 등에 의존하는 다른 것들을 깰 가능성이 더 적기 때문에 시스템 루비가 더 낫기 때문입니다.
홈브류 및 핀크 , RVM 및 MacPorts 의 이점 중 하나 는 다른 위치로 스테이징을 자동화하고 경로 수정을 지원한다는 것입니다.
/usr/local/bin
경로 변수를 조작하고 which -a ruby
나중에 작업을 다시 확인하여 루비를 사용하여 동일한 작업을 수행 할 수 있습니다 .