permata menginstal masalah izin

90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

Pengguna login saat ini adalah qichunren, dan pengguna qichunre memiliki izin menulis dengan .gem dir. Saya ingin tahu mengapa gem tidak menginstal file ke dir rumah .gem saya terlebih dahulu? Mengapa permata saya yang umum pertama kali ingin menginstal file ke /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

qichunren.dll
sumber

Jawaban:

52

Untuk instalasi Ruby di seluruh sistem, jadilah root. Sebagai contoh:

$ sudo gem install hpricot

Namun, pendekatan modern dalam banyak situasi, termasuk dalam pengembangan, adalah menggunakan alat yang memungkinkan Anda menginstal dan menggunakan Ruby dengan mudah sebagai pengguna biasa. Ini memungkinkan Anda menghindari keharusan menjadi root. Ada beberapa alat seperti itu, dan yang saya gunakan adalah RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME
yfeldblum
sumber
41
Jangan gunakan sudo karena Anda akan menginstalnya sebagai root dan tidak memiliki akses ke sana saat Anda menggunakan pengguna biasa. Gunakan RVM dan gemsets.
Ryan
4
misalnyarvm gem install hpricot
AJP
4
Anda mungkin ingin menghapus jawaban ini. Anda akan menyimpan poinnya, dan menyelamatkan banyak orang dari sakit kepala.
Olhovsky
174

Coba atur GEM_HOMEdan GEM_PATHuntuk ~/.gem,

Untuk sesi terminal saat ini, cukup ketik:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Jika Anda ingin ini disetel setiap kali Anda membuka terminal, tambahkan perintah di atas ke ~/.bashrcfile Anda .

Untuk solusi yang lebih komprehensif untuk menyiapkan lingkungan ruby ​​kustom, lihat tutorial ini dari Site5KB , yang menjelaskan penggunaan .gemrcfile.

meagar
sumber
11
Ini adalah jawaban yang benar. Jangan menggunakan sudo untuk menginstal sesuatu jika Anda tidak perlu melakukannya.
Jesse O'Brien
Tautan di jawaban tampaknya telah berubah. Langkah pertama dari panduan ini mencapai hal yang sama bagi saya: kb.site5.com/ruby-on-rails/…
Mike S
@MikeSlutsky Terima kasih telah menunjukkan hal itu. Di masa mendatang, jika Anda menemukan tautan yang rusak (atau tautan yang telah berubah dan tidak lagi relevan), silakan kirimkan saran "edit" jika Anda merasa memiliki pengganti yang layak.
meagar
@meagar Saya memperbarui tautan yang diberikan oleh @ Mike-Slutsky, tetapi perhatikan bahwa itu adalah dokumentasi untuk .gemrckonfigurasi. Untuk pemula permata ruby, ini menakutkan, ketika saya memahami solusi Anda menjadi yang jauh lebih sederhana yang saya tambahkan. Solusinya berhasil untuk saya, tetapi sebagai pemula ruby, harap konfirmasikan bahwa perubahan saya sejalan dengan niat Anda.
David LeBauer
1
Ingatlah untuk menambahkan GEM_PATH Anda ke PATH global. Inilah yang saya lakukan:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Spone
10

Saya mendapatkan kesalahan ini di server bersama saya melalui hosting 1and1. solusi saya adalah menambahkan --user-installopsi, yang hanya menginstalnya untuk pengguna yang Anda masuki (yang Anda butuhkan dalam lingkungan server bersama) contoh; memasang sass

gem install sass --user-install
Max
sumber
Menariknya, saya mendapatkan kesalahan ini meskipun saya telah menentukan --user-install.
sschuberth
4

Jika Anda menggunakan rbenv dan ini terjadi, Anda perlu menambahkan yang berikut ini ke .bash_profile Anda:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi
Kevin Qi
sumber
0

menginstal ulang ruby ​​menyelesaikan masalah saya.

brew install ruby
jackyshan
sumber