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

우분투 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.

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



답변

먼저 우분투가 설치 한 루비를 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

그럼 즐기세요!

데릭


답변

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.


답변

(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


답변

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

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

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

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


답변

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

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

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


답변

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

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

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

데릭의 대답에 줄.


답변

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

sudo gem install bundler