Blog JSystems - uwalniamy wiedzę!

Szukaj

Claude Code

Claude Code nie instaluje się przez npm - błąd uprawnień EACCES

W skrócie

  • Instalacja npm install -g @anthropic-ai/claude-code pada z błędem EACCES: permission denied.
  • Powodem jest globalny katalog npm, do którego Twój użytkownik nie ma prawa zapisu - najczęściej po instalacji Node przez menedżera systemowego.
  • Rozwiązanie: przenieś globalny prefiks npm do katalogu domowego albo używaj menedżera wersji Node (nvm) - nigdy nie instaluj przez sudo.

Podczas pierwszej instalacji Claude Code, oficjalnego narzędzia CLI od Anthropic do programowania z AI, wielu użytkowników trafia na ścianę: npm install -g kończy się błędem EACCES: permission denied. Problem dotyczy głównie systemów Linux i macOS, gdzie Node.js został zainstalowany z repozytoriów systemowych (apt, dnf, Homebrew z uprawnieniami roota). Katalog globalnych pakietów npm należy wtedy do użytkownika root, a Ty pracujesz jako zwykły użytkownik i nie masz prawa zapisu.

Jak to wygląda w praktyce

Wpisujesz komendę i zamiast paska postępu widzisz czerwony błąd. Typowy zrzut z terminala wygląda tak:

$ npm install -g @anthropic-ai/claude-code
npm error code EACCES
npm error syscall mkdir
npm error path /usr/lib/node_modules/@anthropic-ai
npm error errno -13
npm error Error: EACCES: permission denied, mkdir '/usr/lib/node_modules/@anthropic-ai'

Kluczowa jest ścieżka: /usr/lib/node_modules (albo /usr/local/lib/node_modules). To katalog systemowy, do którego zwykły użytkownik nie może pisać. Kuszące jest dopisanie sudo na początku - i to jest właśnie pułapka, o której piszemy niżej.

Dlaczego Claude Code tak działa

Sam Claude Code nie ma tu nic do rzeczy - to zachowanie npm. Gdy instalujesz pakiet z flagą -g (globalnie), npm zapisuje go w katalogu wskazanym przez ustawienie prefix. Jeśli Node zainstalowano systemowo, ten prefiks wskazuje na katalog należący do roota. Twój użytkownik nie ma tam praw, więc jądro systemu zwraca kod EACCES (odmowa dostępu). Instalacja przez sudo npm install -g pozornie działa, ale tworzy pliki należące do roota w Twoim katalogu cache npm, przez co późniejsze aktualizacje i inne pakiety znów będą się wykrzaczać. Dokumentacja npm wprost odradza to obejście.

Jak to rozwiązać krok po kroku

  1. Sprawdź, gdzie npm chce instalować pakiety globalne: npm config get prefix. Jeśli zobaczysz /usr lub /usr/local, to jest źródło kłopotu.
  2. Najczystsze rozwiązanie - zainstaluj Node przez menedżer wersji nvm, który trzyma wszystko w Twoim katalogu domowym: curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash, a po ponownym otwarciu terminala nvm install --lts. Wtedy npm pisze do ~/.nvm i żadne sudo nie jest potrzebne.
  3. Jeśli nie chcesz nvm, przenieś prefiks npm do katalogu domowego: mkdir -p ~/.npm-global, potem npm config set prefix ~/.npm-global.
  4. Dodaj nowy katalog do zmiennej PATH - dopisz do ~/.bashrc lub ~/.zshrc linię export PATH=~/.npm-global/bin:$PATH i przeładuj powłokę komendą source ~/.bashrc.
  5. Teraz zainstaluj Claude Code bez sudo: npm install -g @anthropic-ai/claude-code.
  6. Alternatywnie na macOS i Linux możesz pominąć npm i użyć instalatora natywnego Anthropic: curl -fsSL https://claude.ai/install.sh | bash. Instaluje on samodzielny plik binarny do ~/.local/bin, bez potrzeby Node w ogóle.
  7. Jeśli wcześniej mimo wszystko odpaliłeś instalację przez sudo, napraw właściciela katalogu cache: sudo chown -R $(whoami) ~/.npm, żeby kolejne instalacje nie wracały do błędu.

Jak sprawdzić, że zadziałało

Uruchom claude --version - powinien wypisać numer wersji, na przykład 2.x.x (Claude Code). Sprawdź też, że komenda uruchamia się z Twojego katalogu domowego, a nie z systemowego: which claude powinno wskazać ścieżkę w ~/.npm-global/bin, ~/.nvm lub ~/.local/bin, a nie w /usr/bin. Na koniec odpal samo claude w dowolnym katalogu projektu - jeśli pojawi się kreator logowania, instalacja przebiegła poprawnie.

Wróć do listy: 100 najczęstszych problemów z Claude Code

Szkolenie Claude Code - od zera do zespołu agentów AI, prowadzi Łukasz Matuszewski (JSystems)

Szkolenie Claude Code - od zera do zespołu agentów AI -->

Szkolenie Claude Code - od zera do zespołu agentów AI

Tryb planowania, tryby uprawnień, komendy, MCP, hooki i systemy multi-agent - wszystko na żywym kodzie podczas trzydniowego szkolenia. Prowadzi Łukasz Matuszewski. Szkolenie ma terminy gwarantowane - odbędzie się niezależnie od liczby zgłoszeń.

Sprawdź szkolenie Claude Code

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Czy mogę zainstalować Claude Code przez sudo, żeby ominąć błąd EACCES?
Odradzamy to. Instalacja przez sudo npm install -g tworzy pliki należące do roota w Twoim katalogu cache npm, przez co późniejsze aktualizacje i inne pakiety znów będą się wykrzaczać. Lepiej przenieść prefiks npm do katalogu domowego albo użyć menedżera wersji nvm.
Jak przenieść globalny katalog npm do katalogu domowego?
Utwórz katalog komendą mkdir -p ~/.npm-global, ustaw go jako prefiks przez npm config set prefix ~/.npm-global, a następnie dodaj podkatalog bin do zmiennej PATH w pliku .bashrc lub .zshrc. Po przeładowaniu powłoki instalacja globalna nie będzie już wymagać uprawnień roota.
Czy da się zainstalować Claude Code bez Node i npm?
Tak. Na Linux i macOS istnieje natywny instalator uruchamiany komendą curl -fsSL https://claude.ai/install.sh | bash. Pobiera on samodzielny plik binarny do katalogu ~/.local/bin i nie wymaga w ogóle instalacji Node ani npm, więc omija problem uprawnień globalnego katalogu npm.
Naprawiłem prefiks, ale błąd EACCES wraca przy innych pakietach - dlaczego?
To najczęściej pozostałość po wcześniejszej instalacji przez sudo, która zostawiła pliki roota w katalogu cache npm. Napraw właściciela komendą sudo chown -R $(whoami) ~/.npm, żeby wszystkie pliki cache należały do Twojego użytkownika, a kolejne instalacje przestaną zwracać odmowę dostępu.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...