Saya baru saja menginstal ulang Ubuntu 12.04 LTS, dan sebelum hal lain saya lakukan langkah-langkah ini :
Node yang diinstal melalui manajer paket dengan skrip berikut
sudo apt-get update sudo apt-get install python-software-properties python g++ make sudo add-apt-repository ppa:chris-lea/node.js sudo apt-get update sudo apt-get install nodejs
Mencoba memasang yeoman, express, n, generator yeoman secara global dan semuanya mengembalikan kesalahan yang sama
npm ERR! Galat: EACCES, symlink '../lib/node_modules/n/bin/n'
npm ERR! {[Kesalahan: EACCES, symlink '../lib/node_modules/n/bin/n'] errno: 3, kode: 'EACCES', path: '../lib/node_modules/n/bin/n'}}
npm ERR!
npm ERR! Silakan coba jalankan perintah ini lagi sebagai root / Administrator.
npm ERR! Sistem Linux 3.8.0-29-generik
npm ERR! perintah "/ usr / bin / node" "/ usr / bin / npm" "instal" "-g" "-d" "n"
npm ERR! cwd / home / heberlz
npm ERR! simpul -v v0.10.20
npm ERR! npm -v 1.3.11
npm ERR! path ../lib/node_modules/n/bin/n
npm ERR! kode EACCES
npm ERR! errno 3
npm ERR! stack error: EACCES, symlink '../lib/node_modules/n/bin/n'
npm ERR!
npm ERR! Detail logging tambahan dapat ditemukan di:
npm ERR! /home/heberlz/npm-debug.log
npm ERR! bukan kode 0
Kepemilikan kembali folder berikut secara rekursif ~ / .npm, / usr / lib / node, / usr / lib / node_modules, dan dari symlinks berikut / usr / bin / node, / usr / bin / nodejs sama sekali tidak berhasil
Saya perlu menginstal yeoman dan generatornya tanpa sudo agar tidak bermasalah nanti :(
ln -s /usr/bin/nodejs /usr/bin/node
Jawaban:
Ubuntu 12.04 dan menggunakan PPA Chris Lea untuk menginstal karya-karya berikut untuk saya:
dan menambahkan $ HOME / .npm-packages / bin ke $ PATH
tambahkan ke
.bashrc
lihat https://stackoverflow.com/a/18277225 dari @passy
sumber
/usr/lib/node_modules/
. Atau mungkin bahkan tepat untuk membuat grup unix nodejs dan memberikan izin grup itu untuk menulis ke direktori itu.Jika sudah ada
$HOME/bin
di jalur Anda, solusi yang lebih sederhana hanyalah ...$HOME/bin
direktori Anda .Karena diskusi ini benar-benar tentang mengurangi risiko keamanan menjalankan
sudo
, Anda juga harus menyadari bahwa setiap aplikasi simpul berpotensi menginstal nama aplikasi yang tidak cocok dengan nama paket simpul terdaftar yang Anda pikir Anda pasang. Jadi ada risiko keamanan yangnpm install
akan menggantikan perintah sistem yang ada atau yang sudah Anda miliki$HOME/bin
. Jika Anda khawatir, periksabin
, danscripts
properti dipackage.json
file aplikasi yang Anda instal terlebih dahulu.Secara umum, ini paling aman untuk:
$HOME/bin
terakhir di jalur Anda sehingga perintah sistem tidak digantikan.$PATH
sehingga Anda tidak secara tidak sengaja menjalankan perintah yang kebetulan berada di direktori saat ini.Referensi:
sumber
npm
adalah kode sumber yang Anda lihat padagithub.com
repo untuk paket node mungkin bukan kode yang sama dengan yang Anda instal darinpm.org
server registri!~/bin
, beberapa paket node (atau paket dependen mereka) hanya telah diuji sebagai instalasi dengansudo
jadi sadarilah bahwa Anda mungkin menghadapi masalah "lingkungan instalasi" yang belum teruji. Seperti masalah lingkungan lainnya (seperti perubahan OS) prinsip "tulis sekali, uji di mana-mana" masih berlaku.Adapun Oktober 2014:
Node.js tersedia dari repositori distribusi biner NodeSource Debian dan Ubuntu .
Itu dia.
Jawaban usang:
Cara tercepat tanpa menggunakan sudo seperti dijelaskan di sini oleh isaac
EDIT:
Ada beberapa kekhawatiran keamanan dan batasan fungsionalitas terkait perubahan kepemilikan / usr / lokal ke pengguna saat ini:
Karena itu, jika Anda ingin menginstal modul global tanpa menggunakan sudo, saya tidak melihat solusi yang lebih baik (dari sudut pandang pragmatis) daripada yang disebutkan. Keamanan vs kemudahan penggunaan adalah topik yang sangat luas, dan tidak ada jawaban mudah untuk itu - itu hanya tergantung pada kebutuhan Anda.
sumber
/usr/local/lib/node_modules
dannode
Masalahnya adalah saya menginstal node menggunakan sudo , untuk menghindari kesalahan ketika menginstal modul npm secara global satu HARUS TIDAK PERNAH menginstal node dengan sudo.
Solusi saya adalah menginstal ulang simpul dengan cara ini:
Unduh sumber node stabil terbaru dari nodejs.org #dalam kasus saya node-v0.10.20.tar.gz
Satu hal yang perlu diperhatikan adalah bahwa hanya mengambil kepemilikan dari folder / usr / local tidak akan berfungsi dalam kasus saya karena instalasi node itu sendiri dibuat dengan sudo
Langkah terakhir untuk menginstal yeoman: # walaupun di yeoman.io dikatakan bahwa melakukan "npm install -g yo" sudah menginstal bower dan grunt, ada beberapa submodul grunt yang gagal, jadi saya memperbaikinya dengan menginstalnya sendiri
sumber
Saya memecahkan masalah ini dengan variabel lingkungan dan alias shell:
Bagi saya npm tidak menghormati pengaturan konfigurasi "awalan" di .npmrc.
sumber
Menurut pos SO serupa ini: npm melempar kesalahan tanpa sudo
Sepertinya Anda mungkin memiliki masalah kepemilikan dengan
~/.npm
direktori.Seperti halnya jawaban dalam pertanyaan itu, cobalah:
sumber
Temukan path ke direktori npm:
Untuk banyak sistem, ini akan menjadi / usr / lokal.
Ubah pemilik direktori npm menjadi nama pengguna saat ini (nama pengguna Anda!):
Ini mengubah izin sub-folder yang digunakan oleh npm dan beberapa alat lainnya (lib / node_modules, bin, dan bagikan).
Ini tautan untuk detail lengkap
https://docs.npmjs.com/getting-started/fixing-npm-permissions
sumber
bin
danshare
ke dalam tanda kurung. Mengabaikan dapat menyebabkan perubahan kepemilikan folder ini ke pengguna saat ini dan masalah dengan menginstal paket baru ke sistem dengansudo
karena kepemilikannya akan berubah jugaJika Anda menggunakan mesin pengembang, Anda mungkin lebih baik mempertimbangkan menggunakan nvm .
Jika tidak, Anda hanya ingin menginstal menggunakan pengelola paket favorit Anda.
Apa pun masalahnya, saya sarankan memeriksa jawaban ini di stackoverflow
sumber
Sebenarnya, saya baru saja mengubah izin folder pengguna yang dimiliki oleh root:
Lalu aku bisa "npm install" dan "bower install" tanpa sudo! Bekerja dengan baik!
sumber
menggunakan lubuntu 14.04.3, saya mencoba mengubah kepemilikan awalan .npm dan npm, memperbarui jalur saya, npm memasang modul ke direktori home saya tanpa sudo tetapi jalurnya salah sehingga modul seperti bara tidak ditemukan, linuxbew memecahkan masalah, cepat panduan pengaturan di sini untuk node / npm
sumber
Masalah ini dan lainnya yang disebabkan oleh alasan yang sama dapat diselesaikan menginstal Node di ruang pengguna.
Anda dapat melakukannya hanya dengan menyalin dan menempel di terminal Anda
Perintah yang sama dapat diluncurkan juga untuk membuat Node diperbarui ke versi terbaru.
Jangan lupa mengedit lingkungan Anda. Hanya sekali, lakukan
Lihatlah artikel ini sebagai penjelasan tentang cara menginstal Node.js tanpa sudo .
Untuk solusi yang lebih umum tentang topik ini (mis. Instal perangkat lunak secara lokal) lihat dotsoftware .
sumber
cukup gunakan nvm Anda akan dapat beralih secara dinamis antara berbagai versi simpul dan diinstal secara lokal untuk pengguna Anda. Tidak perlu sudo. Pastikan Anda telah sepenuhnya membersihkan simpul lama sebelumnya.
https://github.com/nvm-sh/nvm
sumber
Solusi terbaik yang saya temukan adalah menginstal Node.js dari paket tar ke direktori home pengguna & menautkan lokasi folder lib. Inilah yang perlu Anda lakukan
Ini akan menginstal Nodejs di bawah ~ / .local / daripada default / usr / local /
Jika Anda masih mengalami kesalahan kepemilikan atau izin saat menginstal paket, maka ubah kepemilikan ~ / .local / dir dengan menjalankan
Sekarang Anda harus menginstal paket-paket melalui 'npm'
Catatan: SEMUA PERINTAH DI ATAS AKAN DIJALANKAN SEBAGAI PENGGUNA. JANGAN GUNAKAN SUDO ATAU ROOT LOGIN
PERNAH MENGUBAH PERIZINAN FOLDER DI BAWAH '/ USR / LIB /'. AKAN MENUJU OS YANG TIDAK STABIL
sumber
Saya menemukan penjelasan Pawel Grzybek sangat meyakinkan: Mereka mendidih menjadi 3 perintah sudo sederhana, tidak pernah harus menggunakan sudo lagi untuk instalasi npm global:
sumber