Jak zainstalować Node.JS na Amazon Linux


251

Widziałem opis użycia yum do zainstalowania zależności, a następnie instalacji Node.JS i NPM ze źródła. Chociaż to działa, wydaje mi się, że Node.JS i NPM powinny być gdzieś w publicznym repozytorium.

Jak mogę zainstalować Node.JS i NPM w jednym poleceniu na AWS Amazon Linux?


Odpowiedzi:


396

Natknąłem się na to, co było dziwnie trudne do znalezienia później. Umieszczenie tutaj dla potomności:

sudo yum install nodejs npm --enablerepo=epel

EDYCJA 3: Od lipca 2016 r. EDYCJA 1 nie działa już dla nodejs 4 (i EDIT 2 też). Ta odpowiedź ( https://stackoverflow.com/a/35165401/78935 ) daje prawdziwą jednowierszową.

EDYCJA 1: Jeśli szukasz nodejs 4, spróbuj repozytorium testowego EPEL:

sudo yum install nodejs --enablerepo=epel-testing

EDYCJA 2: Aby dokonać aktualizacji z nodejs 0.12 zainstalowanego za pomocą repozytorium EPEL za pomocą powyższej komendy, do nodejs 4 z repozytorium testowego EPEL, wykonaj następujące kroki:

sudo yum rm nodejs
sudo rm -f /usr/local/bin/node
sudo yum install nodejs --enablerepo=epel-testing

Nowsze pakiety wstawiają pliki binarne węzłów /usr/binzamiast /usr/local/bin.

I trochę tła:

Ta opcja --enablerepo=epelpowoduje yumwyszukiwanie pakietów w repozytorium EPEL.

EPEL (Extra Packages for Enterprise Linux) to otwarty i darmowy projekt repozytorium oparty na społeczności, opracowany przez zespół Fedory, który zapewnia 100% wysokiej jakości dodatkowe pakiety oprogramowania dla dystrybucji Linuksa, w tym RHEL (Red Hat Enterprise Linux), CentOS i Linux naukowy. Projekt Epel nie jest częścią RHEL / Cent OS, ale jest przeznaczony do dużych dystrybucji Linuksa, zapewniając wiele pakietów typu open source, takich jak praca w sieci, administrator systemu, programowanie, monitorowanie i tak dalej. Większość pakietów epel jest obsługiwana przez repozytorium Fedory.

Przez http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/


8
Jest to zdecydowanie najszybsze podejście, jakie widziałem, ale ostrzeżenie może być przydatne - repozytorium EPEL nie jest zsynchronizowane z bieżącym stabilnym węzłem i nie można użyć „n”, aby to naprawić, gdy jest zainstalowany sposób (przynajmniej nie bez magii, która jest poza mną). Nużące podejście do klonowania / instalacji git to jedyny sposób, w jaki udało mi się zapewnić spójną i aktualną instalację.
Semicolon

22
Mam z tego węzeł 0.10.36 i npm 1.3.6. Te są bardzo nieaktualne.
voltrevo

4
@Semicolon możesz obejść ten problem, instalując tylko npm, wtedy sudo npm install -g ni sudo n v0.12inną dowolną wersję.
niezwiązany

4
n aktualizuj zgodnie z oczekiwaniami, ale nie aktualizuje poprawnie łącza do węzła. Będziesz musiał uruchomić dodatkowe polecenie:sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
Masadow

4
ta odpowiedź nie działała, ponieważ sudo yum install nodejs --enablerepo=epel-testingzwraca błąd: „Brak dostępnych pakietów nodejs”. podczas gdy sudo yum install nodejs --enablerepo=epeldawałem tylko bardzo stare wersje ...
goredwards

224

Podobnie jak inne, zaakceptowana odpowiedź dała mi również przestarzałą wersję.

Oto inny sposób, aby to zrobić, który działa bardzo dobrze:

$ curl --silent --location https://rpm.nodesource.com/setup_12.x | bash -
$ yum -y install nodejs

Możesz również zastąpić 12.x inną wersją, taką jak 10.x, 8.x itp.

Możesz zobaczyć wszystkie dostępne wersje na stronie NodeSource Github , a także pobrać je w razie potrzeby.

Uwaga: może być konieczne uruchomienie w sudozależności od środowiska.


4
Właśnie tego potrzebowałem w AWS Elastic Beanstalk, aby uzyskać nowszą wersję niż już zainstalowana.
Jon Burgess,

1
Prace po prostu idealny, gdy trzeba uruchomić npm installza package.json,
Chetabahana

32
Musiałem uruchomić to zcurl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -
user465342

16
Jeśli odmówisz pozwolenia, musisz dodać sudo. curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -isudo yum -y install nodejs
sampoh,

1
jeśli chcesz zainstalować Node.js 8.x, powinieneś wykonaćcurl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
Argun

64

Zaakceptowana odpowiedź dała mi węzeł 0.10.36 i npm 1.3.6, które są bardzo nieaktualne. Chwyciłem najnowszy plik tarux linux-x64 ze strony pobierania nodejs i instalacja nie była zbyt trudna: https://nodejs.org/dist/latest/ .

# start in a directory where you like to install things for the current user
(For noobs : it downloads node package as node.tgz file in your directlry)
curl (paste the link to the one you want from the downloads page) >node.tgz

Teraz rozpakuj tar, który właśnie pobrałeś -

tar xzf node.tgz

Uruchom to polecenie, a następnie dodaj je również do .bashrc:

export PATH="$PATH:(your install dir)/(node dir)/bin"

(przykład: export PATH = "$ PATH: /home/ec2-user/mydirectory/node/node4.5.0-linux-x64/bin")

I zaktualizuj npm(tylko raz, nie dodawaj do .bashrc):

npm install -g npm

Zauważ, że -gtam, co oznacza globalne, tak naprawdę oznacza globalne dla tej instancji npm, którą właśnie zainstalowaliśmy i jest ograniczona do bieżącego użytkownika. Dotyczy to wszystkich pakietów, które npm instaluje „globalnie”.


4
To właściwie najlepsza odpowiedź, ponieważ masz dokładnie taką wersję, jakiej chcesz
Mariusz

1
Chciałbym najpierw przeczytać tę odpowiedź - powinna to być zaakceptowana odpowiedź, ponieważ możesz wybrać wersję, którą chcesz zainstalować. - dziękuję @ voltrevo
Mike W

2
@ voltrevo dziękuję za odpowiedź. Tak, istnieją inne sposoby instalacji węzła w systemie Linux. Zaakceptowana odpowiedź to jedna linijka, która zdarza się podłączać do systemu pakietów YUM w celu zautomatyzowanych i zarządzanych aktualizacji. Pakiety w repozytoriach YUM są nieco starsze, a także są lepiej testowane przy szerszych wdrożeniach. Osobiście polecam pozostawienie najnowszych i najlepszych lokalnych środowisk programistycznych i użycie czegoś bardziej podobnego do przyjętej odpowiedzi dla środowisk produkcyjnych. Twoje zdrowie!
Tim Fulmer

w przypadku starszych wersji Centos jest to najlepszy sposób
1336321

Błąd po uruchomieniu węzła -v teraz: „nie można wykonać pliku binarnego”. Jakieś pomysły?
JosFabre

28

Procedura, która zadziałała dla mnie (postępując zgodnie z tymi dość starymi instrukcjami z kilkoma aktualizacjami):

  • sprawdź, czy git jest zainstalowany git --versionlub zainstaluj go za pomocą:
    sudo yum install git
  • zainstaluj gcc i openssl:
    sudo yum install gcc-c++ make
    sudo yum install openssl-devel
  • sklonuj repozytorium git do katalogu o nazwie node(który możesz usunąć później):
    git clone https://github.com/nodejs/node.git
  • zdecyduj, którą wersję węzła chcesz na https://github.com/nodejs/node/releases
  • przejdź do właśnie utworzonego katalogu węzłów i zainstaluj węzeł
    cd node
    git checkout v6.1.0- umieść żądaną wersję pov
    ./configure
    make
    sudo make install
  • sprawdź, czy węzeł jest zainstalowany / działa z jednym node --versionlub po prostu node(wyjdź z węzła przez process.exit()lub ^Cx 2 lub ^C+ exit)
  • sprawdź wersję npm: npm --versioni zaktualizuj w razie potrzeby za pośrednictwemsudo npm install -g npm
  • Opcjonalnie: usuń nodekatalog za pomocąrm -r node

Uwagi:

  1. Od tego czasu zaakceptowana odpowiedź nie działała sudo yum install nodejs --enablerepo=epel-testing zwraca błąd: No package nodejs available.
    ... i sudo yum install nodejs --enablerepo=epel(tj. Bez -testing) podała tylko bardzo stare wersje.
  2. Jeśli masz już starą wersję węzła, możesz go usunąć za pomocą:
    sudo npm uninstall npm -g ... ponieważ npm może się odinstalować
    sudo yum erase nodejs
    sudo rm -f /usr/local/bin/node
    ( sudo yum rm nodejsw zaakceptowanej odpowiedzi nie będzie działać, ponieważ rmnie jest to poprawne polecenie yum patrz yum --help)
  3. Możliwe jest klonowanie repozytorium węzła za pośrednictwem git clone git://github.com/nodejs/node.git zamiast, git clone https://github.com/nodejs/node.gitale mogą pojawić się różne błędy (patrz tutaj ).
  4. Jeśli masz już /node katalog z poprzedniej instalacji, usuń go przed użyciem polecenia git clone (w przeciwnym razie wystąpi konflikt):
    rm -r node
  5. Jeśli masz problemy z sudo npm...komendami podobnymi do poleceń sudo: npm: command not foundi / lub masz problemy z uprawnieniami podczas instalowania pakietów węzłów bez sudo, edytuj sudo nano /etc/sudoersi dodaj :/usr/local/binna końcu wiersza Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin, aby odczytałDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

3
@Gio mnóstwo innych odpowiedzi do wyboru, jeśli ta nie odpowiada ci ;-) ... „jednym poleceniem” nie było najważniejszą częścią pytania IMHO.
goredwards

Jest to bardzo przydatne po tym, jak popełniłem błąd przy akceptacji odpowiedzi. Dziękuję
Daron Tancharoen,

@talentandrew etc/sudoerskontroluje pliki, które mogą uruchamiać komendy jako użytkownicy na jakich komputerach - ale będą uruchamiać / znajdować / szukać komend znajdujących się w katalogach wymienionych w secure_pathwęźle, /usr/local/bina jeśli tam jest, sudo powinno je znaleźć - zobacz stackoverflow .com / a / 31734090/3092596 Jeśli sudo go nie znajdzie, to należy dodać tę ścieżkę do sudo's secure_path- patrz także: superuser.com/a/927599/404543
goredwards

Chciałbym dodać, że może być konieczne naprawienie dowiązań symbolicznych po instalacji przy użyciu tej metody: sudo ln -s /usr/local/bin/node /usr/bin/node sudo ln -s /usr/local/lib/node /usr/lib/node sudo ln -s /usr/local/bin/npm /usr/bin/npm sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf
BuffMcBigHuge 25.09.17

23

Prosta instalacja z NVM ...

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash
. ~/.nvm/nvm.sh
nvm install node

Aby zainstalować określoną wersję (np. 12.16.3) węzła, zmień ostatnią linię na

nvm install 12.16.3

Aby uzyskać więcej informacji na temat korzystania z NVM, odwiedź dokumentację: https://github.com/nvm-sh/nvm


1
To całkowicie działa. Zajmuje to mniej czasu niż odpowiedź @goredwards. Wypróbowałem AMI zoptymalizowany pod kątem Amazon ECS.
Jayant Bhawal

3
Przyjęta odpowiedź i wszystkie EDYCJE 1-3 nie działały dla mnie, ale zadziałało. Dzięki!
seantomburke

1
schludny i zwarty.
Stephen Tetreault

1
proste i niesamowite
Abhinav

2
To powinna być odpowiedź. Jak dotąd najlepiej jest, chyba że ktoś chce budować ze źródła.
Kirkland

19

Dla wersji LTS v4 użyj:

curl --silent --location https://rpm.nodesource.com/setup_4.x | bash -
yum -y install nodejs

W przypadku Node.js v6 użyj:

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -
yum -y install nodejs

Wpadłem również na pewne problemy, gdy próbowałem zainstalować natywne dodatki w Amazon Linux. Jeśli chcesz to zrobić, powinieneś również zainstalować narzędzia do kompilacji:

yum install gcc-c++ make

To fantastyczna odpowiedź. Zainstalowanie Node nie zajmuje mi już 20 minut.
David Webber

jeśli uruchamiasz aplikację php z jakimś frontonem skompilowanym npm na elastycznej łodydze fasoli, możesz tego użyć. to część mojego pliku install.config, który sprawił, że działał - gist.github.com/marekjalovec/1ccee0c2254e65fc5d82eb35c7da82ae
Marek Jalovec

14

Właśnie się z tym spotkałem. Wypróbowałem kilka bardziej popularnych odpowiedzi, ale ostatecznie zadziałał dla mnie szybki przewodnik Amazon.

Samouczek: Konfigurowanie Node.js w instancji Amazon EC2

Istotą samouczka jest:

  1. Upewnij się, że jesteś ssh'd do instancji.
  2. Chwyć NVM: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
  3. Aktywny . ~/.nvm/nvm.sh
  4. Zainstaluj węzeł za pomocą nvm nvm install 4.4.5(UWAGA: Możesz wybrać inną wersję. Najpierw sprawdź wersje zdalne, uruchamiając$ nvm ls-remote )
  5. Na koniec sprawdź, czy poprawnie zainstalowałeś Węzeł, uruchamiając $ node -e "console.log('Running Node.js' + process.version)"

Mam nadzieję, że pomoże to następnej osobie.


Możesz wyjaśnić te treści w tym linku. Dobra odpowiedź wykorzystuje tylko odnośnik jako odniesienie, a nie główny temat odpowiedzi.
BusyProgrammer


5

Miałem zainstalowany Node.js 6.x i chciałem zainstalować Node.js 8.x.

Oto polecenia, których użyłem (wzięte z witryny Nodejsa z kilkoma dodatkowymi krokami do obsługi danych z pamięci podręcznej yum):

  1. sudo yum remove nodejs: Odinstaluj Node.js 6.x (nie wiem czy było to konieczne, czy nie)
  2. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  3. sudo yum clean all
  4. sudo yum makecache: Ponownie wygeneruj pamięć podręczną metadanych (nie było tego w dokumentacji, ale próbowałem instalować Node.jx 6.x bezskutecznie, dopóki nie wydałem tych dwóch ostatnich poleceń)
  5. sudo yum install nodejs: Zainstaluj Node.js 8.x

3

sudo yum install nodejs npm --enablerepo=epelpracuje dla Amazon Linux AMI. curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs działa dla RedHat.


2

Najłatwiejszym rozwiązaniem jest to (zrób to jako root)

sudo su root
cd /etc
mkdir node
yum install wget
wget https://nodejs.org/dist/v9.0.0/node-v9.0.0-linux-x64.tar.gz
tar -xvf node-v9.0.0-linux-x64.tar.gz
cd node-v9.0.0-linux-x64/bin
./node -v
ln -s /etc/node-v9.0.0-linux-x64/bin/node node

wprowadź opis zdjęcia tutaj


Dzięki, pomogło
arupjbasu,



0

Jak wspomniano w oficjalnej dokumentacji, proste poniżej 2 kroków -

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs

0

Dla tych, którzy chcą, aby zaakceptowana odpowiedź była uruchamiana w Ansible bez dalszych poszukiwań, zamieszczam tutaj zadanie dla wygody i odniesienia w przyszłości.

Rekomendacja zaakceptowanej odpowiedzi: https://stackoverflow.com/a/35165401/78935

Odpowiednie zadanie równoważne

tasks:
  - name: Setting up the NodeJS yum repository
    shell: curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    args:
      warn: no
  # ...

0

Możesz zaktualizować / zainstalować węzeł, ponownie instalując zainstalowany pakiet do bieżącej wersji, co może uchronić nas przed dużą ilością błędów podczas wykonywania aktualizacji.

Odbywa się to przez nvm za pomocą poniższego polecenia. Tutaj zaktualizowałem wersję mojego węzła do 8 i ponownie zainstalowałem wszystkie dostępne pakiety do wersji 8!

nvm i v8 --reinstall-packages-from=default

Działa również na instancji AWS Linux.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.