Ulaşım
- Adres:2342 Sk, İpekyol, İpek Ap 49A, 63250 Haliliye/Şanlıurfa
- Telefon:
0542 315 45 37 - eMail: info@alestaweb.com
npm ile global paket kurmaya çalışırken "EACCES: permission denied" hatası mı alıyorsunuz? Program açılmıyor, kurulum yarıda mı kalıyor? Hiç panik yapmayın! Alesta Web olarak bu npm permission denied hatasını 3 farklı yöntemle nasıl çözeceğinizi adım adım anlatacağız. Hem Linux hem macOS kullanıcıları için geçerli olan bu rehber, npm EACCES error sorununu kalıcı olarak çözer.
Bu hatayı genellikle şu komutla karşılaşırsınız:
npm ERR! Error: EACCES: permission denied, access '/usr/local/lib/node_modules' npm ERR! errno: -13 npm ERR! syscall: access npm ERR! path: '/usr/local/lib/node_modules' npm ERR! A complete log of this run can be found in: /home/kullanici/.npm/_logs/
EACCES = "Error Access" yani Erişim Hatası demektir. npm, global paketleri /usr/local/lib/node_modules dizinine kurmaya çalışır. Ancak bu dizin varsayılan olarak root kullanıcısına aittir. Normal kullanıcı hesabınızın bu dizine yazma izni (write permission) olmadığı için npm permission denied hatası verir.
Alesta Web ekibi olarak bu hatayı yüzlerce kullanıcıda gördük. En yaygın sebebi: Node.js'i doğrudan sistemin paket yöneticisiyle (apt, yum, brew) kurmak. Bu yöntem, npm'in sistem dizinlerine yazmasını zorlaştırır (forces npm to write to system directories).
Alesta Web olarak her zaman bu yöntemi öneriyoruz. NVM (Node Version Manager), Node.js ve npm'i kendi ev dizininize kurar. Sistem dizinlerine hiç dokunmaz, bu yüzden npm EACCES permission error bir daha yaşanmaz.
Dahası, NVM ile birden fazla Node.js sürümünü kolayca yönetebilirsiniz. Bir projede Node 18, başka bir projede Node 22 kullanmak artık çok basit.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
Kurulumdan sonra terminali kapatıp yeniden açın! Yoksa nvm: command not found hatası alırsınız. Terminali yeniden açmak (reopen terminal), NVM'in PATH değişkenini yüklemesi için şarttır.
# En son LTS sürümü kur nvm install 22 # Kullanmak istediğin sürümü seç nvm use 22 # Varsayılan olarak ayarla nvm alias default 22 # Doğrulama node --version npm --version
# github.com/coreybutler/nvm-windows adresinden installer indirin # .exe dosyasını çalıştırın ve adımları izleyin nvm install 22.0.0 nvm use 22.0.0
NVM kurulumu tamamlandıktan sonra npm install -g typescript komutunu deneyin. Artık npm EACCES hatası (permission denied error) almayacaksınız!
NVM kullanmak istemiyorsanız, npm'i ev dizininizde çalışacak şekilde ayarlayabilirsiniz. Bu yöntem de npm permission denied sorununu kalıcı olarak çözer.
# 1. Global paketler için ev dizininde klasör oluştur mkdir -p ~/.npm-global # 2. npm'i bu dizini kullanacak şekilde ayarla npm config set prefix '~/.npm-global' # 3. PATH'e ekle (Bash kullananlar için - Linux) echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc source ~/.bashrc # 4. PATH'e ekle (Zsh kullananlar için - macOS) echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc source ~/.zshrc # 5. Ayarları doğrula npm config get prefix # Çıktı: /home/kullaniciadi/.npm-global
# Global paket kur - artık hata yok! npm install -g yarn # Kurulumu doğrula yarn --version
Bu yöntemi uyguladıktan sonra terminal penceresini kapatıp yeniden açmayı unutmayın. PATH değişkeni (environment variable) yeni terminal oturumunda otomatik yüklenir.
Mevcut npm kurulumunuzun izinlerini (permissions) düzeltmek istiyorsanız, chown komutu işinizi görür. Bu yöntem, npm'in sistem dizinlerine erişim hakkını mevcut kullanıcınıza verir.
sudo chown -R $(whoami) $(npm config get prefix)/{lib/node_modules,bin,share}
Bu komut ne yapıyor? $(whoami) mevcut kullanıcı adınızı otomatik alır. npm config get prefix npm'in global dizinini bulur. chown -R ise bu dizinlerin sahipliğini (ownership) size verir.
# npm cache dizin izinlerini de düzelt sudo chown -R $(whoami) ~/.npm # Cache'i temizle npm cache clean --force # Test et npm install -g nodemon
chown komutu sudo gerektiriyor. Çalıştırmadan önce sistem yöneticinize danışın. Kurumsal ortamlarda (enterprise environments) bu komutun çalıştırılması kısıtlı olabilir.
Birçok kullanıcı "neden sudo kullanmıyorum?" diye düşünüyor. Cevap çok basit: güvenlik riski.
Alesta Web olarak bu konuda net bir pozisyonumuz var: sudo npm install asla kullanmayın. İşte sebebi:
sudo npm install -g express # TEHLİKELİ!
npm install -g express # Güvenli - NVM veya prefix yöntemiyle
Tehlike Neden Büyük?
postinstall scriptleri çalıştırırsudo ile kurarsanız, bu scriptler root yetkileriyle çalışırnpm'in resmi dokümantasyonu (official documentation) açıkça şunu söylüyor: "Never run npm with sudo." Bu kural küçük projeler için de geçerli. Güvenliğinizi riske atmayın.
| Yöntem / Method | Zorluk / Difficulty | Güvenlik / Security | Öneri / Recommendation |
|---|---|---|---|
| NVM | Kolay | Mükemmel | ⭐⭐⭐⭐⭐ |
| npm Prefix | Orta | Çok İyi | ⭐⭐⭐⭐ |
| chown | Kolay | İyi | ⭐⭐⭐ |
| sudo npm | Çok Kolay | TEHLİKELİ | ❌ KULLANMA |
Bu makalede kullanılan bilgiler aşağıdaki güvenilir kaynaklardan alınmıştır (information from reliable sources):
Alesta Web olarak tüm bilgileri doğruladık ve test ettik (we verified and tested all information).
Artık npm EACCES permission denied hatası (npm global install permission error) geride kaldı. Alesta Web olarak öncelikli önerimiz her zaman NVM yöntemidir — hem güvenli hem de esnek bir çözüm sunar.
Hızlı Özet / Quick Summary:
Faydalı Linkler / Useful Links:
© 2026 AlestaWeb - Tüm hakları saklıdır.