Saya baru saja menginstal nodejs pada instance mikro EC2 baru.
Saya menginstalnya secara normal, ./configure -> make -> sudo make install.
Masalah: Ketika saya menjalankan "node" di ec2-user, itu berjalan dengan sempurna. Ketika saya menjalankan "sudo node", gagal.
Saya menemukan bahwa node ada di:
[ec2-user@XXXX ~]$ whereis node
node: /usr/local/bin/node /usr/local/lib/node
dan jalur saat ini
[ec2-user@XXXX ~]$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/opt/aws/bin:/home/ec2-user/bin
tapi, jalur sudo adalah
[root@ip-10-112-222-32 ~]# echo $PATH
/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin
kemudian saya mencoba mengedit PATH root untuk menyertakan jalur ke node, jadi "node" berjalan saat saya login sebagai root - tetapi masih tidak berfungsi saat saya login sebagai ec2-user dan menjalankan "sudo node" .
Saya membutuhkan ini untuk menginstal npm properfly. Adakah ide tentang cara memasukkan jalur node saat menjalankan "sudo node"?
node.js
bash
amazon-ec2
sudo
foobar.dll
sumber
sumber
Jawaban:
Ya, ini agak mengganggu tetapi Anda dapat memperbaikinya dengan beberapa tautan:
Mungkin ada lebih banyak tetapi hanya itu yang telah saya temui sejauh ini. Kurangnya node-waf akan menyebabkan beberapa
npm
penginstalan gagal dengan pesan kesalahan yang agak samar.sumber
node-waf
penyebabnpm rebuild
kesalahan. Apakah ada cara yang bersih untuk mengatasinya? Apakah saya perlu?/usr/local
tidak ada. Saya membuat direktori ~ / local. 3) Setelah menghapus/usr
dansudo
dari setiap baris kode ini dan menjalankannya melalui konsol saya, tidak ada yang berubah.Saya menambahkan
/usr/local/bin
kesecure_path
dalam/etc/sudoers
Kemudian ubah baris ini:
Untuk:
sumber
itu terjadi karena node yang dapat dieksekusi tidak ditemukan di / usr / bin. Jadi ikuti langkah-langkahnya:
whereis node
dalam kasus saya:
node: /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node
buat tautan simbolis untuk node:
sudo ln -s /home/<my_user>/.nvm/versions/node/v8.9.4/bin/node /usr/bin/node
Selesai!
sumber
sudo ln -s /home/ec2-user/.nvm/versions/node/v8.11.3/bin/npm /usr/bin/npm
apa yang saya coba lakukan sudonpm install
pada contoh ec2 aws saya setelah mengikuti tautanMengapa tidak menggunakan jalur absolut ke node? Jika Anda berencana untuk menggunakan skrip pemula, itu akan membutuhkan jalur absolut.
sumber
ln
solusi.coba yang berikut ini:
sumber
secure_path
diatur dalamsudoers
file.Anda bisa meneruskan path lengkap ke
node
executable dari induk (non-sudo shell) menggunakanwhich
perintah.sumber
Bagi saya, ini berfungsi hanya dengan mengubah kepemilikan folder node dari root menjadi ec2-user (masuk sebagai ec2-user).
(Catatan: Saya membuat folder node saya di / var / lib /)
Kemudian
seharusnya berfungsi dengan baik (asalkan Anda telah menginstal npm ok tentu saja!)
sumber
Berikut adalah pendekatan yang tidak menggunakan symlink, atau membutuhkan root:
Kemudian saya melakukan:
Manfaat tidak menjalankan node sebagai root dibahas di sini:
http://increaseyourgeek.wordpress.com/2010/08/18/install-node-js-without-using-sudo/
Ini sejalan dengan:
https://github.com/joyent/node/wiki/Installation
sumber
Bagaimana jika menggunakan "sudo $ (node yang mana)" daripada "sudo node"?
sumber
Dalam kasus saya, Node dipasang tanpa prefiks sudo . Jadi node tidak tersedia untuk superuser itu sebabnya tidak berfungsi
sudo node server
sumber
Saya tidak tahu apakah ini cara yang benar, tetapi inilah yang saya lakukan ...
Ini menginstal npm, dan sekarang saya dapat menginstal paket apa pun yang saya inginkan.
sumber