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


182

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.

3
sudoRuby를 설치하거나 gem을 변경 하는 데 사용하지 마십시오 . 대신 rbenv 또는 RVM 을 사용하여 Ruby를 설치하고 관리하십시오. 해당 사이트의 지침을 읽고 따르십시오. 그리고 두 경우 모두 설치 후 sudo변경 사항과 변경 이유를 이해 하지 않으면 사용 하지 마십시오.
Tin Man

답변:


333

면책 조항 : @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루비 개발자 문서를 생성 건너 뛸 수 있습니다.)


정말 고맙습니다! 나는 새로운 버전의 양조 및 루비로 어려움을 겪었지만 여전히 / usr / bin 문제를 해결할 수 없었습니다. 실행할 때 원하는 경로를 지정하면 gem install문제가 해결되었습니다.
Daniel Saidi

(가) .gemrc있어야한다 gem: -n /usr/local/bin(-n 후 공간이 필요합니다).
Paul Schreiber

@PaulSchreiber 글쎄, 나는 지금 5 개월 동안 공간없이 사용했습니다. :) 확실합니까?
nschum

2
옵션 # 2의 경우 1을 더합니다. 별도의 Ruby가없는 바이너리 만 원하는 경우 실행 가능한 안전한 대안입니다. 우리의 홈 디렉토리는 추가 된 보석을위한 완벽한 장소이며, PATH에 대한 빠른 조정은 그것들을 액세스 할 수있게합니다. 누군가 보석을 덮어 쓰고 시스템 루비 또는 그것을 사용하는 애플의 내장 코드를 깨뜨릴 수 있기 때문에 옵션 # 1을 권할 수는 없습니다 .
Tin Man

1
이것은 훌륭한 답변이지만 오래된 것일 수 있습니다. Sierra에서 필요한 옵션은 --install-dir / usr / local / bin입니다.
Ryan Ballantyne

107

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

brew install ruby

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


나를 위해 잘 작동했습니다! 번들로 제공되는 루비 설치에서 이상한 점을 제거한다고 생각합니다 ... IMO 이것이 최고의 솔루션입니다.
n13

```which -a ruby```를 사용하여 어떤 루비가 실행되고 있는지 알 수 있습니다. usr / bin / ruby```/ usr / local / bin이 PATH에 두 번 brew install ruby있는 이유는 이미 존재하는 경우에도 넣는 것처럼 보입니다 . 아마도 / usr / local의 루비는 루트 액세스가 필요없는 위치에 gem을 설치하도록 구성되어 있습니다 (실제로는 완벽하게 이해됩니다).
WallStProg

7
추신 당신은 (터미널을 통해) 로그 아웃했다가 다시 로그인해야합니다 gem install.
WallStProg

나를 위해 잘 작동했습니다. 나는 받아 들인 대답을 이것과 결합했다. 둘 다 감사합니다
youssman

1
로그 아웃했다가 다시 로그인 할 필요가 없습니다. rehash쉘에 ruby이전에 새로운 내용이 있음을 인식하도록 실행 하십시오 $PATH. ruby쉘 세션에서 아직 실행 하지 않은 상황에서는 이것이 필요하지 않습니다 .
Radon Rosborough

38

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

$ gem install *** --user-install

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

$ gem install fake3 --user-install

예! 정말 고맙습니다!
Louis Magnotti

brew 접근 방식으로 30 분을 보내고 마지막으로 터미널을 닫으면이 솔루션은 10.10.5에서 작동했지만 brew 접근 방식이 왜 작동하지 않는지 여전히 확실하지 않습니다. 명확히하십시오. ruby post brew install / usr / bin / ruby
vikramvi

1
이제 문제는 back gem install redcarpet -v '3.3.4'--user-install throwing error입니다. 경고 : PATH에 gem / Users / user_name / .gem / ruby ​​/ 2.0.0 / bin이 없습니다. 실행 파일이 실행되지 않습니다. 이전에이 오류가 발생하지 않았습니다
vikramvi

1
stackoverflow.com/questions/19579392/... 이 마침내 해결 문제에 저를 도왔다
vikramvi


19

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

10

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>

3

말했듯이,이 문제는 "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)


2

이것이 내가 사용한 솔루션입니다.

참고 :이 수정은 다른 SO 질문에 작성했을 때 나침반 용이지만, 동일한 프로세스를 사용하여 모든 터미널 프로세스에 기능을 복원했습니다. 설치중인 보석이 다르지만 프로세스는 동일합니다.

나는 같은 문제가 있었다. Apple이 SIP (System Integrity Protection)를 구현했기 때문입니다. 먼저 비활성화해야합니다 ...

복구 모드에서 재부팅 :

재부팅 후 Command + RApple 로고가 나타날 때까지 하십시오.

부팅되면 유틸리티> 터미널을 선택하십시오 상단 표시 줄에서 을 .

유형: csrutil disable

다음을 입력하십시오. reboot

재부팅 후

터미널 백업을 열고 다음 명령을 입력하십시오.

sudo gem uninstall bundler

sudo gem install bundler

sudo gem install compass

sudo gem install sass

sudo gem update --system

실패한 개별 보석은 수정해야하므로 각각 다음을 수행하십시오.

내 컴퓨터에서 이것은 첫 번째 종속성이 작동하지 않았으므로 나열했습니다 .

sudo gem pristine ffi --version 1.9.3

수리해야 할 보석 목록을 진행하십시오. 모두 당신이 그것을 고치기 위해 약 10 분을보고 있지만 나침반 작업을위한 터미널 명령이 있습니다.

스크린 샷


2

설치하려는 gem에 xml 라이브러리가 필요한 경우 다음을 시도하십시오.

sudo gem install -n /usr/local/bin  <gem_name> -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

특히 OS X El Capitan에 nokogiri gem v 1.6.8을 설치하는 동안 문제가 발생했습니다.

그리고 이것은 마침내 나를 위해 일했습니다 :

sudo gem install -n /usr/local/bin  nokogiri -- --use-system-libraries --with-xml2-include=/usr/include/libxml2 --with-xml2-lib=/usr/lib/

libxml2 및 libxslt가 설치되어 있는지 확인하려면 다음을 수행하십시오.

brew install libxml2 libxslt
brew install libiconv

xcode 명령 행 도구가 설치되어 있는지 확인하십시오.

xcode-select --install 

이 오류를 반환해야합니다 :

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

1

RVM을 다시 설치하면 효과가 있었지만 나중에 모든 gem을 다시 설치해야했습니다.

rvm implode
\curl -sSL https://get.rvm.io | bash -s stable --ruby
rvm reload

0

El Capitan을 설치 한 후 동일한 문제를 겪고 symfony 프로젝트에 sass와 compass를 설치하려고 시도했지만 다음 명령이 다음 오류를 반환했습니다.

$ sudo gem 설치 나침반

오류 : 나침반 설치 오류 : 오류 : gem 기본 확장 프로그램을 빌드하지 못했습니다.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb 

ffi.h 확인 중 ... /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in`try_do ': 컴파일러가 실행 가능 파일. (런타임 오류)

그래서 다음과 같이 sass를 설치하려고했습니다 : $ sudo gem install sass

일부 인터넷 검색 후 다음 명령을 사용하여 sass를 설치했을 때 동일한 오류 메시지가 나타납니다.

$ sudo gem 설치 -n / usr / local / bin sass

위의 내용은 sass 설치에 도움이되었지만 나침반 설치에는 효과가 없었습니다. 누군가 어딘가에 xcode 인스턴스를 연 다음 다시 닫은 다음 동일한 명령을 성공적으로 실행 한 후에 읽었습니다. xcode를 열려고 시도했지만 설치된 xcode 버전이 El Capitan과 호환되지 않는다는 메시지가 표시되었습니다. 그런 다음 앱 스토어에서 xcode를 업데이트하고 이번에 성공적으로 실행 된 다음 명령을 다시 실행하십시오.

$ sudo gem install -n / usr / local / bin 나침반

그런 다음 $ $ 나침반 초기화를 실행할 수있었습니다.

나는 이제 모든 보석이 작동하고 멋진 사스 물건을 만들 수 있습니다. :)


0

나는 다시 rm -rf ./vendor달려야 bundle install했다.


-1

sudo로 물건을 설치하고 싶지 않습니다. sudo로 시작하면 멈출 수 없습니다 ..

Gems 디렉토리에 권한을 부여하십시오.

sudo chown -R $(whoami) /Library/Ruby/Gems/2.0.0

2
시스템 Ruby gem의 소유권을 변경하지 마십시오. Mac OS가 업데이트를 시도 할 때 문제가 발생할 수 있습니다.
Tin Man

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.