Nie masz uprawnień do zapisu w katalogu /Library/Ruby/Gems/2.3.0. (użytkownik Maca)


159

poniżej jest to, co muszę zrobić.

Aby uruchomić specyfikacje, musisz zainstalować RSpec. Najpierw uruchom gem install bundlerw katalogu głównym projektu. Następnie biegnij bundle install. Aby uruchomić pojedynczy niespełniającego plik, uruchom polecenie tak: bundle exec rspec spec/00_hello_spec.rb. Aby uruchomić wszystkie specyfikacje naraz, uruchom bundle exec rspec.

Więc wpisałem gem install bundlerw Terminalu i otrzymałem błąd:

Nie masz uprawnień do zapisu w katalogu /Library/Ruby/Gems/2.3.0.

a to było w pliku projektu w atomie

source "https://rubygems.org"
gem "rspec", "~> 3.2.0"

Moje pytanie brzmi:

Wygląda na to, że terminal daje mi odpowiedź, ponieważ nie powinienem niczego zmieniać na ruby, a muszę znaleźć się bundle installwewnątrz atomu? Czy ktoś mógłby mi powiedzieć, jak używać atomu lub uruchomić cokolwiek w atomie?

Odpowiedzi:


280

Aktualizacja: od tego czasu napisałem bardzo szczegółowe wyjaśnienie różnych sposobów instalowania klejnotów Ruby na komputerze Mac. Moja pierwotna rekomendacja dotycząca używania skryptu jest nadal aktualna, ale mój artykuł jest bardziej szczegółowy: https://www.moncefbelyamani.com/the-definitive-guide-to-installing-ruby-gems-on-a-mac/

Masz rację, że macOS nie pozwoli ci niczego zmienić w wersji Ruby, która jest zainstalowana na komputerze Mac. Jednak możliwe jest zainstalowanie klejnotów, tak jak bundlerprzy użyciu oddzielnej wersji Rubiego, która nie koliduje z wersją dostarczoną przez Apple.

Używanie sudodo instalowania klejnotów lub zmienianie uprawnień do plików systemowych i katalogów jest zdecydowanie odradzane, nawet jeśli wiesz, co robisz. Czy możemy przestać udzielać tej złej rady? Oto szczegółowy artykuł, który napisałem, pokazujący, jak sudo gem installwyczyścić komputer: https://www.moncefbelyamani.com/why-you-should-never-use-sudo-to-install-ruby-gems/

Rozwiązanie obejmuje dwa główne kroki:

  1. Zainstaluj oddzielną wersję Rubiego, która nie koliduje z wersją dostarczoną z komputerem Mac.
  2. Zaktualizuj swój PATHtak, aby lokalizacja nowej wersji Rubiego była pierwsza w pliku PATH. Niektóre narzędzia robią to automatycznie. Jeśli nie znasz PATHi nie wiesz, jak to działa, przeczytaj mój przewodnik .

Istnieje kilka sposobów instalacji Rubiego na komputerze Mac. Najlepszym sposobem, który polecam i chciałbym, aby był bardziej rozpowszechniony w różnych instrukcjach instalacji, jest użycie zautomatyzowanego skryptu , który skonfiguruje dla Ciebie odpowiednie środowisko Ruby. To drastycznie zmniejsza ryzyko wystąpienia błędu z powodu nieodpowiednich instrukcji, które zmuszają użytkownika do ręcznego wykonywania wielu rzeczy i pozostawiania im samodzielnego rozwiązania wszystkich niezbędnych kroków.

Inną drogą, którą możesz wybrać, jest spędzenie dodatkowego czasu na robieniu wszystkiego ręcznie i nadzieja na najlepsze. Najpierw będziesz chciał zainstalować Homebrew , który instaluje wstępnie wymagane narzędzia wiersza poleceń i ułatwia instalację innych niezbędnych narzędzi.

Następnie dwa najłatwiejsze sposoby zainstalowania oddzielnej wersji Rubiego to:

Jeśli chcesz mieć możliwość łatwego przełączania się między wieloma wersjami Rubiego [ZALECANE]

Wybierz jedną z czterech opcji:

  • chruby i ruby-install - moje osobiste rekomendacje i te, które są automatycznie instalowane przez mój skrypt. Można je zainstalować z Homebrew:
brew install chruby ruby-install

Jeśli wybrałeś chrubyi ruby-install, możesz zainstalować najnowszą wersję Rubiego w następujący sposób:

ruby-install ruby

Po zainstalowaniu wszystkiego i skonfigurowaniu .zshrclub .bash_profilezgodnie z instrukcjami z powyższych narzędzi, zamknij i uruchom ponownie Terminal, a następnie przełącz się na żądaną wersję Rubiego. W przypadku chrubybyłoby to coś takiego:

chruby 2.7.2

To, czy musisz skonfigurować, .zshrcczy .bash_profilezależy od używanej powłoki. Jeśli nie masz pewności, przeczytaj ten przewodnik: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

Jeśli wiesz na pewno, że nie potrzebujesz więcej niż jednej wersji Ruby w tym samym czasie (oprócz tej, która została dostarczona z macOS)

  • Zainstaluj Ruby z Homebrew:
brew install ruby

Następnie zaktualizuj PATH, uruchamiając (zastąp 2.7.0nowo zainstalowaną wersją):

echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc

Następnie „odśwież” powłokę, aby zmiany odniosły skutek:

source ~/.zshrc

Możesz też otworzyć nową kartę terminala lub zamknąć i ponownie uruchomić Terminal.

Wymienić .zshrcze .bash_profilejeśli używasz bash. Jeśli nie masz pewności, której powłoki używasz, przeczytaj ten przewodnik: https://www.moncefbelyamani.com/which-shell-am-i-using-how-can-i-switch/

Aby sprawdzić, czy używasz niesystemowej wersji Rubiego, możesz uruchomić następujące polecenia:

which ruby

To powinno być coś innego niż /usr/bin/ruby

ruby -v

Powinno to być coś innego niż 2.6.3, jeśli korzystasz z macOS Catalina. Na dzień dzisiejszy 2.7.2 jest najnowszą wersją Rubiego.

Po zainstalowaniu tej nowej wersji Rubiego możesz teraz zainstalować pakiet (lub dowolny inny klejnot):

gem install bundler

4
jeśli jesteś podobny do mnie i używasz zsh (lub innej powłoki innej niż bash), jest dodatkowy krok! Po zainstalowaniu rbenvmusisz to zrobić echo 'eval "$(rbenv init -)"' >> ~/.bash_profile. Źródło
Marlo,

2
Jeśli napotkasz błąd uprawnień w katalogu / usr / local, uruchom sudo chown -R $(whoami) $(brew --prefix)/*. Zobacz ten wątek po więcej informacji
Anas Tiour

6
To jest bardzo pomocne ... Powinno być ustawione jako poprawna odpowiedź.
Spencer Müller Diniz

5
Ponieważ MacOS zachęca ludzi do przejścia na zsh, powinieneś również zastosować zmianę w ~ / .bash_profile do ~ / .zshrc.
Adam_G

1
@stevec Być może przegapiłeś kilka kroków w instrukcji instalacji rbenv? A może nie wyszedłeś i nie uruchomiłeś ponownie terminala? Postępowałbym zgodnie z instrukcjami rbenv tutaj: github.com/rbenv/rbenv#installation . Jeśli jesteś otwarty na używanie chrubyzamiast tego, zdecydowanie polecam użycie skryptu, który ustawia wszystko za Ciebie, takiego jak ten: github.com/monfresh/install-ruby-on-macos . Przed uruchomieniem tego skryptu należy najpierw odinstalować rbenv: github.com/rbenv/rbenv#uninstalling-rbenv
monfresh

83

Jeśli nie chcesz uruchamiać, sudozainstaluj Rubiego używając homebrew

brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails

Możesz dodać export GEM_HOME="$HOME/.gem"do swojego ~/.bash_profilelub .zshrcjeśli używasz zsh

Uwaga: RubyGems przechowuje stare wersje klejnotów, więc po aktualizacji możesz je wyczyścić:

gem cleanup

4
nie pomogło w Catalina OS 😐
Efrat Levitan

Zaktualizowałem moją odpowiedź
STIKO

Rails is not currently installed on this system. To get the latest version, simply type: $ sudo gem install rails You can then rerun your "rails" command
Efrat Levitan

Wygląda na to, że próbujesz uruchomić railspolecenie. Ostatnie dwa polecenia, które mam, nie uruchamiają railspolecenia. Spróbuj otworzyć nowy terminal poza swoim projektem, a następnie skopiuj ostatnie dwa wiersze mojej odpowiedzi jeden po drugim.
STIKO

nie zapomnij source ~/. zshrc(lub ~/.bash_profile)
gordinmitya

73

Pracowałem dla mnie przy użyciu parametru --user-installuruchamiającego następujące polecenie:

gem install name_of_gem --user-install

Potem zaczął go pobierać i instalować.

Edytować

Był jeden klejnot, którego nadal nie mogłem zainstalować (wymagał on nagłówków Ruby.h zestawu deweloperskiego Ruby lub czegoś podobnego), potem wypróbowałem różne menedżery wersji, ale jakoś to nadal nie działało, jak stwierdzono w dokumentacji, jak po prostu zainstalować i przełączyć (po prostu nie zmienił wersji). Następnie usunąłem wszystkie zainstalowane menedżery wersji, a później zainstalowałem brew install rubynajnowszą wersję, a także ustawiłem zmienną PATH. (Będzie wspomniane po instalacji rubinu z naparu), który zadziałał.


2
To powinna być wybrana odpowiedź. Brew nie jest jeszcze obsługiwany przez chipy M1 i działa to jak urok.
Tom Roggero,

1
Dlaczego ta odpowiedź jest tak daleko na liście? To jest poprawna odpowiedź.
peterretief

7

Ogólnie zaleca się korzystanie z menedżera wersji, takiego jak rbenvlub rvm. W przeciwnym razie zainstalowane klejnoty będą dostępne tak jak rootdla innych użytkowników.

Jeśli wiesz, co robisz, możesz użyć sudo gem install.


5

Napotkałem ten sam problem po zainstalowaniu macOS Catalina. Spróbowałem poniżej polecenia i jego działania.

sudo gem update

4

Uruchom to

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:

eval "$(rbenv init -)"

Postępuj zgodnie z instrukcjami (w moim przypadku dodaj do ~ / .zshrc );)


Ważne: zmiany zaczną obowiązywać dopiero po ponownym uruchomieniu konsoli. Dwie opcje

  • Wchodzić source <modified file>
  • zamknij i otwórz ponownie

Zaktualizowałem do Cataliny (która przełącza się z bash na zsh) i zapomniałem skopiować wszystko z .bash_profileover to.zshrc
wetjosh

To działa! Nie używaj sudo! Jeśli nie używasz ZSH, możesz dodać to do swojego .profilelub .bash_profile. Świetnym sposobem sprawdzenia, czy to działa, jest użycie which ruby, powinno wskazywać ścieżkę, która ma rbenvi nie ma /usr/local/ruby.
Swaathi Kakarla

2

Jeśli zainstalowałeś Ruby osobno i zainstalowałeś go używając rbenv / rvm, budler może wskazywać na inne wersje.

próbować

gem env home

i

ruby -v

oba powinny wskazywać na tę samą wersję. sprawdź, czy zainstalowałeś Ruby używając rbenv / rvm, jeśli tak, usuń wersję Ruby, którą zainstalowałeś oddzielnie.

Aby gem działał, musisz wywołać rbenv,

rbenv shell <ruby version> 

i

rbenv global <ruby version>

Nie jestem pewien, jak działa RVM. Daj mi znać, czy to działa.


brakowało ustawienia powłoki i globalnego. Dlaczego nie ma tego w instrukcjach rbenv 🤔
feitla

Nie jestem pewien, dlaczego to przegapiono, mogłem się dowiedzieć po wypróbowaniu.
Bharathan Kumaran

0

Rozwiązanie dla komputerów Mac

  1. Zainstaluj / zaktualizuj RVM za pomocą ostatniej wersji Ruby

    \curl -sSL https://get.rvm.io | bash -s stable

  2. Zainstaluj pakiet

    gem install bundler


po tym dwa polecenia (sudo) gem install ....zaczęły działać


może być konieczne również określeniervm use <version>
ObjectNameDisplay

0

Należy użyć innej instalacji rubinu. W tym celu używam rbenv .

# install your version of ruby
$ rbenv install 2.0.0-p247

# modify .ruby_version on current directory
$ rbenv local 2.0.0-p247

# proceed installing gems
$ gem install bundler

Disclamer: Nie jestem osobą rubinową. To zadziałało dla mnie i jeśli jesteś ekspertem od rubinów i widzisz rzeczy do zmiany w tej odpowiedzi, proszę, napisz lub skomentuj!


-1

To działało dla mnie na Macu

sudo chown -R $ (whoami) $ (brew --prefix) / *


-1

Używam Mojave z rbenv, to rozwiązanie działa dla mnie:

$ vi ~/.bash_profile

Dodaj tę linię do pliku:

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

-2

Problemy, które miałem: - Nie masz uprawnień do zapisu w katalogu /Library/Ruby/Gems/2.6.0.

Rozwiązanie zadziałało dla mnie: sudo gem install rails -v 6.0.0


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.