Як встановити 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

EDIT 3: З липня 2016 року EDIT 1 більше не працює для nodejs 4 (і EDIT 2 також ). Ця відповідь ( https://stackoverflow.com/a/35165401/78935 ) дає справжній одношаровий.

EDIT 1: Якщо ви шукаєте nodejs 4, спробуйте тестувати репортаж EPEL:

sudo yum install nodejs --enablerepo=epel-testing

EDIT 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 (Додаткові пакети для Enterprise Linux) - це проект з відкритим кодом та безкоштовним сховищем на базі спільноти від команди Fedora, який забезпечує 100% високоякісні додаткові програмні пакети для дистрибуції Linux, включаючи RHEL (Red Hat Enterprise Linux), CentOS та Scientific Linux. Проект Epel не є частиною ОС RHEL / Cent, але він розроблений для великих дистрибутивів Linux, надаючи безліч пакетів з відкритим кодом, таких як мережа, системний адміністратор, програмування, моніторинг тощо. Більшість пакетів epel підтримується Fedora repo.

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


8
Це, безумовно, найшвидший підхід, який я бачив, але попередження може бути корисним - сховище EPEL не синхронізується з поточним стабільним вузлом, і ви не можете використовувати "n", щоб виправити це, коли його встановлено так (принаймні, не без якоїсь магії, яка поза мною). Виснажливий підхід клонування гейта / зробити встановлення - єдиний спосіб, який я знайшов, щоб забезпечити послідовну та поточну установку.
напівколонка

22
Я отримав з цього вузла 0.10.36 і npm 1.3.6. Вони дуже застаріли.
voltrevo

4
@Semicolon ви можете обійти це, встановивши лише npm, потім sudo npm install -g nта sudo n v0.12будь-яку іншу версію, яка вам подобається.
unboundev

4
n оновлення, як очікувалося, але воно не оновлює посилання на вузол належним чином. Вам доведеться виконати додаткову команду:sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node
Masadow

4
ця відповідь не спрацювала, оскільки sudo yum install nodejs --enablerepo=epel-testingповертає помилку: "Немає доступних вузлів пакету." при цьому 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
Якщо вам буде дозволено відмовити, вам потрібно буде додати трохи судо. 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"

(наприклад: експортувати PATH = "$ PATH: /home/ec2-user/mydirectory/node/node4.5.0-linux-x64/bin")

І оновіть npm(лише один раз, не додайте .bashrc):

npm install -g npm

Зауважте, що -gтам, що означає глобальний, насправді означає глобальний для цього екземпляра npm, який є екземпляром, який ми тільки що встановили, і обмежений поточним користувачем. Це стосується всіх пакетів, які npm встановлюється "глобально".


4
Це насправді найкраща відповідь, оскільки ви отримуєте саме ту версію, яку ви хочете
Маріуш

1
Хочеться, щоб я прочитав цю відповідь спочатку - це має бути прийнята відповідь, оскільки ви можете вибрати, яку версію потрібно встановити. - дякую @voltrevo
Mike W

2
@voltrevo дякую за відповідь. Так, є й інші способи встановлення вузла в Linux. Прийнята відповідь - це однолінійний підхід, який відбувається підключенням до пакетної системи YUM для автоматизованих та керованих оновлень. Пакети в репортажах YUM, як правило, трохи старші, а також трохи краще перевірені при більш широкому розміщенні. Особисто я рекомендую залишити останнє та найкраще в локальних середовищах розробки та використовувати щось більше, як прийнята відповідь у виробничих середовищах. Ура!
Тім Фулмер

для старих версій centos це найкращий шлях
user1336321

Помилка після запуску вузла -v зараз: "Неможливо виконати бінарний файл". Будь-які ідеї?
JosFabre

28

Процедура, яка працювала для мене (дотримуючись цих досить старих інструкцій з кількома оновленнями):

  • встановлено check git git --versionабо встановити його за допомогою:
    sudo yum install git
  • встановити gcc і openssl:
    sudo yum install gcc-c++ make
    sudo yum install openssl-devel
  • клонуйте git repo в каталог, який називається 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. Якщо у вас вже є /nodedir з попередньої установки, видаліть його перед тим, як скористатися командою gne 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

3
@Gio безліч інших відповідей на вибір, якщо ця вам не сподобається ;-) ... "в одній команді" не була найважливішою частиною питання ІМХО.
gowardwards

Це дуже корисно після помилки з відповіддю. Дякую
Дарон Танчаруен

@talentedandrew etc/sudoersкерує файлами, хто може запускати, які команди, як користувачі на яких машинах - але запускає / шукає / шукає команди, що знаходяться в каталогах, перелічених у його secure_pathВузлі, слід встановити, /usr/local/binі якщо там є sudo, слід його знайти - див. stackoverflow .com / a / 31734090/3092596 Якщо судо не знайде, то цей шлях потрібно додати до secure_path
судо

Я хотів би додати, що вам, можливо, доведеться виправити символічні посилання після встановлення цього методу: 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


1
Це повністю працює. Займає менше часу, ніж відповідь @goredwards. Пробував на AMI, оптимізованому AMS, оптимізованому AMI.
Jayant Bhawal

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 на Amazon Linux. Якщо ви хочете це зробити, вам слід також встановити засоби збирання:

yum install gcc-c++ make

Це фантастична відповідь. Щоб встановити Node більше, у мене більше 20 хвилин не потрібно.
Девід Веббер

якщо ви запускаєте php-додаток із деяким npm, складеним фронтендом на пружній підставці, ви можете скористатися цим. це частина мого файлу install.config, який змусив його працювати - gist.github.com/marekjalovec/1ccee0c2254e65fc5d82eb35c7da82ae
Marek Jalovec

14

Я щойно натрапив на це. Я спробував декілька більш популярних відповідей, але врешті-решт те, що для мене спрацювало, - це посібник із швидкого налаштування Amazon.

Підручник: Налаштування Node.js на екземплярі Amazon EC2

Суть підручника:

  1. Переконайтеся, що ви ssh'd на екземпляр.
  2. Захоплення nvm: 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, запустивши $ node -e "console.log('Running Node.js' + process.version)"

Сподіваємось, це допоможе наступній людині.


Ви можете пояснити вміст цього посилання. Хороша відповідь використовує лише посилання як посилання, а не основну тему відповіді.
BusyProgrammer

6

Здається, ніхто про це не згадує. На Amazon Linux 2 офіційним способом завантаження EPEL є:

  • sudo amazon-linux-extras install epel

... тоді ви можете:

  • sudo yum install nodejs

     

Дивіться Додаткові бібліотеки (Amazon Linux 2)


ну це здається найкращою відповіддю!
Stretch

@Stretch Не дуже. Він встановлює Вузол 6. Занадто старий.
ГабріельББ

5

У мене був встановлений Node.js 6.x і хотів встановити Node.js 8.x.

Ось команди, які я використав (взяті з сайту Nodejs з кількома додатковими кроками для обробки даних про кешовану пам'ять ):

  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: Відновити кеш метаданих (цього не було в документах, але ви постійно намагалися встановити Node.jx 6.x, безуспішно, поки я не видав ці дві останні команди)
  5. sudo yum install nodejs: Встановіть Node.js 8.x

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.


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

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


Дякую, це допомогло
arupjbasu



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 та перевстановив усі доступні пакети до v8!

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

Він працює і в екземплярі AWS Linux.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.