Global NPM yüklemeleri sonrası "command not found" sorunu ve çözümü

Ubuntu dağıtımlarından birine Node.js yükledikten sonra, npm ile yapılan -g (global) yüklemelerde, yükleme sonrası çağırmalarda "command not found" hatası alabilirsiniz.

Bunun birçok sebebi olmakla beraber, en temel sebebi Node ya da npm klasötrlerinin PATH kayıtlarının olmamasıdır. Ya da Node.js'in yanlış yüklenmesidir.

Yükleme:

Bash:
sudo apt update
sudo apt install nodejs

sudo apt install npm # Node.js ile beraber NPM gelmektedir, ama inmezse bu kod kullanılabilir

nodejs -v # Node.js versiyon testi

Güncelleme:

Bash:
sudo npm cache clean -f
sudo npm install -g n
sudo n stable

sudo n latest

#Yeni PATH'i düzeltmek için.
sudo apt-get install --reinstall nodejs-legacy #  /usr/bin/node -> /usr/locale/bin/node

#Yeni Node'u kullanmak için Terminal'i açıp kapatmanız gereklidir.

Bu hatadan önce ya da yanlış yüklemelerde, EACCES hatası da çokça alınır. Çözümü:

Bash:
mkdir ~/.npm-global

npm config set prefix '~/.npm-global'

export PATH=~/.npm-global/bin:$PATH

source ~/.profile

Ancak EACCES hatası çözümü sonrası başka bir hata daha çıkar. npm için "npm-global" yolunu oluşturduktan sonra, bu hata ile karşılaşma ihtimaliniz çok yüksek.

Çözüm ise PATH'e "~/.npm-global/bin" eklemek:

Bash:
export PATH=$PATH:~/.npm-global/bin

Fakat export komutunu her terminal açtığınızda girmeniz gerekecek. Çünkü PATH'te yaptığınız değişiklikler resetleniyor olacak. Bu durumdan kurtulmanın yolu da çok kolay.

"gedit ~/.bashrc" ile bashrc'yi açın, en alt satıra gidin ve bir önceki kodu ekleyin:

Bash:
export PATH=$PATH:~/.npm-global/bin

export PATH

Not: npm'in global prefixini bulmak için:

Bash:
npm config get prefix

Linux ve Node.js kullanmak çok çok karmaşık. Ek olarak, npm ile yükleme yaparken sakın sudo kullanmayın yoksa boyuna erişim hatası alırsınız. npm ile global yüklemeleri Sudo ile yapmak zorunda kalıyorsanız, Node.js ya da npm yanlış yüklenmiş demektir.

Ayrıca, Node.js'i PPA ile değil, apt ile indirip kurun. Sonrasında güncelleme yapın. PPA ile kurulan sürümlerde, PATH ve izin hataları nedense çok oluyor.

Son olarak, Node.js kütüphaneleriyle Linux dağıtımlarında uğraşmak oldukça zor. Dolayısıyla ne yaptığınıza dikkat edin. 2 kez format atma noktasına geldim zira Node.js yayılabiliyor ve temizlemesi resmen çile.

Aman dikkat.
 
Önce paylaşımınız için teşekkürler.
Anladığım bir konu değil, kurulumda ne gibi bir yanlış yapmış olabilirsiniz diye Debian ortamında alttaki komutu girdim.
Kod:
sudo apt install nodejs npm

Bu çıktıyı verdi.
Kod:
0 paket yükseltilecek, 251 yeni paket kurulacak, 0 paket kaldırılacak ve 0 paket yükseltilmeyecek.
12,4 MB arşiv dosyası indirilecek.
Bu işlem tamamlandıktan sonra 58,9 MB ek disk alanı kullanılacak.
Devam etmek istiyor musunuz? [E/h]

Kurmadım ama kursaydım sorun çıkacağını sanmıyorum. Bunu nereden tahmin ediyorum, çünkü birincisi en küçük bir sorun çıkma olasılığı halinde Debian çeşitli şekilde uyarıyor, ikincisi Debian'ın kendi ana deposunda sorun çıkaran bir pakete hiç rastlamadım.
Bir de yaşadığım tecrübeden dolayı sudosuz kurulum bana pek doğru gelmedi.
Yani bunu fikir vermesi için paylaştım, Ubuntu ile Debian arasında kararlılık adına bazı farklar olabilir, sonuçta Nodejs konusu anladığım bir konu değil.
 
@illedelinux aslında yaptığım bir yanlış yok ya. Bu binlerce kişinin yaşadığı bir sorun.

Node.js'i sudo ile ve apt ile kurmakta bir sıkıntı yok. Ancak apt ile kurunca eski sürümlerini indiriyor. Bu, çoğu Debian dağıtımında 8 küsurlü bir şey, Ubuntu'da ise 12.

Ek olarak Debian'ın uyarması da pek bir işe yaramıyor, zira sorun kurulmasında değil. Çoğunlukla yanlış yere kuruluyor ve sistem, Node.js'in yolunu bulamıyor.

Sudo meselesi ise, npm ile alakalı. Npm, Node.js için paket indirme aracı. Siz Node.js'i indirdiğinizde çok çok küçük bir kısım indiriliyor. İhtiyacınız olan paketleri npm ile indiriyorsunuz. Eğer sudo kullanırsanız, projeyi kullanırken pakatlere erişemiyorsunuz, sürekli erişim hatası alıyorsunuz.

Bu nedenle ister global ister local olsun, sudo olmadan kurmak daha sağlıklı. Node.js'in en büyük sıkıntısı, kendi içinde özerk bir dünya olması. Bu nedenle dikkat etmek gerekiyor çünkü kolay bozulabiliyor.
 

Yeni konular

Geri
Yukarı