So installieren Sie Node.JS unter Amazon Linux

251

Ich habe gesehen, wie man yum verwendet, um die Abhängigkeiten zu installieren und dann Node.JS & NPM von der Quelle zu installieren. Während dies funktioniert, denke ich, dass Node.JS und NPM beide irgendwo in einem öffentlichen Repo sein sollten.

Wie kann ich Node.JS und NPM in einem Befehl unter AWS Amazon Linux installieren?

Tim Fulmer
quelle

Antworten:

396

Stolperte darüber, war seltsamerweise später wieder schwer zu finden. Hier für die Nachwelt setzen:

sudo yum install nodejs npm --enablerepo=epel

EDIT 3: Ab Juli 2016 funktioniert EDIT 1 nicht mehr für NodeJS 4 (und EDIT 2 auch nicht). Diese Antwort ( https://stackoverflow.com/a/35165401/78935 ) ergibt einen echten Einzeiler.

EDIT 1: Wenn Sie nach NodeJS 4 suchen, probieren Sie bitte das EPEL-Test-Repo:

sudo yum install nodejs --enablerepo=epel-testing

BEARBEITEN 2: Führen Sie die folgenden Schritte aus, um ein Upgrade von NodeJS 0.12, das über das EPEL-Repo mit dem obigen Befehl installiert wurde, auf NodeJS 4. aus dem EPEL-Test-Repo durchzuführen:

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

Die neueren Pakete setzen die Knoten-Binärdateien /usr/binanstelle von ein /usr/local/bin.

Und einige Hintergrundinformationen:

Die Option --enablerepo=epelveranlasst yumdie Suche nach den Paketen im EPEL-Repository.

EPEL (Extra Packages for Enterprise Linux) ist ein Open Source- und kostenloses Community-basiertes Repository-Projekt des Fedora-Teams, das 100% hochwertige Add-On-Softwarepakete für die Linux-Distribution bereitstellt, darunter RHEL (Red Hat Enterprise Linux), CentOS und Scientific Linux. Das Epel-Projekt ist nicht Teil von RHEL / Cent OS, wurde jedoch für große Linux-Distributionen entwickelt, indem es viele Open-Source-Pakete wie Netzwerk, Systemadministration, Programmierung, Überwachung usw. bereitstellt. Die meisten Epel-Pakete werden von Fedora Repo verwaltet.

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

Tim Fulmer
quelle
8
Dies ist definitiv der schnellste Ansatz, den ich gesehen habe, aber eine Warnung kann nützlich sein - das EPEL-Repository ist nicht mit dem aktuellen stabilen Knoten synchronisiert, und Sie können "n" nicht verwenden, um dies zu beheben, wenn es installiert wurde Weg (zumindest nicht ohne irgendeine Art von Magie, die mir ein Rätsel ist). Der langwierige Git-Klon / Make-Installationsansatz ist der einzige Weg, den ich gefunden habe, um eine konsistente und aktuelle Installation sicherzustellen.
Semikolon
22
Ich habe Knoten 0.10.36 und npm 1.3.6 daraus. Diese sind sehr veraltet.
Voltrevo
4
@Semicolon Sie umgehen können , dass NPM nur installieren, dann sudo npm install -g nund sudo n v0.12oder was auch immer andere Version , die Sie mögen.
Unboundev
4
n Aktualisieren Sie wie erwartet, aber die Knotenverbindung wird nicht ordnungsgemäß aktualisiert. Sie müssen den zusätzlichen Befehl sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
ausführen
4
Diese Antwort hat nicht funktioniert, da sudo yum install nodejs --enablerepo=epel-testingder Fehler zurückgegeben wird: "Keine Paketknoten verfügbar." während sudo yum install nodejs --enablerepo=epelgab nur sehr alte Versionen ...
Goredwards
224

Wie andere auch gab mir die akzeptierte Antwort eine veraltete Version.

Hier ist eine andere Möglichkeit, die sehr gut funktioniert:

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

Sie können 12.x auch durch eine andere Version wie 10.x, 8.x usw. ersetzen.

Sie können alle verfügbaren Versionen auf der NodeSource Github-Seite anzeigen und bei Bedarf auch von dort abrufen .

Hinweis: sudoAbhängig von Ihrer Umgebung müssen Sie möglicherweise verwenden .

Matthew Herbst
quelle
4
Dies war das, was ich für AWS Elastic Beanstalk verwenden musste, um eine neuere Version als die bereits installierte zu erhalten.
Jon Burgess
1
Arbeiten nur perfektionieren , während ich laufen muß npm installfür package.json,
Chetabahana
32
Ich musste dies mitcurl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -
user465342
16
Wenn Ihnen die Erlaubnis verweigert wird, müssen Sie etwas Sudo hinzufügen. curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -undsudo yum -y install nodejs
Sampoh
1
Wenn Sie Node.js 8.x installieren möchten, sollten Sie ausführencurl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
Argun
64

Die akzeptierte Antwort gab mir Knoten 0.10.36 und npm 1.3.6, die sehr veraltet sind. Ich habe den neuesten Linux-x64-Tarball von der Downloadseite von nodejs abgerufen und es war nicht allzu schwierig, ihn zu installieren: 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

Laden Sie nun den gerade heruntergeladenen Teer hoch -

tar xzf node.tgz

Führen Sie diesen Befehl aus und fügen Sie ihn dann hinzu .bashrc:

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

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

Und Update npm(nur einmal, nicht hinzufügen .bashrc):

npm install -g npm

Beachten Sie, dass das -gdort, was global bedeutet, wirklich global für die npm-Instanz bedeutet, die gerade installiert wurde und auf den aktuellen Benutzer beschränkt ist. Dies gilt für alle Pakete, die npm 'global' installiert.

Voltrevo
quelle
4
Dies ist eigentlich die beste Antwort, da Sie genau die Version erhalten, die Sie wollen
Mariusz
1
Ich wünschte, ich würde diese Antwort zuerst lesen - dies sollte die akzeptierte Antwort sein, da Sie auswählen können, welche Version Sie installieren möchten. - Danke @voltrevo
Mike W
2
@ Voltrevo Danke für die Antwort. Ja, es gibt andere Möglichkeiten, Node unter Linux zu installieren. Die akzeptierte Antwort ist ein Einzeiler, der zufällig in das YUM-Paketsystem für automatisierte und verwaltete Updates eingesteckt wird. Die Pakete in den YUM-Repos sind in der Regel etwas älter und werden auch mit breiteren Bereitstellungen etwas besser getestet. Persönlich empfehle ich, das Neueste und Beste den lokalen Entwicklungsumgebungen zu überlassen und eher die akzeptierte Antwort für Produktionsumgebungen zu verwenden. Prost!
Tim Fulmer
Für alte Centos-Versionen ist dies der beste Weg
user1336321
Fehler nach dem Ausführen von Knoten -v ist jetzt: 'Binärdatei kann nicht ausgeführt werden'. Irgendwelche Ideen?
JosFabre
28

Das Verfahren, das für mich funktioniert hat (Befolgen Sie diese ziemlich alten Anweisungen mit ein paar Updates):

  • Überprüfen Sie, ob Git installiert ist, git --versionoder installieren Sie es über:
    sudo yum install git
  • installiere gcc und openssl:
    sudo yum install gcc-c++ make
    sudo yum install openssl-devel
  • Klonen Sie das Git-Repo in ein Verzeichnis namens node(das Sie später entfernen können):
    git clone https://github.com/nodejs/node.git
  • Entscheiden Sie unter https://github.com/nodejs/node/releases , welche Version des Knotens Sie möchten
  • Gehen Sie in das soeben erstellte Knotenverzeichnis und installieren Sie den Knoten.
    cd node
    git checkout v6.1.0Geben Sie die gewünschte Version nach dem einv
    ./configure
    make
    sudo make install
  • Testen Sie, ob der Knoten entweder node --versionoder einfach installiert ist / funktioniert node(beenden Sie den Knoten über process.exit()oder ^Cx 2 oder ^C+exit ).
  • Überprüfen Sie die npm-Version: npm --versionund aktualisieren Sie sie gegebenenfalls übersudo npm install -g npm
  • Optional: Entfernen Sie das nodeVerzeichnis mitrm -r node

Anmerkungen:

  1. Die akzeptierte Antwort hat nicht funktioniert, da sudo yum install nodejs --enablerepo=epel-testingder Fehler zurückgegeben wird: No package nodejs available.
    ... und sudo yum install nodejs --enablerepo=epel(dh ohne -testing) nur sehr alte Versionen angegeben hat.
  2. Wenn Sie bereits eine alte Version des Knotens installiert haben, können Sie diese entfernen mit:
    sudo npm uninstall npm -g ... da sich npm selbst deinstallieren kann
    sudo yum erase nodejs
    sudo rm -f /usr/local/bin/node
    ( sudo yum rm nodejsin der akzeptierten Antwort funktioniert dies nicht, da rmkein gültiger yum-Befehl angezeigt wird yum --help)
  3. Es ist möglich , den Knoten Repo über zu klonen , git clone git://github.com/nodejs/node.gitanstatt git clone https://github.com/nodejs/node.gitSie können aber einen verschiedenen Fehler (siehe bekommen hier ).
  4. Wenn Sie bereits ein /nodeVerzeichnis aus einer früheren Installation haben, entfernen Sie es, bevor Sie den Befehl git clone verwenden (oder es liegt ein Konflikt vor):
    rm -r node
  5. Wenn Sie Schwierigkeiten haben , mit jedem sudo npm...Befehl - wie sudo: npm: command not foundund / oder haben Probleme mit Berechtigungen Knoten Pakete ohne sudo, bearbeitet Installation sudo nano /etc/sudoersund fügen Sie :/usr/local/binam Ende der Zeile , Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/binso dass es liestDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
goredwards
quelle
3
@Gio viele andere Antworten zur Auswahl, wenn Ihnen diese nicht gefällt ;-) ... 'in einem Befehl' war meiner Meinung nach nicht der wichtigste Teil der Frage.
Goredwards
Dies ist sehr nützlich, nachdem ich einen Fehler mit der Antwort zum Akzeptieren gemacht habe. Vielen Dank
Daron Tancharoen
@talentedandrew die etc/sudoersDatei steuert, wer welche Befehle als welche Benutzer auf welchen Computern ausführen kann - aber nur Befehle ausführen / finden / suchen, die sich in Verzeichnissen befinden, die auf seinem secure_pathKnoten aufgeführt sind, sollte installiert werden, /usr/local/binund wenn es dort ist, sollte sudo es finden - siehe stackoverflow .com / a / 31734090/3092596 Wenn sudo es nicht findet, dann wird dieser Pfad Bedürfnisse sudo die hinzugefügt werden secure_path- siehe auch: superuser.com/a/927599/404543
goredwards
Ich möchte hinzufügen, dass Sie möglicherweise Ihre symbolischen Links nach der Installation mit dieser Methode 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
reparieren müssen
23

Einfache Installation mit NVM ...

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

Um eine bestimmte Version (z. B. 12.16.3) von Node zu installieren, ändern Sie die letzte Zeile in

nvm install 12.16.3

Weitere Informationen zur Verwendung von NVM finden Sie in den Dokumenten: https://github.com/nvm-sh/nvm

ungenaue Suche
quelle
1
Das funktioniert total. Dauert auch weniger als die Antwort von @goredwards. Versucht auf einem Amazon ECS optimierten AMI.
Jayant Bhawal
3
Die akzeptierte Antwort und alle EDITs 1-3 haben bei mir nicht funktioniert, aber das hat funktioniert. Vielen Dank!
Seantomburke
1
ordentlich und kompakt.
Stephen Tetreault
1
einfach und fantastisch
Abhinav
2
Dies sollte die Antwort sein. Es ist bei weitem am besten, es sei denn, jemand möchte aus der Quelle bauen.
Kirkland
19

Verwenden Sie für die v4 LTS-Version:

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

Verwenden Sie für Node.js v6:

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

Ich hatte auch einige Probleme beim Versuch, native Addons unter Amazon Linux zu installieren. Wenn Sie dies tun möchten, sollten Sie auch Build-Tools installieren:

yum install gcc-c++ make
birnbaum
quelle
Dies ist eine fantastische Antwort. Ich brauche keine 20 Minuten mehr, um Node zu installieren.
David Webber
Wenn Sie eine PHP-Anwendung mit einem npm-kompilierten Frontend auf elastischer Bohnenstange ausführen, können Sie dies verwenden. Es ist Teil meiner install.config-Datei, die es zum Laufen gebracht hat
Marek Jalovec
14

Ich bin gerade darauf gestoßen. Ich habe einige der beliebtesten Antworten ausprobiert, aber am Ende hat mir die Kurzanleitung für die Einrichtung von Amazon geholfen.

Tutorial: Einrichten von Node.js auf einer Amazon EC2-Instanz

Der Kern des Tutorials ist:

  1. Stellen Sie sicher, dass Sie auf die Instanz ssh'd sind.
  2. Schnapp dir nvm: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
  3. Aktiv . ~/.nvm/nvm.sh
  4. Installieren Sie den Knoten mit nvm nvm install 4.4.5( HINWEIS : Sie können eine andere Version auswählen. Überprüfen Sie zuerst die Remote-Versionen, indem Sie sie ausführen. $ nvm ls-remote)
  5. Testen Sie abschließend, ob Sie den Knoten Node korrekt installiert haben, indem Sie ihn ausführen $ node -e "console.log('Running Node.js' + process.version)"

Hoffentlich hilft das der nächsten Person.

Troxwalt
quelle
Vielleicht möchten Sie den Inhalt in diesem Link erklären. Eine gute Antwort verwendet nur einen Link als Referenz, nicht das Hauptthema der Antwort.
BusyProgrammer
6

Es scheint, dass niemand dies erwähnt. Unter Amazon Linux 2 können Sie EPEL offiziell laden:

  • sudo amazon-linux-extras install epel

... dann darfst du:

  • sudo yum install nodejs

     

Siehe Extras Library (Amazon Linux 2)

theaws.blog
quelle
Nun, das scheint die beste Antwort zu sein!
Stretch
@ Stretch Nicht wirklich. Es installiert Knoten 6. Zu alt.
GabrielBB
5

Ich hatte Node.js 6.x installiert und wollte Node.js 8.x installieren.

Hier sind die Befehle, die ich verwendet habe (von Nodejs 'Site mit ein paar zusätzlichen Schritten, um mit den zwischengespeicherten Daten umzugehen ):

  1. sudo yum remove nodejs: Deinstallieren Sie Node.js 6.x (ich weiß nicht, ob dies notwendig war oder nicht)
  2. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  3. sudo yum clean all
  4. sudo yum makecache: Metadaten-Cache neu generieren (dies war nicht in den Dokumenten enthalten, aber yum hat erfolglos versucht, Node.jx 6.x zu installieren, bis ich diese beiden letzten Befehle ausgegeben habe).
  5. sudo yum install nodejs: Installieren Sie Node.js 8.x.
Brad W.
quelle
3

sudo yum install nodejs npm --enablerepo=epelarbeitet für Amazon Linux AMI. curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs funktioniert für RedHat.

Xiao Peng - ZenUML.com
quelle
2

Die einfachste Lösung ist dies (tun Sie dies als 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

Geben Sie hier die Bildbeschreibung ein

grepit
quelle
Danke, es hat geholfen
Arupjbasu
0

Wie in der offiziellen Dokumentation erwähnt, einfach unten 2 Schritte -

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

Für diejenigen, die möchten, dass die akzeptierte Antwort ohne weitere Suche in Ansible ausgeführt wird, poste ich die Aufgabe hier, um sie zu vereinfachen und in Zukunft nachschlagen zu können.

Akzeptierte Antwortempfehlung: https://stackoverflow.com/a/35165401/78935

Ansible Aufgabenäquivalent

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

Sie können den Knoten aktualisieren / installieren, indem Sie das installierte Paket auf die aktuelle Version neu installieren, wodurch wir während des Updates viele Fehler vermeiden können.

Dies erfolgt durch nvm mit dem folgenden Befehl. Hier habe ich meine Knotenversion auf 8 aktualisiert und alle verfügbaren Pakete auch auf v8 neu installiert!

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

Es funktioniert auch auf der AWS Linux-Instanz.

Soundharya AM
quelle