Information Technology Memories

맥북(Macbook)에서 While executing gem ... (Gem::FilePermissionError) 에러가 발생할때

친절한올드보이 2021. 4. 7. 15:44
반응형

Slate라는 API 사양서 관리 오픈 플랫폼을 설치 하려고 했을때 발생했는데, 꽤 골치 아팠던 경험이라 기록을 하기로 하였습니다.

문제의 결론은 MacOS에서 기본 설치되어 있는 시스템 Ruby를 사용하고 있기에 권한 문제로 발생하는 문제였습니다.

 

Slate의 샘플을 설치하여 테스트를 해보면 발생하는 것을 볼수 있습니다.

 

slatedocs/slate

Beautiful static documentation for your API. Contribute to slatedocs/slate development by creating an account on GitHub.

github.com

 

RubyGems를 설치하려고 하면 아래와 같이 에러가 발생할 것 입니다.

% gem install bundler
Fetching bundler-2.2.15.gem
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

 

ruby버전을 변경하기 위해 rbenv를 사용하여 사용 버전을 변경하도록 하겠습니다.

 

Homebrew를 통해 설치하기

 

1. Homebew update

% brew update

2. rbenv install

 % brew install rbenv ruby-build

3. rbenv install 확인하기

아래처럼 나온다면 설치가 완료된 것입니다. 그리고 현재 사용중인 버전은 맥북의 기본 system버전을 사용하고 있다는 것입니다.

% rbenv versions
* system (set by /Users/{사용자이름}/.rbenv/version)

4. rbenv를 이용해서 특정 버전의 ruby 설치하기

아래 코멘드를 입력하면 설치 가능한 버전 리스트가 나옵니다.(2021/04/07 기준)

저는 Slate를 설치하기 위한 목적이므로 2.7.2 버전을 설치하겠습니다. (Slate가 3.x 버전을 현재 기준으로 지원하지 않았습니다.)

% rbenv install -l
2.5.8
2.6.6
2.7.2
3.0.0
jruby-9.2.16.0
mruby-2.1.2
rbx-5.0
truffleruby-21.0.0
truffleruby+graalvm-21.0.0

5. ruby 2.7.2 버전 설치하기

% rbenv install 2.7.2

6. ruby 설치 확인하기

설치가 정상적으로 완료 되었다면 아래 처럼 나올 것 입니다.

% rbenv versions    
* system
  2.7.2 (set by /Users/{사용자이름}/.rbenv/version)

7. 디폴트 사용 ruby 버전 변경하기

디폴트로 system으로 설정 되어 있기 때문에 방금전 설치한 버전으로 지정해야 합니다.

변경후 다시 버전을 확인해 보면 2.7.2앞에 * 마크가 붙어 있는 것을 볼 수 있습니다. 변경완료!

% rbenv global 2.7.2

% rbenv versions    
  system
* 2.7.2 (set by /Users/{사용자이름}/.rbenv/version)

8. Path를 지정하기 위해 아래와 같이 코멘드를 입력합니다.

$ echo '# rbenv' >> ~/.bash_profile

$ echo 'export PATH=~/.rbenv/bin:$PATH' >> ~/.bash_profile

$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

9. .bash_profile을 적용하기 위해 아래 코멘드를 실행 합니다.

$ source ~/.bash_profile

10. 이제 모든 설정이 완료 되었기 때문에 다시 ruby 패키지 매니저인 gem을 설치하면 성공될 것 입니다.

% gem install bundler
Fetching bundler-2.2.15.gem
Successfully installed bundler-2.2.15
Parsing documentation for bundler-2.2.15
Installing ri documentation for bundler-2.2.15
Done installing documentation for bundler after 3 seconds
1 gem installed