Как установить Node.JS на Amazon Linux

251

Я видел описание использования yum для установки зависимостей, а затем установки Node.JS & NPM из исходного кода. Хотя это работает, я чувствую, что Node.JS и NPM должны быть где-то в публичном репо.

Как я могу установить Node.JS и NPM одной командой в AWS Amazon Linux?

Тим Фулмер
источник

Ответы:

396

Наткнулся на это, было странно трудно найти позже. Выкладываю сюда для потомков:

sudo yum install nodejs npm --enablerepo=epel

РЕДАКТИРОВАТЬ 3: По состоянию на июль 2016 года, EDIT 1 больше не работает для nodejs 4 (и EDIT 2 ни для кого). Этот ответ ( https://stackoverflow.com/a/35165401/78935 ) дает истинную однострочность.

РЕДАКТИРОВАТЬ 1: Если вы ищете nodejs 4, попробуйте репозиторий EPEL:

sudo yum install nodejs --enablerepo=epel-testing

РЕДАКТИРОВАТЬ 2: Для обновления с nodejs 0.12, установленной через репозиторий EPEL, используя указанную выше команду, до nodejs 4 из репозитория EPEL, выполните следующие действия:

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

Более новые пакеты помещают двоичные файлы узла /usr/binвместо /usr/local/bin.

И немного предыстории:

Опция --enablerepo=epelвызывает yumпоиск пакетов в репозитории EPEL.

EPEL (Extra Packages for Enterprise Linux) - это проект с открытым исходным кодом и бесплатный репозиторий для сообщества, разработанный командой Fedora, который предоставляет 100% высококачественные дополнительные программные пакеты для дистрибутива Linux, включая RHEL (Red Hat Enterprise Linux), CentOS и Scientific Linux. Проект Epel не является частью операционной системы RHEL / Cent, но он предназначен для крупных дистрибутивов Linux, предоставляя множество пакетов с открытым исходным кодом, таких как сетевое взаимодействие, системное администрирование, программирование, мониторинг и так далее. Большинство пакетов epel поддерживаются репо Fedora.

Через http://www.tecmint.com/how-to-enable-epel-repository-for-rhel-centos-6-5/

Тим Фулмер
источник
8
Это, безусловно, самый быстрый подход, который я видел, но предупреждение может быть полезным - репозиторий EPEL не синхронизирован с текущим стабильным узлом, и вы не можете использовать «n», чтобы исправить это, когда он установлен, способ (по крайней мере, не без какой-то магии, которая за мной). Утомительный подход git clone / make install - единственный способ, который я нашел для обеспечения согласованной и текущей установки.
точка с запятой
22
Я получил узел 0.10.36 и npm 1.3.6 из этого. Это очень устарело.
Вольтрево
4
@Semicolon вы можете обойти это, только установив npm, а затем sudo npm install -g nи sudo n v0.12любую другую версию, которая вам нравится.
unboundev
4
Обновление, как ожидается, но не обновляет ссылку на узел должным образом. Вам нужно будет выполнить дополнительную команду:sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
Masadow
4
этот ответ не сработал, так как sudo yum install nodejs --enablerepo=epel-testingвозвращает ошибку: «Нет доступных пакетов nodejs». пока sudo yum install nodejs --enablerepo=epelтолько давал очень старые версии ...
goredwards
224

Как и другие, принятый ответ также дал мне устаревшую версию.

Вот еще один способ сделать это, который работает очень хорошо:

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

Вы также можете заменить 12.x другой версией, например 10.x, 8.x и т. Д.

Вы можете увидеть все доступные версии на странице NodeSource Github и при желании вытащить их оттуда.

Примечание: вам может потребоваться запустить с помощью в sudoзависимости от вашей среды.

Мэтью Хербст
источник
4
Это то, что мне нужно было использовать в AWS Elastic Beanstalk, чтобы получить более свежую версию, чем уже установленная.
Джон Берджесс
1
Работает просто идеально , а мне нужно работать npm installна package.json,
Chetabahana
32
Мне нужно было запустить это сcurl --silent --location https://rpm.nodesource.com/setup_4.x | sudo bash -
user465342
16
Если вам отказано в разрешении, вам нужно добавить sudo. curl --silent --location https://rpm.nodesource.com/setup_6.x | sudo bash -иsudo yum -y install nodejs
сампо
1
Если вы хотите установить Node.js 8.x, Шоуда выполнитьcurl --silent --location https://rpm.nodesource.com/setup_8.x | bash -
Аргун
64

Принятый ответ дал мне нод 0.10.36 и npm 1.3.6, которые очень устарели. Я взял последний архив linux-x64 со страницы загрузок nodejs, и его было не сложно установить: 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

Теперь распакуйте архив, который вы только что скачали.

tar xzf node.tgz

Запустите эту команду, а затем добавьте ее в свой .bashrc:

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

(пример: export PATH = "$ PATH: /home/ec2-user/mydirectory/node/node4.5.0-linux-x64/bin")

И обновить npm(только один раз, не добавляйте .bashrc):

npm install -g npm

Обратите внимание, что -gтам, что означает глобальный, действительно означает глобальный для того экземпляра npm, который является экземпляром, который мы только что установили, и ограничен текущим пользователем. Это будет применяться ко всем пакетам, которые npm устанавливает «глобально».

voltrevo
источник
4
Это на самом деле лучший ответ, так как вы получите именно ту версию, которую вы хотите
Mariusz
1
Если бы я сначала прочитал этот ответ - это должен быть принятый ответ, потому что вы можете выбрать, какую версию вы хотите установить. - спасибо @voltrevo
Майк W
2
@voltrevo спасибо за ответ. Да, есть другие способы установить узел в Linux. Принятым ответом является однострочник, который включается в систему пакетов YUM для автоматических и управляемых обновлений. Пакеты в репозиториях YUM, как правило, немного старше, а также немного лучше протестированы при более широком развертывании. Лично я рекомендую оставить самые последние и лучшие решения для локальных сред разработки и использовать что-то более похожее на принятый ответ для производственных сред. Ура!
Тим Фулмер
для старых версий
Centos
Ошибка после запуска узла -v теперь такова: «невозможно выполнить двоичный файл». Любые идеи?
JosFabre
28

Процедура, которая работала для меня (следуя этим довольно старым инструкциям с несколькими обновлениями):

  • проверьте, установлен git --versionли git или установите его через:
    sudo yum install git
  • установить gcc и openssl:
    sudo yum install gcc-c++ make
    sudo yum install openssl-devel
  • клонировать репозиторий git в каталог с именем node(который вы можете удалить позже):
    git clone https://github.com/nodejs/node.git
  • решить, какую версию узла вы хотите на https://github.com/nodejs/node/releases
  • перейдите в только что созданный каталог узлов и установите узел
    cd node
    git checkout v6.1.0- поставьте желаемую версию послеv
    ./configure
    make
    sudo make install
  • проверить, установлен ли узел / работает ли он node --versionили просто node(выйдите из узла через process.exit()или ^Cx 2 или ^C+ exit)
  • проверьте версию npm: npm --versionи при необходимости обновите черезsudo npm install -g npm
  • Необязательно: удалите nodeкаталог с помощьюrm -r node

Ноты:

  1. Принятый ответ не работает, так как sudo yum install nodejs --enablerepo=epel-testingвозвращает ошибку: No package nodejs available.
    ... и sudo yum install nodejs --enablerepo=epel(т.е. без -testing) дал только очень старые версии.
  2. Если у вас уже установлена ​​старая версия узла, вы можете удалить ее с помощью:
    sudo npm uninstall npm -g ..., так как npm может удалить себя
    sudo yum erase nodejs
    sudo rm -f /usr/local/bin/node
    ( sudo yum rm nodejsв принятом ответе не будет работать, поскольку rmнедопустимая команда yum см. yum --help)
  3. Можно скорее клонировать репо узла git clone git://github.com/nodejs/node.git, git clone https://github.com/nodejs/node.gitно вы можете получить различные ошибки (см. Здесь ).
  4. Если у вас уже есть /nodeкаталог из предыдущей установки, удалите его перед использованием команды git clone (или возникнет конфликт):
    rm -r node
  5. Если у вас возникли проблемы с какими-либо sudo npm...командами sudo: npm: command not foundи / или у вас есть проблемы с разрешениями при установке пакетов узлов без sudo, отредактируйте sudo nano /etc/sudoersи добавьте :/usr/local/binв конец строки, Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/binчтобы он читалDefaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
goredwards
источник
3
@ Gio множество других ответов на выбор, если вам не нравится этот ;-) ... «в одной команде» не было самой важной частью вопроса ИМХО.
goredwards
Это очень полезно после того, как я допустил ошибку при принятии ответа. Спасибо
Дарон Tancharoen
@talentedandrew etc/sudoersконтролирует файл, который может запускать какие команды и какие пользователи на каких машинах - но будет запускать / находить / искать только те команды, которые находятся в каталогах, перечисленных на его secure_pathузле, должен быть установлен, /usr/local/binи если он там есть, sudo должен его найти - см. stackoverflow .com / a / 31734090/3092596 Если sudo не находит его, необходимо добавить этот путь к sudo secure_path- см. также: superuser.com/a/927599/404543
goredwards
Я хотел бы добавить, что вам может потребоваться исправить ваши символические ссылки после установки, используя этот метод: 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
23

Простая установка с NVM ...

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

Чтобы установить определенную версию (например, 12.16.3) Node, измените последнюю строку на

nvm install 12.16.3

Для получения дополнительной информации о том, как использовать NVM, посетите документы: https://github.com/nvm-sh/nvm.

fuzzysearch
источник
1
Это полностью работает. Занимает меньше времени, чем ответ @goredwards. Пробовал на Amazon ECS оптимизировать AMI.
Джаянт Бхавал
3
Принятый ответ и все ИЗДАНИЯ 1-3 не сработали для меня, но это сработало. Спасибо!
seantomburke
1
аккуратный и компактный.
Стивен Тетро
1
просто и
Абхинав
2
Это должно быть ответом. Лучше всего, конечно, если кто-то не хочет строить из исходного кода.
Киркланд
19

Для версии v4 LTS используйте:

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

Для Node.js v6 используйте:

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

Я также столкнулся с некоторыми проблемами при попытке установить собственные дополнения в Amazon Linux. Если вы хотите сделать это, вы также должны установить инструменты сборки:

yum install gcc-c++ make
Бирнбаум
источник
Это фантастический ответ. Больше не требуется 20 минут, чтобы установить Node.
Дэвид Уэббер
если вы запускаете приложение php с некоторым скомпилированным интерфейсом npm на эластичном beanstalk, вы можете использовать это. это часть моего файла install.config, который заставил его работать - gist.github.com/marekjalovec/1ccee0c2254e65fc5d82eb35c7da82ae
Марек Яловец
14

Я только сталкивался с этим. Я попробовал несколько наиболее популярных ответов, но в итоге мне помогло руководство по быстрой настройке Amazon.

Учебник. Настройка Node.js в экземпляре Amazon EC2

Суть учебника:

  1. Убедитесь, что вы ssh'd на экземпляр.
  2. Захватить нвм: curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
  3. активный . ~/.nvm/nvm.sh
  4. Установите узел с помощью nvm nvm install 4.4.5(ПРИМЕЧАНИЕ. Вы можете выбрать другую версию. Сначала запустите удаленные версии $ nvm ls-remote)
  5. Наконец, проверьте, правильно ли вы установили узел узла, запустив $ node -e "console.log('Running Node.js' + process.version)"

Надеюсь, это поможет следующему человеку.

troxwalt
источник
Возможно, вы захотите объяснить содержание по этой ссылке. Хороший ответ использует в качестве ссылки только ссылку, а не основную тему ответа.
BusyProgrammer
6

Кажется, никто не упоминает об этом. В Amazon Linux 2 официальный способ загрузки EPEL:

  • sudo amazon-linux-extras install epel

... тогда вы можете:

  • sudo yum install nodejs

     

Смотрите Extras Library (Amazon Linux 2)

theaws.blog
источник
ну это похоже на лучший ответ!
растянуть
@ Stretch Не совсем. Он устанавливает Node 6. Слишком старый.
GabrielBB
5

Я установил Node.js 6.x и хотел установить Node.js 8.x.

Вот команды, которые я использовал (взятые с сайта Nodejs с несколькими дополнительными шагами для обработки кэшированных данных yum):

  1. sudo yum remove nodejs: Удалить Node.js 6.x (я не знаю, было ли это необходимо или нет)
  2. curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -
  3. sudo yum clean all
  4. sudo yum makecache: Восстановить кэш метаданных (этого не было в документации, но yum продолжал безуспешно пытаться установить Node.jx 6.x, пока я не выполнил эти две последние команды)
  5. sudo yum install nodejs: Установите Node.js 8.x
Брэд W
источник
3

sudo yum install nodejs npm --enablerepo=epelработает для Amazon Linux AMI. curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - yum -y install nodejs работает на RedHat.

Сяо Пэн - ZenUML.com
источник
2

Самое простое решение - это (сделать это как 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

введите описание изображения здесь

grepit
источник
Спасибо, это помогло
arupjbasu
1

Официальная документация для EC2-экземпляра работает для меня: https://docs.aws.amazon.com/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html

 1. curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.0/install.sh | bash
 2. . ~/.nvm/nvm.sh
 3. nvm ls-remote (=> find your version x.x.x =>) nvm install  x.x.x
 4. node -e "console.log('Running Node.js ' + process.version)"
Танер Меликоглу
источник
0

Как указано в официальной документации, просто ниже 2 шагов -

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt-get install -y nodejs
Вивек Чатурведи
источник
0

Для тех, кто хочет, чтобы принятый ответ запускался в Ansible без дальнейших поисков, я опубликую задачу здесь для удобства и дальнейшего использования.

Принятый ответ рекомендации: https://stackoverflow.com/a/35165401/78935

Эквивалент задачи

tasks:
  - name: Setting up the NodeJS yum repository
    shell: curl --silent --location https://rpm.nodesource.com/setup_10.x | bash -
    args:
      warn: no
  # ...
Андрей Чоара
источник
0

Вы можете обновить / установить узел, переустановив установленный пакет до текущей версии, что может избавить нас от множества ошибок при выполнении обновления.

Это делается с помощью команды nvm. Здесь я обновил версию своего узла до 8 и переустановил все доступные пакеты до версии 8!

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

Он работает и на экземпляре AWS Linux.

Саундхарья А.М.
источник