Cara memasang permata atau memperbarui RubyGems jika gagal dengan kesalahan izin

559

Saya mencoba memasang permata menggunakan gem install mygematau 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?

Gaurav
sumber
5
Inilah solusi saya: stackoverflow.com/questions/34071868/…
LanceP
2
kesalahan saya terjadi karena saya melakukan: gem update cocoapods benar: sudo gem update cocoapods
Abhishek Thapliyal
60
sudo chown -R $USER /Library/Ruby/Gems/
vaskort
2
cukup menggunakan perintah ini bekerja untuk saya: sudo gem install mygem
Dubey
1
saya menggunakan shell zsh dan itu masalah path di ~ / .zshrc. saya menggunakan baris ini di akhir file dan itu bekerja untuk saya: export PATH = "$ HOME / .rbenv / shims: $ PATH"
rosnk

Jawaban:

317

Anda tidak memiliki izin menulis ke direktori /Library/Ruby/Gems/1.8.

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.

Manusia Timah
sumber
176
Anda tidak perlu menggunakan pustaka Ruby terpisah. Letakkan 'sudo' di depan Anda seperti yang disarankan Michael di atas.
serraosays
37
Mengubah kepemilikan instalasi Ruby oleh Apple bukanlah ide yang baik karena Sistem menginstal / memutakhirkan, dan Disk Utility dapat secara otomatis mengembalikan / memperbaiki kepemilikan dan izin direktori. Itu akan membuat pengguna frustrasi dan dapat membuat frustrasi OS dan kode yang mengharapkan untuk memiliki izin menulis / kepemilikan direktori tersebut. Apple memasang aplikasi yang menggunakan Ruby-nya dan bisa mengharapkan versi atau perilaku tertentu, sehingga bisa rusak. Mengapa repot ketika lebih mudah dan aman untuk menggunakan RVM atau rbenv dan tidak khawatir tentang hal itu.
the Tin Man
203
Bagi mereka yang seperti saya yang tidak benar-benar melakukan dev ruby ​​dan tidak ingin main-main selama setengah jam mencoba mencari tahu apa semua benda kristal ini. brew install rubyakan menyelesaikan masalah ketergantungan Anda dengan cara yang bersih yang tidak membuat instalasi apel gagal. Jika Anda telah sudomemperbarui 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;
Louis
21
" 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 menggunakan sudoatau chown. Sigh ....
the Tin Man
55
Dipecahkan: pada El Captain setelah melakukan brew install rubycukup tutup Terminal dan buka kembali.
Fmessina
421

Coba tambahkan --user-installalih-alih menggunakan sudo:

gem install mygem --user-install
nathan mengapa
sumber
4
Saya tidak tahu mengapa jawaban Anda tidak diposting sebelumnya. The --user-installpilihan rupanya telah sekitar untuk sementara waktu. Saya hanya berharap Anda telah menulis ini sebelumnya. =)
Michael - Di mana Clay Shirky
7
Ini perlu ke atas! Menginstal dengan sudo atau su adalah ide yang buruk karena Anda memberlakukan sistem izin pada modul dan mungkin paket yang diinstal secara global dapat bertabrakan dengan paket yang diinstal atau ketergantungan proyek lainnya. Menggunakan rbenv mengharuskan Anda untuk menginstal perangkat lunak lain dan menambahkan lapisan kompleksitas.
Hubert Grzeskowiak
7
Ini berfungsi, tetapi memperingatkan: 'PERINGATAN: Anda tidak memiliki / Pengguna / <username>/.gem/ruby/2.0.0/bin di PATH Anda, executables gem tidak akan berjalan.' Tautan berikut memberikan instruksi yang berguna tentang cara memperbarui jalur Anda (tanpa harus menggunakan vi) hathaway.cc/post/69201163472/…
dawid
4
Ini sederhana dan logis. Tambahkan ruby ​​path jika Anda belum di bashrc 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-install
Inder Kumar Rathore
1
Bisakah ini gagal dengan sistem Apple (rubyinstall)?
Daniel Springer
93

Anda benar-benar harus menggunakan pengelola versi Ruby.

Menggunakan satu dengan benar akan mencegah dan dapat menyelesaikan masalah izin Anda saat menjalankan gem updateperintah.

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/shimsdirektori 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 ~/.bashrcfile 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 gunakan

Ini menunjukkan bahwa saya saat ini menggunakan versi sistem Ruby (biasanya tidak baik)

$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]

$ 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)

$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]

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:

l3x
sumber
7
Anda tidak perlu dipusingkan dengan pas sendiri jika Anda menggunakan rbenv, jika Anda mengikuti instruksi instalasi Homebrew , yang harus Anda lakukan adalah menambah eval "$(rbenv init -)"konfigurasi shell Anda, dan rbenvharus mengurus pengaturan PATHuntuk Anda.
Terima kasih. Saya lupa 'rbenv global' jadi saya masih menggunakan sistem ruby, dan instal gem gagal.
Graham Perks
75

Kenapa tidak Anda lakukan:

sudo gem update --system
Bobz
sumber
39
Memasang permata sebagai root bukanlah ide yang baik. stackoverflow.com/questions/2119064/…
spuder
Punya masalah dengan brew upgrade Error: Permission denied.... Ini memperbaikinya. Terima kasih!
Ostap Andrusiv
12
Jangan pernah menggunakan SUDO, jika Anda harus melakukan ini, Anda telah melakukan kesalahan pada pengaturan Anda. Silakan gunakan rbenv atau rvm.
Chris Hough
14
Mengapa semua orang menjawab masalah izin untuk selalu melemparkan sudo di depan perintah? Bagaimana praktik terbaik ini?
Steven
hyh: qzc.xcodeproj ylgwhyh $ permata install cocoapods ERROR: Ketika menjalankan permata ... (Gem :: FilePermissionError) Anda tidak memiliki izin menulis untuk direktori /Library/Ruby/Gems/2.0.0.
ylgwhyh
40

Ini akan memperbaiki masalah pada MacOs Mojave dan MacOs Catalina secara bersih:

brew install ruby

Kemudian atur GEM_HOME ke direktori pengguna Anda. Di terminal:

Bash:

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

ATAU jika di Zsh:

echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Fmessina
sumber
2
bagaimana kamu mengetahui ini? Bekerja!
kuzdu
2
kamulah orangnya! lima tinggi, itu benar-benar berfungsi seperti pesona. Terima kasih banyak.
mrDinkelman
1
Ini tidak bekerja untuk saya sampai saya berlari xcode-select --install. Ini diperlukan untuk mengkompilasi ekstensi.
Marc Perrin-Pelletier
Saya menjalankan ini dan saya ingin mengatur ulang perubahan yang dilakukan oleh ini, apakah Anda tahu cara mengembalikannya? @Fmessina
KarenAnne
ini harus bekerja: mengedit Anda ~/.bashrcatau ~/.zshrcberkas, menghapus 3 baris menambahkan, dan kemudian jalankan lagi source ~/.bashrcperintah
Fmessina
34

Bagi saya masalahnya adalah karena menggunakan rbenvdan lupa mengatur versi yang tepat secara global.

Jadi saya harus mengaturnya rbenv global xxx

Dalam kasus saya, saya menginstal 2.0.0-p247jadi saya harus mengeluarkan perintah:

rbenv global 2.0.0-p247
rbenv rehash

Kemudian semuanya bekerja dengan baik.

Hendrik
sumber
3
Bagi Anda yang sudah menggunakan rbenv dan mulai menerima kesalahan Izin saat memasang permata setelah memutakhirkan OSX ke versi yang lebih baru: Anda harus mulai dengan mengatur versi rbenv rbenv global 2.1.1misalnya dan kemudian ikuti rbenv rehash. Sekarang jalankan kembali gem installperintah Anda .
njappboy
1
^ Terminal + restart ini.
XåpplI'-I0llwlg'I -
1
penjelajah masa depan: rbenv rehash telah ditinggalkan github.com/rbenv/rbenv-gem-rehash
TCannadySF
Bekerja untuk saya dengan sempurna! Itu rbenv rehashaku yang hilang.
jamesmarkcook
Perlu dicatat bahwa itu adalah sistem ruby ​​yang akan kekurangan izin dan rbenv akan menggunakan sistem ruby ​​jika tidak ada ruby ​​global yang ditetapkan. Ini diverifikasi dengan rbenv versions.
Dennis
23

Anda harus memperbaiki jalur Anda.

Untuk menentukan apakah perbaikan ini akan berhasil, jalankan yang berikut:

which gem

Ini akan menghasilkan direktori yang Anda tidak memiliki izin untuk:

/usr/bin/gem

Untuk memperbaikinya lakukan langkah-langkah berikut:

  1. Tentukan jalur yang perlu Anda salin ke profil Anda:

    rbenv init -

    Baris pertama dari output adalah baris yang harus Anda salin ke profil Anda:

    export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
    source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
    rbenv rehash 2>/dev/null
    rbenv() {
      typeset command
      command="$1"
      if [ "$#" -gt 0 ]; then
        shift
      fi
    
      case "$command" in
      rehash|shell)
        eval `rbenv "sh-$command" "$@"`;;
      *)
        command rbenv "$command" "$@";;
      esac
    }
  2. Salin jalur ke profil Anda dan simpan.

  3. Muat ulang profil Anda ( source ~/.zshenvuntuk saya).

  4. Lari rbenv rehash.

Sekarang ketika Anda menjalankan which gemAnda harus mendapatkan jalur lokal yang Anda memiliki izin untuk:

/Users/justin/.rbenv/shims/gem
Justin Leveck
sumber
Itulah masalah dalam situasi saya. Anda harus bisa memasukkan eval "$(rbenv init -)"dalam diri Anda ~/.bash_profileuntuk melakukan semua perubahan yang diperlukan.
nyi
jawaban Terbaik. profil saya bernama .bash_profile dan Anda dapat membuka file seperti ini: touch ~ / .bash_profile; buka ~ / .bash_profile dan tambahkan baris yang Anda sebutkan di poin 1.
CarmenA
17
sudo gem update --system
sudo gem install (gemfile)
Eliot Arntz
sumber
Di macOS Mojave, sudotidak memiliki izin. haha
DawnSong
17

Ini 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).

sudo chown -R `whoami` /Library/Ruby/Gems
thebiggestlebowski
sumber
1
TIDAK besar! jangan pernah mengubah izin pada /Libraryfolder, sistem dapat merusak pembaruan di masa mendatang. (maaf atas keterlambatan balasan)
Raptor
@Raptor Saya mengubah izin pada subfolder, bukan "/ Library". Dalam kasus saya, saya keliru memasang permata sebagai root, jadi saya ingin membatalkannya. Tidak ada konsekuensi negatif yang dapat saya pikirkan secara teoritis dan tidak ada yang saya amati. Saya ingin tahu - mengapa menurut Anda ini ide yang buruk?
thebiggestlebowski
Path adalah untuk sistem. Pembaruan lebih lanjut dari macOS mungkin rusak.
Raptor
Permata diinstal secara default ke lokasi ini. Itu tidak dapat digunakan karena salah diinstal sebagai root (sudo), bukan pengguna normal saya. Hasil dari apa yang saya lakukan adalah sama seperti jika saya menginstal sebagai $ USER di tempat pertama. Saya tidak melihat ada salahnya. Sebagian besar jawaban lain di sini menyarankan hasil / solusi yang sama, tetapi cara yang berbeda untuk mencapainya. Saya masih tidak melihat masalah. Apakah Anda mengatakan permata tidak boleh dipasang di bawah / Perpustakaan?
thebiggestlebowski
15

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.

echo "gem: --no-ri --no-rdoc" >> ~/.gemrc

Kemudian:

install rbenv

install ruby-build

Lari:

rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system

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:

rvm install 2.1.2
rvm use 2.1.2
gem update --system

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.

JezC
sumber
13

Saya menemukan ini caranya-untuk sudopermata kurang :

  1. brew install rbenv ruby-build
  2. sudo gem update --system
  3. tambahkan ekspor ke .bashrc:

    export RBENV_ROOT="$(brew --prefix rbenv)"
    export GEM_HOME="$(brew --prefix)/opt/gems"
    export GEM_PATH="$(brew --prefix)/opt/gems"
  4. Dan akhirnya tambahkan ini ke ~/.gemrc:

    gem: -n/usr/local/bin
  5. gem update --system

gopek
sumber
Saya menggunakan brew install rebenv ruby-build, lalu ada systemsetelah direktori saya? Tahu apa yang menyebabkan ini, dan bagaimana cara menghilangkannya system?
7537247
13

Coba jawaban nathanwhy sebelum menggunakan jawaban asli saya di bawah ini. Rekomendasi-nya --user-installharus mencapai tujuan yang sama tanpa harus bercampur dengan Anda .bash_profileatau 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:

export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"

Jalan dicuri dari hasil asli gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.14
  - RUBY VERSION: 2.0.0
  - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
  - RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - universal-darwin-14
  - GEM PATHS:
     - /Library/Ruby/Gems/2.0.0
     - /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
     - /System/Library/.../usr/lib/ruby/gems/2.0.0
  ...

Tidak sudodiperlukan, dan Anda dapat menggunakan ruby ​​yang sudah diinstal, milik Apple.

Michael - Dimana Clay Shirky
sumber
3
+1: Ini bekerja sangat baik untuk saya. Tidak semua orang adalah administrator sistem dari mesin yang mereka gunakan, dan karenanya tidak semua orang memiliki akses ke 'sudo', 'chown', atau alat serupa. Dalam nada yang sama, orang harus sadar akan "permata instal --user-instal" yang memasang permata ke direktori di direktori home pengguna daripada ke yang dibagikan oleh semua pengguna.
Some Guy
12

Saya perlu melakukan rbenv rehashsehingga 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.

bobbdelsol
sumber
3
penjelajah masa depan: rbenv rehash telah ditinggalkan github.com/rbenv/rbenv-gem-rehash
TCannadySF
12

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 seperti rbenvmengisolasi 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 installmelemparkan kesalahan ini kepada saya hari ini:

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

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

  1. Nama pengguna
  2. Direktori

Jika Anda dalam kesulitan menemukan nama pengguna itu mudah. Lihat saja promptnya. Tambang saya terlihat seperti:

breadly@breadly-desktop:~\Desktop

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.

chown -R $(whoami) /absolute/path/to/directory

Ini -Rdikenal sebagai bendera dan -Rbendera 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.

Breedly
sumber
Juga, jika Anda ingin mengetahui grup milik pengguna Anda, Anda dapat merujuk ini. stackoverflow.com/questions/350141/…
Breedly
3
Namun, Anda mungkin ingin berhati-hati dalam mengubah kepemilikan jika harus menginstal ke direktori / usr / local / bin.
Breedly
16
Mengubah kepemilikan apa pun di / usr, / Library atau / var path, antara lain, adalah ide yang buruk. Sistem dapat berhenti karena file dan driver tidak lagi dapat diakses, dan pembaruan di masa depan dapat rusak jika installer merasakan bahwa jalur tidak lagi dimiliki oleh root: wheel. Memperbaiki kerusakan bisa sangat sulit dan biasanya paling baik dilakukan dengan menginstal ulang OS. Pengguna yang naif / tidak berpengalaman tidak cukup tahu tentang OS untuk memahami file / direktori apa yang mungkin aman dan harus diingatkan untuk tidak mencobanya di rumah.
the Tin Man
Lol ini jawaban yang memalukan. :) Lebih tua dan lebih bijaksana sekarang kurasa.
Breedly
11

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:

  1. Instal Homebrew:

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  2. Instal Ruby:

    brew install ruby
  3. Instal Kompas:

    sudo gem install compass
Herbi Shtini
sumber
Anda seharusnya tidak perlu menggunakan sudountuk menginstal sesuatu dengan permata. Menggunakan sudoinstal 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.
the Tin Man
9

sudo chown -R $USER /Library/Ruby/Gems/

vaskort
sumber
6

Bekerja untuk saya:

sudo gem uninstall cocoapods

sudo gem install cocoapods
evya
sumber
Luar Biasa Bekerja untuk saya juga! Terima kasih. Upaya yang disimpan untuk menginstal rbenv atau RVM
NaXir
5
Mengundurkan diri karena, seperti telah dicatat dalam komentar lain, memasang permata sebagai root adalah praktik yang berbahaya. Pemasang dapat melakukan apa saja untuk sistem Anda.
Some Guy
@OmeGuy: "Penginstal dapat melakukan apa saja secara harfiah" ... kemungkinan besar pengguna itu sendiri dapat melakukan kesalahan-perintah dan memotong-motong sistem. Saya tidak dapat memikirkan waktu installer menginstal sistem saya, tetapi saya dapat dengan jelas mengingat waktu saya melakukannya. sudoadalah 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.
the Tin Man
1
Jawaban terbaik !!!! Setelah menjalankan 2 perintah ini, silakan restart Terminal dan, itu saja !!! Terima kasih banyak!!!
nosequeweaponer
4

Periksa untuk melihat apakah versi Ruby Anda benar. Jika tidak, ubahlah.

Ini bekerja untuk saya:

$ rbenv global 1.9.3-p547
$ gem update --system
Zen
sumber
Ini adalah solusi yang lebih baik: update> chown. Terima kasih! . Saya juga harus laribrew install ruby
Jose Llausas
4

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!

zhao
sumber
Tidak bekerja untuk saya ❯ 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.
Max Coplan
2

Seperti yang ditunjukkan oleh bobbdelsol, rehash bekerja untuk saya:

==> which ruby
/usr/bin/ruby

==> rbenv install 1.9.3-p551
Downloading ruby-1.9.3-p551.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p551.tar.bz2
Installing ruby-1.9.3-p551...
Installed ruby-1.9.3-p551 to /Users/username/.rbenv/versions/1.9.3-p551


==> which ruby
/Users/username/.rbenv/shims/ruby

==> which gem
/Users/username/.rbenv/shims/gem

==> gem install compass
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> ruby -v
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin15]


==> rbenv global 1.9.3-p551


==> rbenv rehash


==> ruby -v
ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-darwin15.4.0]


==> gem install compass
Fetching: sass-3.4.22.gem (100%)
Fetching: multi_json-1.11.3.gem (100%)
Fetching: compass-core-1.0.3.gem (100%)
Fetching: compass-import-once-1.0.5.gem (100%)
Fetching: chunky_png-1.3.5.gem (100%)
Fetching: rb-fsevent-0.9.7.gem (100%)
Fetching: ffi-1.9.10.gem (100%)
Building native extensions.  This could take a while...
Fetching: rb-inotify-0.9.7.gem (100%)
Fetching: compass-1.0.3.gem (100%)
    Compass is charityware. If you love it, please donate on our behalf at http://umdf.org/compass Thanks!
Successfully installed sass-3.4.22
Successfully installed multi_json-1.11.3
Successfully installed compass-core-1.0.3
Successfully installed compass-import-once-1.0.5
Successfully installed chunky_png-1.3.5
Successfully installed rb-fsevent-0.9.7
Successfully installed ffi-1.9.10
Successfully installed rb-inotify-0.9.7
Successfully installed compass-1.0.3
9 gems installed
Installing ri documentation for sass-3.4.22...
Installing ri documentation for multi_json-1.11.3...
Installing ri documentation for compass-core-1.0.3...
Installing ri documentation for compass-import-once-1.0.5...
Installing ri documentation for chunky_png-1.3.5...
Installing ri documentation for rb-fsevent-0.9.7...
Installing ri documentation for ffi-1.9.10...
Installing ri documentation for rb-inotify-0.9.7...
Installing ri documentation for compass-1.0.3...
Installing RDoc documentation for sass-3.4.22...
Installing RDoc documentation for multi_json-1.11.3...
Installing RDoc documentation for compass-core-1.0.3...
Installing RDoc documentation for compass-import-once-1.0.5...
Installing RDoc documentation for chunky_png-1.3.5...
Installing RDoc documentation for rb-fsevent-0.9.7...
Installing RDoc documentation for ffi-1.9.10...
Installing RDoc documentation for rb-inotify-0.9.7...
Installing RDoc documentation for compass-1.0.3...
Arunabh Das
sumber
sooo tutup. yet "ERROR: Ketika mengeksekusi gem ... (Gem :: FilePermissionError) Anda tidak memiliki izin menulis untuk direktori /Library/Ruby/Gems/2.0.0."
JGallardo
1

Diuji pada MacOS Mojave DENGAN SUKSES:

  1. 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

  2. Pasang versi ruby ​​baru:

    $ brew install ruby

  3. Tetapkan alias default ke versi Anda:

    $ rvm alias create default ruby

  4. 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 gemperintah apa pun .

Marcelo Gumiero
sumber
-2

cd /Library/Ruby/Gems/2.0.0

Buka .

klik kanan dapatkan info

klik kunci

kata sandi tempat

membuat semuanya membaca dan menulis.

myklgee
sumber
1
Luangkan waktu untuk memformat jawaban Anda agar mudah dibaca. Upaya yang Anda lakukan untuk meneliti dan menjelaskan bermanfaat.
the Tin Man
-2

beri pengguna $ whoami untuk membuat sesuatu di folder itu

sudo chown -R user /Library/Ruby/Gems/2.0.0
Rama Astadipati
sumber
Tidak. Folder itu dimiliki oleh sistem untuk alasan yang baik, sistem menggunakannya untuk tujuannya sendiri. Tidak masalah menjalankan skrip yang menunjuk padanya, tetapi buat dan gunakan Ruby yang kotak pasir jika Anda ingin mengacaukannya.
the Tin Man
-3

Anda dapat menggunakan: gem install cocoapods --pre --user

Alex_Burla
sumber
-4

Menginstal gem atau memperbarui RubyGems gagal dengan kesalahan izin Lalu Ketik Perintah Ini

sudo gem install cocoapods
Hardip Kalola
sumber
1
Ini telah tercakup dalam jawaban lain. Harap baca jawaban lain sebelum membuatnya untuk memastikan Anda menawarkan sesuatu yang baru.
the Tin Man
-6

Saya menggunakan ini dan bekerja.

$ sudo chown myuser /var/lib/gems

Felipe Francisco
sumber
Lihat komentar di jawaban lain tentang penggunaan sudo.
the Tin Man
-18

Alasan kesalahan adalah karena Anda tidak masuk sebagai pengguna root di terminal.

Jika Anda sudah menggunakan root, aktifkan pada mac Anda di tipe terminal

$ su

Jika Anda tidak memiliki pengguna root, Anda harus mengaktifkannya menggunakan langkah-langkah berikut

  1. Dari menu Apple, pilih System Preferences….
  2. Dari menu Lihat pilih Pengguna & Grup.
  3. Klik kunci dan autentikasi sebagai akun administrator.
  4. Klik Opsi Masuk ....
  5. Klik tombol "Edit ..." atau "Gabung ..." di kanan bawah.
  6. Klik tombol "Open Directory Utility ...".
  7. Klik kunci di jendela Direktori Utilitas.
  8. Masukkan nama akun administrator dan kata sandi, lalu klik OK.
  9. Pilih Aktifkan Pengguna Root dari menu Edit.
  10. Masukkan kata sandi root yang ingin Anda gunakan di bidang Kata Sandi dan Verifikasi, lalu klik OK.

Lebih banyak sama di http://support.apple.com/kb/ht1528

Setidaknya itu bekerja untuk saya setelah macet selama beberapa jam.

Mohammad Arif
sumber
Mengapa memilih? Bisakah kalian menulis alasan untuk melakukannya?
Mohammad Arif
8
Menginstal permata sebagai root adalah ide yang buruk. stackoverflow.com/questions/2119064/…
spuder