[ruby] OS X“El Capitan”에 gem을 설치할 수 없습니다

fakes3El Capitan Beta 5 에서 gem 을 설치하고 실행할 수 없습니다 .

나는 시도했다 :

sudo gem install fakes3
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/fakes3

그런 다음 cocoapods 방식으로 시도했습니다. 그것은 cocoapods에는 효과가 있지만 fakes3에는 효과가 없습니다.

mkdir -p $HOME/Software/ruby
export GEM_HOME=$HOME/Software/ruby
gem install cocoapods
[...]
1 gem installed
gem install fakes3
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.



답변

면책 조항 : @theTinMan 및 기타 Ruby 개발자는 sudo보석을 설치할 때 사용하지 말고 RVM 과 같은 것을 지적합니다 . 루비 개발을 할 때 그것은 사실입니다. 계속해서 사용하십시오.

그러나 우리 중 많은 사람들이 그냥 일어나는 일부 바이너리가 보석으로 배포 할 (예를 들어 fakes3, cocoapods, xcpretty…). 나는 별도의 루비를 관리하는 것을 귀찮게하고 싶지 않습니다. 더 빠른 옵션은 다음과 같습니다.

옵션 1 : sudo를 계속 사용

사용은 sudo이러한 도구는 전 세계적으로 설치하려면 아마 괜찮습니다.

문제는 이러한 바이너리로 설치되어 있는지입니다 /usr/bin– 출입 금지 엘 카피 탄 이후가. 그러나 /usr/local/bin대신 설치할 수 있습니다 . 그것은 Homebrew 가 물건을 설치하는 곳 이므로 이미 존재할 것입니다 .

sudo gem install fakes3 -n/usr/local/bin

보석이 설치되며 /usr/local/bin시스템의 모든 사용자가 PATH 에 있으면 사용할 수 있습니다 .

옵션 2 : 홈 디렉토리에 설치 (sudo없이)

다음은 gem을 설치 ~/.gem하고 바이너리를 넣을 것입니다 ~/bin(다음에 추가해야합니다 PATH).

gem install fakes3 --user-install -n~/bin

기본값으로 설정

어느 쪽이든, 당신은 ~/.gemrc당신이 그들을 기억하지 않아도 이러한 매개 변수를 추가 할 수 있습니다 :

gem: -n/usr/local/bin

echo "gem: -n/usr/local/bin" >> ~/.gemrc

또는

gem: --user-install -n~/bin

echo "gem: --user-install -n~/bin" >> ~/.gemrc

( 팁 : 당신은 또한에 던질 수있는 --no-document루비 개발자 문서를 생성 건너 뛸 수 있습니다.)


답변

필자의 경우 Brew를 사용하여 Ruby를 다시 설치해야했습니다 . 보석을 다시 설치할 수 있기 때문에 문제가 해결 된 것 같습니다.

brew install ruby

그런 다음 그래픽으로 또는 터미널을 다시 시작하여 로그 아웃했다가 다시 로그인해야합니다.


답변

OS X “El Capitan”의 새로운 보안 기능 때문입니다. --user-installsudo를 사용 하는 대신 추가하십시오 :

$ gem install *** --user-install

예를 들어, fake3을 설치하려면 다음을 사용하십시오.

$ gem install fake3 --user-install


답변

sudo gem install -n /usr/local/bin cocoapods

이 시도. 확실히 작동합니다.


답변

Xcode를 최신 버전 (v7.0.1)으로 업데이트해야하며 모든 것이 정상적으로 작동합니다.

최신 Xcode를 설치 한 후에도 여전히 작동하지 않으면 다음과 같이 gem을 설치하십시오.

sudo gem install -n /usr/local/bin GEM_NAME_HERE

예를 들면 다음과 같습니다.

sudo gem install -n /usr/local/bin fakes3
sudo gem install -n /usr/local/bin compass
sudo gem install -n /usr/local/bin susy


답변

OS X El Capitain으로 업그레이드 할 때 / usr / local 디렉토리는 여러 가지 방법으로 수정됩니다.

  1. 사용자 권한이 재설정됩니다 (Homebrew를 사용하는 사람들에게도 문제가 됨)
  2. 이진 및 심볼릭 링크가 삭제되었거나 변경되었을 수 있습니다

[편집] 할 일도 있습니다 : Xcode 업그레이드 …

# 1 솔루션 :

$ sudo chown -R $(whoami):admin /usr/local

그러면 /usr/local디렉토리 에 대한 권한이 수정 gem install되어 brew install|link|...명령 과 명령이 제대로 작동하는 데 도움이 됩니다.

# 2에 대한 해결책 :

루비 기반 문제

/usr/local디렉토리 의 권한을 수정했는지 확인하십시오 (위의 # 1 참조).

먼저 다음을 사용하여 gem을 다시 설치하십시오.

sudo gem install <gemname>

지정된 gem의 최신 버전을 설치합니다.

이전 버전과의 호환성 문제에 직면하지 않으려면 먼저 원하는 gem의 버전을 확인한 다음로 다시 설치하는 것이 -v version좋습니다. 시스템이 새로운 버전의 카피 스트라 노를 얻지 못하게하려면 아래 예를 참조하십시오.

$ gem list | grep capistrano
capistrano (3.4.0, 3.2.1, 2.14.2)
$ sudo gem install capistrano -v 3.4.0

양조 기반 문제

추출 업데이트 및 공식 업그레이드

$ brew update
$ brew upgrade

또한 수동으로 다시 연결해야 할 수도 있습니다

$ brew link <formula>


답변

말했듯이,이 문제는 “El Capitan”이후 Mac OSX의 보안 기능에서 비롯됩니다.

기본 시스템 Ruby를 사용하면 설치 프로세스가 /Library/Ruby/Gems/2.0.0사용자가 사용할 수없는 디렉토리 에서 발생 하고 오류가 발생합니다.

다음 명령을 사용하여 Ruby 환경 매개 변수를 살펴볼 수 있습니다

$ gem env

INSTALLATION DIRECTORY와 USER INSTALLATION DIRECTORY가 있습니다. 기본 설치 디렉토리 대신 사용자 설치 디렉토리를 사용하려면 절대로 권장되는 방법을 --user-install사용하지 않고 대신 매개 변수를 사용할 수 있습니다 sudo.

$ gem install myGemName --user-install

이 과정에서 더 이상 권리 문제가 없어야합니다. 그런 다음 gem은 사용자 디렉토리에 설치됩니다.~/.gem/Ruby/2.0.0/bin

그러나 설치된 gem을 사용 가능하게하려면 경로에서이 디렉토리를 사용할 수 있어야합니다. Ruby의 faq 에 따르면 다음 행을 ~/.bash_profile또는~/.bashrc

if which ruby >/dev/null && which gem >/dev/null; then
    PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH"
fi

그런 다음 터미널을 닫았다가 다시로드하거나 .bash_profile또는 .bashrc( . ~/.bash_profile)