/var/lib/gems/2.3.0 디렉토리에 대한 쓰기 권한이 없습니다.


104

우분투 16.04에 루비가 설치되어 있습니다.

$which ruby  

/usr/bin/ruby

$ruby -v 

ruby 2.3.0p0 (2015-12-25) [x86_64-linux-gnu]

$gem install bundler 

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.3.0 directory.

어떤 도움이라도 대단히 감사하겠습니다!


당신은 RVM을 설치하려고 2.3.3처럼 루비의 최신 버전을 설치할 수 있습니다
안톤 Skovorodko

주석 3의 경우 : 패키지는 "파이썬 소프트웨어 특성은"공통 소프트웨어 속성을 위해 교체해야 사용할 수 없습니다
시스코 라자

1
RVM 옵션과 imho 는 순수한 "사용자 설치" (전 세계적으로 권한을 요구하는 설치 와 반대)로 더 좋고 간단한 설치 가 권한을 다루는 것보다 훨씬 더 나은 방법 일 수 있습니다!
Frank Nocke 17.11.09

8
이 스트림이 왜이 OP에이 문제가 있는지, 그리고 왜 Ruby와 다중 설치 관리자 (RVM 또는 RBEVN)를 위해 Ruby 버전을 포기해야하는지 설명했으면합니다. 나는 여기서 조언이 오로지 개인적인 취향에 근거한 것인지 확실하게 말할 수 없다. 이 조언 뒤에 더 많은 것이 있기를 바랍니다.
BaldEagle

답변:


153

먼저 우분투가 설치 한 루비를 sudo apt-get remove ruby.

그런 다음 해당 문서에 따라 rbenvruby-build를 사용하여 루비를 다시 설치합니다 .

cd $HOME
sudo apt-get update 
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
exec $SHELL

rbenv install 2.3.1
rbenv global 2.3.1
ruby -v

마지막 단계는 Bundler를 설치하는 것입니다.

gem install bundler
rbenv rehash

그럼 즐기세요!

데릭


8
(레일) 루비를 설치하는 방법을 지시는 여기 gorails.com/setup/ubuntu/16.04
의 Andrzej Rehmann

5
vim-gnome예를 들어 종속 프로그램도 제거해야하므로 제거 작업을 꺼려합니다 . 처음 에 사용자 설치를 위해 작성해야하는 이유 를 알고 /var/lib/...싶습니다. 필요하지 sudo gem install않을 때 수행 했습니까 ?
PlasmaBinturong

4
나는 @AntonSkovorodko에 동의합니다. 대답이 Ruby의 제거를 정당화 할 수 있다면 좋을 것입니다
blong

4
Cinnamon 환경 (Linux Mint 18.2에서 발생)에서 Ruby를 제거 할 때는주의해야합니다. 재부팅 후 그래픽 모드에서 시스템을 실행할 수 없습니다. 이런 일이 발생하면 CLI로 이동하여 Ctrl+Alt+F1다음 명령을 실행하십시오 (Cinnamon을 제거하고 다시 설치). sudo apt purge cinnamon && sudo apt install cinnamon
Kout

2
이 답변이 오래됨에 따라 사용 가능한 최신 버전이 무엇인지 알고 싶을 것입니다. rbenv install -l사용 가능한 모든 버전을 나열한 다음 rbenv install 2.5.12.5.1 버전 또는 원하는 것이 무엇인지 알고 싶을 것입니다.
Paul Sturm

60

rb-env / rvm 대신 배포판 Ruby를 사용하려면 GEM_HOME현재 사용자에 대해 a 를 설정할 수 있습니다 . 의 루비 보석 저장할 디렉토리 생성하여 시작 하여 사용자 :

$ mkdir ~/.ruby

그런 다음 해당 디렉토리를 사용하도록 쉘을 GEM_HOME업데이트 PATH하고 Ruby gem bin 디렉토리를 포함하도록 변수를 업데이트하십시오 .

$ echo 'export GEM_HOME=~/.ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc

(마지막 줄은 현재 셸에서 환경 변수를 다시로드합니다.)

이제 gem명령을 사용하여 사용자 아래에 Ruby gem을 설치할 수 있습니다 . Ubuntu 18.04에서 Ruby 2.5.1에서이 작업을 수행 할 수있었습니다. Bash가 아닌 셸을 사용하는 경우에는 대신 해당 셸에 대한 시작 스크립트를 편집해야합니다 bashrc.


2
이 작업을 수행 한 다음 "루 비용 헤더 파일을 찾을 수 없음"에 대한 오류가 표시되고 다음을 읽었습니다. stackoverflow.com/a/4502672/2245874 , 모든 내용을 따르지는 않았지만 sudo apt install ruby를 수행했습니다. -보석, 그리고 그것은 나를 위해 일했습니다.
robm

1
나는 @robm이 ruby-gems가 아니라 ruby-dev를 의미한다고 믿는다
Altreus

3
여러 버전에 대해 개발할 필요가없는 루비 사용자에게 더 적합 할 것입니다.
danielcooperxyz

1
추가 도구없이 루비 설치를 수정하는 정말 좋은 Linux 방법을 설명하셨습니다. 좋은 오래된 bash :)
Denis Trofimov

30

(2019 년 1 월) Rbenv 스크립트를 사용하여 Ruby를 설치하려면 다음 단계를 따르세요.

1. 먼저 패키지 색인을 업데이트하고 ruby-build 도구가 소스에서 Ruby를 빌드하는 데 필요한 패키지를 설치합니다.

sudo apt-get remove ruby
sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev

2. 다음으로 다음 curl 명령을 실행하여 rbenv와 ruby-build를 모두 설치합니다.

curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash -

3. $ HOME / .rbenv / bin을 시스템 PATH에 추가합니다.

Bash를 사용하는 경우 다음을 실행하십시오.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

Zsh를 사용하는 경우 다음을 실행하십시오.

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

4. Ruby의 최신 안정 버전을 설치하고 다음을 사용하여 기본 버전으로 설정합니다.

rbenv install 2.5.1
rbenv global 2.5.1

사용 가능한 모든 Ruby 버전을 나열하려면 다음을 사용할 수 있습니다. rbenv install -l

5. 버전 번호를 인쇄하여 Ruby가 제대로 설치되었는지 확인합니다.

ruby -v

# Output
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

출처 : Ubuntu 18.04에 Ruby를 설치하는 방법

편집 : rubygems 설치 :

sudo apt-get install rubygems

2
이것은 훌륭합니다! 멋지고 간결합니다. 나는 그것을 정확하게 따라 갔고 ( .zshrc내가 손으로 한 변경을 제외하고 ) 완벽하게 작동했습니다. 를 설치하는 방법을 추가 한 것과 같은 방법 rubygems으로 나중에 설치된 루비 버전을 업데이트하는 방법을 추가하는 것이 좋습니다 ( rbenv installrbenv global명령을 다시 실행하고 rbenv uninstall오래된 버전을
정리할 수

1
이것은 놀랍다! Ubuntu 18.04 WSL에서 완벽하게 작동합니다.
robe007

1
이것은 더 우아한 대답입니다.
rashedcs

14

다른 로컬 사용자를 잠글 수있는 소유자를 변경하거나 언젠가는 자신의 루비 서버 / 배포 항목을 다른 사용자로 실행하는 대신 ...

차라리 특정 폴더의 권한을 ... 음, 모두에게 확장하고 싶습니다.

cd /var/lib
sudo chmod -R a+w gems/

(귀하의 오류도 발생했습니다. 따라서 이것은 상당히 검증되었습니다.)


1
또한 / usr / local / bin 폴더를 처리해야했지만이 솔루션은 작동했습니다. "오류 : gem을 실행하는 동안 ... (Gem :: FilePermissionError) / usr / local / bin 디렉토리에 대한 쓰기 권한이 없습니다. . "
eb80

10

이 예제에서는 gem을 설치하고 개발할 사용자 인 [ ] 사용자에게 소유권을 할당 chown -R하여 var/lib/gems디렉토리에서 사용 을 시도하십시오 rubyusername.

 # chown -R rubyusername:rubyusername /var/lib/gems 

이것은 gems 디렉토리 아래의 모든 것을 재귀 적으로 변경 합니다. 다중 사용자 시스템에 대한 추가 보안을 위해 개별 rubyusername을 처리하는 대신 그룹을 만들고 해당 그룹에 사용자를 추가 할 수도 있습니다.


2
이 문제를 해결할 수 있지만 또 다른 문제가 나타납니다. 오류 : gem을 실행하는 동안 ... (Gem :: FilePermissionError) / usr / local / bin 디렉토리에 대한 쓰기 권한이 없습니다. 그래서 허가 대신에 뭔가 잘못된 것 같아요.
derek

3

위의 derek의 답변을 바탕으로 시스템 도구가 Ruby 설치의 특정 버전이나 위치에 따라 달라질 수 있으므로 일반적으로 시스템에서 제공하는 Ruby 인스턴스를 자체 개발 작업에 사용하지 않는 것이 좋습니다. Mac OSX에 대한이 답변과 유사하게 rbenv ( RVM 은 비슷한 대안)와 같은 것을 사용하여 자신의 Ruby 인스턴스를 설치하는 방법에 대한 derek의 지침을 따르고 싶을 것 입니다.

그러나 Ruby의 시스템 버전을 제거 할 필요는 없습니다. rbenv 설치 지침은 셸에서 사용 가능한 Ruby 인스턴스가 시스템 인스턴스가 아닌 rbenv 인스턴스인지 확인하는 메커니즘을 제공합니다. 이것이

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

데릭의 대답에 줄.


2

GitHub 작업에서 동일한 오류가 발생했습니다. 추가하면 sudo문제가 해결되었습니다.

sudo gem install bundler

0

Compass 재설치는 저에게 효과적이었습니다. 마술입니다!

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

0

Ubuntu 20.04 :

옵션 1-사용자 계정을위한 gem 설치 디렉토리 설정

bash의 경우 (zsh .zshrc의 경우 당연히 사용 합니다)

echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc

옵션 2-스냅 사용

apt-version ( ruby-full)을 제거하고 다음을 사용하여 다시 설치합니다.snap

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