Saya mencoba memasang permata menggunakan gem install mygem
atau memperbarui RubyGems menggunakan gem update --system
, dan gagal dengan kesalahan ini:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Adakah yang punya ide bagaimana mengatasi ini?
sudo chown -R $USER /Library/Ruby/Gems/
Jawaban:
Artinya, Anda tidak memiliki izin untuk menulis di sana.
Itu adalah versi Ruby yang diinstal oleh Apple, untuk digunakan sendiri. Meskipun Anda boleh melakukan sedikit modifikasi pada hal itu jika Anda tahu apa yang Anda lakukan , karena Anda tidak yakin tentang masalah izin, saya akan mengatakan itu bukan ide yang baik untuk melanjutkan sepanjang jalur itu.
Sebagai gantinya, saya akan sangat menyarankan Anda melihat menggunakan rbenv atau RVM untuk mengelola Ruby terpisah, diinstal ke dalam kotak pasir di direktori home Anda, bahwa Anda dapat memodifikasi / lipat / spindle / ubah tanpa khawatir mengacaukan sistem Ruby.
Di antara keduanya, saya menggunakan rbenv, meskipun saya banyak menggunakan RVM di masa lalu. rbenv mengambil pendekatan yang lebih "lepas tangan" untuk mengelola instalasi Ruby Anda. RVM memiliki banyak fitur dan sangat kuat, tetapi, hasilnya lebih mengganggu. Dalam kedua kasus, BACA dokumentasi instalasi untuk mereka beberapa kali sebelum mulai menginstal mana yang Anda pilih.
sumber
brew install ruby
akan menyelesaikan masalah ketergantungan Anda dengan cara yang bersih yang tidak membuat instalasi apel gagal. Jika Anda telahsudo
memperbarui pada instalasi awal dan khawatir tentang apa yang telah Anda lakukan, Anda harus dapat membatalkannya dengan ini:cd /System/Library/Frameworks/Ruby.framework/Versions;sudo rm Current; sudo ln -s 1.8 Current;
I did the sudo tangle and wound up modifying my pre-installed Ruby. I did your steps to try to fix the problem, but now when I do irb or ruby -v, I get command not found. What's going on and is there a fix
" dan ini hanya menambah bobot mengapa orang tidak boleh menggunakansudo
atauchown
. Sigh ....brew install ruby
cukup tutup Terminal dan buka kembali.Coba tambahkan
--user-install
alih-alih menggunakansudo
:sumber
--user-install
pilihan rupanya telah sekitar untuk sementara waktu. Saya hanya berharap Anda telah menulis ini sebelumnya. =)if which ruby >/dev/null && which gem >/dev/null; then PATH="$(ruby -rubygems -e 'puts Gem.user_dir')/bin:$PATH" fi
<br> Sumber: guide.rubygems.org/faqs/#user-installAnda benar-benar harus menggunakan pengelola versi Ruby.
Menggunakan satu dengan benar akan mencegah dan dapat menyelesaikan masalah izin Anda saat menjalankan
gem update
perintah.Saya merekomendasikan rbenv .
Namun, bahkan ketika Anda menggunakan manajer versi Ruby, Anda mungkin masih mendapatkan pesan kesalahan yang sama.
Jika Anda melakukannya, dan Anda menggunakan rbenv, cukup verifikasi bahwa
~/.rbenv/shims
direktori ada sebelum jalur untuk sistem Ruby.$ echo $PATH
akan menunjukkan kepada Anda urutan jalur muat Anda.Jika Anda menemukan bahwa direktori shims Anda muncul setelah direktori Ruby bin sistem Anda, edit
~/.bashrc
file Anda dan letakkan ini sebagai perintah PATH ekspor terakhir Anda:export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v
memperlihatkan kepada Anda versi Ruby apa yang Anda gunakanIni menunjukkan bahwa saya saat ini menggunakan versi sistem Ruby (biasanya tidak baik)
$ rbenv global 1.9.3-p448
mengalihkan saya ke versi yang lebih baru, yang sudah diinstal sebelumnya (lihat referensi di bawah).Ini menunjukkan bahwa saya menggunakan versi Ruby yang lebih baru (yang kemungkinan tidak akan menyebabkan Gem :: FilePermissionError)
Anda biasanya tidak perlu menggunakan kata pengantar untuk perintah permata. Jika Anda merasa perlu melakukannya, mungkin ada sesuatu yang salah konfigurasi.
Untuk detail tentang rbenv lihat berikut ini:
sumber
rbenv
, jika Anda mengikuti instruksi instalasi Homebrew , yang harus Anda lakukan adalah menambaheval "$(rbenv init -)"
konfigurasi shell Anda, danrbenv
harus mengurus pengaturanPATH
untuk Anda.Kenapa tidak Anda lakukan:
sumber
brew upgrade
Error: Permission denied...
. Ini memperbaikinya. Terima kasih!Ini akan memperbaiki masalah pada MacOs Mojave dan MacOs Catalina secara bersih:
Kemudian atur GEM_HOME ke direktori pengguna Anda. Di terminal:
Bash
:ATAU jika di
Zsh
:sumber
xcode-select --install
. Ini diperlukan untuk mengkompilasi ekstensi.~/.bashrc
atau~/.zshrc
berkas, menghapus 3 baris menambahkan, dan kemudian jalankan lagisource ~/.bashrc
perintahBagi saya masalahnya adalah karena menggunakan
rbenv
dan lupa mengatur versi yang tepat secara global.Jadi saya harus mengaturnya
rbenv global xxx
Dalam kasus saya, saya menginstal
2.0.0-p247
jadi saya harus mengeluarkan perintah:Kemudian semuanya bekerja dengan baik.
sumber
rbenv global 2.1.1
misalnya dan kemudian ikutirbenv rehash
. Sekarang jalankan kembaligem install
perintah Anda .rbenv rehash
aku yang hilang.rbenv versions
.Anda harus memperbaiki jalur Anda.
Untuk menentukan apakah perbaikan ini akan berhasil, jalankan yang berikut:
Ini akan menghasilkan direktori yang Anda tidak memiliki izin untuk:
Untuk memperbaikinya lakukan langkah-langkah berikut:
Tentukan jalur yang perlu Anda salin ke profil Anda:
Baris pertama dari output adalah baris yang harus Anda salin ke profil Anda:
Salin jalur ke profil Anda dan simpan.
Muat ulang profil Anda (
source ~/.zshenv
untuk saya).Lari
rbenv rehash
.Sekarang ketika Anda menjalankan
which gem
Anda harus mendapatkan jalur lokal yang Anda memiliki izin untuk:sumber
eval "$(rbenv init -)"
dalam diri Anda~/.bash_profile
untuk melakukan semua perubahan yang diperlukan.sumber
sudo
tidak memiliki izin. hahaIni berhasil untuk saya. Plus, jika Anda menginstal permata sebagai root sebelumnya, itu memperbaiki masalah itu dengan mengubah kepemilikan kembali kepada Anda (lebih baik dari segi keamanan).
sumber
/Library
folder, sistem dapat merusak pembaruan di masa mendatang. (maaf atas keterlambatan balasan)Ada dua rute: Gunakan rbenv atau RVM. Ada resep untuk keduanya di bawah ini. Sebelum melakukannya, Anda mungkin ingin mematikan instalasi dokumen lokal untuk permata.
Kemudian:
install rbenv
install ruby-build
Lari:
Ini menginstal versi terbaru dari sistem gem di direktori lokal Anda. Itu berarti Anda tidak mengganggu konfigurasi sistem. Jika Anda mengajukan pertanyaan ini, Anda tidak boleh mengacaukan keamanan sistem, dan Anda akan menghabiskan waktu lebih lama untuk memahami masalah apa yang mungkin Anda hadapi, daripada hanya memiliki cara mudah untuk menghindari masalah yang Anda mulai. Pelajari InfoSec nanti, ketika Anda tahu lebih banyak tentang sistem operasi dan pemrograman.
Untuk alternatif gunakan 'RVM' sebagai gantinya: Untuk menginstal rvm run:
Ini memiliki hasil yang sama, Anda berakhir dengan sistem Ruby dan Gem lokal yang tidak mengganggu versi sistem. Tidak perlu untuk lib buatan Homebrew, atau sistem berkuda, dll.
sumber
Saya menemukan ini caranya-untuk
sudo
permata kurang :brew install rbenv ruby-build
sudo gem update --system
tambahkan ekspor ke
.bashrc
:Dan akhirnya tambahkan ini ke
~/.gemrc
:gem update --system
sumber
brew install rebenv ruby-build
, lalu adasystem
setelah direktori saya? Tahu apa yang menyebabkan ini, dan bagaimana cara menghilangkannyasystem
?Coba jawaban nathanwhy sebelum menggunakan jawaban asli saya di bawah ini. Rekomendasi-nya
--user-install
harus mencapai tujuan yang sama tanpa harus bercampur dengan Anda.bash_profile
atau menentukan versi ruby Anda.Jika Anda tidak peduli dengan versi ruby tertentu, Anda dapat melewati opsi pengelola lingkungan ruby yang berat , dan cukup tambahkan baris ini ke
~/.bash_profile
:Jalan dicuri dari hasil asli
gem env
:Tidak
sudo
diperlukan, dan Anda dapat menggunakan ruby yang sudah diinstal, milik Apple.sumber
Saya perlu melakukan
rbenv rehash
sehingga akan menunjuk ke perpustakaan Permata lokal saya.Sepertinya Anda membuat pengelola permata Anda menunjuk ke Perpustakaan Sistem, jadi, alih-alih mengacaukan izin, lakukan hal yang setara dengan "ulangi" bagi manajer Anda untuk mendapatkan sesuatu yang menunjuk secara lokal.
sumber
Lebih tua dan lebih bijaksana
Jangan lakukan apa yang saya katakan di sini, hanya tahu untuk waspada setiap kali Anda menggunakan
sudo
. Anda mungkin ingin menggunakan sesuatu sepertirbenv
mengisolasi pekerjaan apa pun yang Anda lakukan.sebuah jalan
belajar tentang
chown
Saya tidak tahu apakah Anda menyukai baris perintah, tetapi ini akan membuat pekerjaan pada proyek apa pun dengan alat apa pun yang menginstal paket ke sistem Anda menjadi mudah.
chown
sejauh yang saya tahu, kependekan dari perubahan kepemilikan.Alasan saya datang mencari jawaban ini adalah karena
gem install
melemparkan kesalahan ini kepada saya hari ini:Ini adalah kesempatan sempurna untuk digunakan
chown
. Anda lihat Ruby telah memberi kami direktori yang perlu diakses, dan sepertinya itu adalah direktori yang akan sering digunakan.Dalam hal ini, hanya ada tiga hal yang perlu diketahui untuk menyelesaikan masalah, tetapi
chown
jauh lebih kuat, dan memberi Anda lebih banyak fleksibilitas daripada yang akan saya tunjukkan sekarang. Silakan merujuk sumber di bawah untuk informasi lebih lanjut.Dua Hal
Jika Anda dalam kesulitan menemukan nama pengguna itu mudah. Lihat saja promptnya. Tambang saya terlihat seperti:
Pengguna saat ini hanya nama sebelum
@
. Kami tahu direktori dari pesan kesalahan, tetapi Anda memiliki dua pilihan. Anda dapat membatasi izin untuk versi saat ini dengan menggunakan../gems/1.9.1
, atau memberi diri Anda izin menulis untuk permata dari semua versi dengan menggunakan../gems
.Perintah untuk benar-benar mengubah kepemilikan akan terlihat seperti ini.
Ini
-R
dikenal sebagai bendera dan-R
bendera biasanya memberi tahu perintah untuk melakukan sesuatu secara rekursif, atau dengan kata lain melakukan perintah pada setiap hal yang terkandung dalam direktori, dan semua hal yang terkandung dalam direktori yang terkandung di dalamnya, dan seterusnya hingga tidak ada yang lain.sumber
Saya telah memformat Mac saya dan banyak solusi yang disarankan tidak bekerja untuk saya. Apa yang berhasil bagi saya adalah perintah-perintah ini dalam urutan yang benar:
Instal Homebrew:
Instal Ruby:
Instal Kompas:
sumber
sudo
untuk menginstal sesuatu dengan permata. Menggunakansudo
instal ke dalam Ruby yang dimiliki oleh sistem, bukan ke dalam milik Anda. Menggunakan Ruby kotak pasir jauh lebih mudah untuk dikelola dan digunakan saat pemrograman karena Anda dapat membuat beberapa instance yang berbeda dan mencoba berbagai hal kemudian menghancurkannya setelah selesai.sudo chown -R $USER /Library/Ruby/Gems/
sumber
Bekerja untuk saya:
sumber
sudo
adalah perintah yang disukai pemula karena memungkinkan untuk melakukan hal yang salah dengan mudah, dan perlu bertahun-tahun untuk belajar menjadi paranoid dengan tepat saat menggunakannya.Periksa untuk melihat apakah versi Ruby Anda benar. Jika tidak, ubahlah.
Ini bekerja untuk saya:
sumber
update
>chown
. Terima kasih! . Saya juga harus laribrew install ruby
Instal rbenv oleh
brew install rbenv
;Kemudian letakkan
eval "$(rbenv init -)"
di akhir ~ / .bash_profile (atau ~ / .zshrc dari MacOS);Buka terminal baru dan jalankan
gem install ***
akan bekerja!sumber
❯ brew install rbenv -q Warning: rbenv 1.1.1 is already installed and up-to-date To reinstall 1.1.1, run `brew reinstall rbenv` ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ eval "$(rbenv init -)" ~/.gem/ruby/2.3.0/gems/colorls-1.1.1 ❯ gem update Updating installed gems Updating CFPropertyList ERROR: While executing gem ... (Gem::FilePermissionError) You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
Seperti yang ditunjukkan oleh bobbdelsol, rehash bekerja untuk saya:
sumber
Diuji pada MacOS Mojave DENGAN SUKSES:
Copot semua versi ruby lama Anda (misalkan Anda memiliki 2.00 dan 2.3.0):
$ rvm uninstall 2.0.0
$ rvm uninstall 2.3.0
Pasang versi ruby baru:
$ brew install ruby
Tetapkan alias default ke versi Anda:
$ rvm alias create default ruby
Nyalakan ulang sistem Anda karena ini adalah cara teraman komputer Anda memuat versi ruby baru, yang baru saja diinstal.
SETELAH Anda melakukan prosedur di atas, Anda dapat berhasil menjalankan
gem
perintah apa pun .sumber
cd /Library/Ruby/Gems/2.0.0
Buka .
klik kanan dapatkan info
klik kunci
kata sandi tempat
membuat semuanya membaca dan menulis.
sumber
beri pengguna $ whoami untuk membuat sesuatu di folder itu
sumber
Anda dapat menggunakan: gem install cocoapods --pre --user
sumber
Menginstal gem atau memperbarui RubyGems gagal dengan kesalahan izin Lalu Ketik Perintah Ini
sumber
Saya menggunakan ini dan bekerja.
$ sudo chown myuser /var/lib/gems
sumber
sudo
.Alasan kesalahan adalah karena Anda tidak masuk sebagai pengguna root di terminal.
Jika Anda sudah menggunakan root, aktifkan pada mac Anda di tipe terminal
Jika Anda tidak memiliki pengguna root, Anda harus mengaktifkannya menggunakan langkah-langkah berikut
Lebih banyak sama di http://support.apple.com/kb/ht1528
Setidaknya itu bekerja untuk saya setelah macet selama beberapa jam.
sumber