Вопрос или проблема
Код для установки node 14 на centos7:
RUN curl -sL https://rpm.nodesource.com/setup_14.x | bash -
RUN yum -y install nodejs
Как это работает? Первая команда загружает пакет. Где он хранится? Как вторая команда устанавливает nodejs из загруженного пакета? Спасибо.
В чем разница между bash
и bash -
?
ОБНОВЛЕНИЕ: Если кто-то пришел к этому вопросу в поисках установки node на centos7, вот фрагмент кода, который получает точную версию с сайта NodeJS.
RUN wget https://nodejs.org/download/release/v14.17.0/node-v14.17.0-linux-x64.tar.gz && \
tar xf node-v14.17.0-linux-x64.tar.gz -C /opt/ && \
rm node-v14.17.0-linux-x64.tar.gz
ENV PATH=/opt/node-v14.17.0-linux-x64/bin:$PATH
RUN npm config set cache /tmp --global
- Похоже, первая команда curl загружает инструкции rpm с указанного URL.
- Команда bash выполняет эти инструкции rpm и, вероятно, сохраняет пакет NPM 14.x в локальном реестре RPM.
- Команда yum install nodejs устанавливает nodejs из локального реестра RPM.
Эквивалентный синтаксис wget:
RUN wget -O - https://rpm.nodesource.com/setup_14.x | bash
RUN yum -y install nodejs
А чтобы скачать конкретную версию NodeJS с официального сайта, вот она:
RUN wget https://nodejs.org/download/release/v14.17.0/node-v14.17.0-linux-x64.tar.gz && \
tar xf node-v14.17.0-linux-x64.tar.gz -C /opt/ && \
rm node-v14.17.0-linux-x64.tar.gz
ENV PATH=/opt/node-v14.17.0-linux-x64/bin:$PATH
RUN npm config set cache /tmp --global
Ответ или решение
Установка Node.js 14 на CentOS 7: Подробное объяснение
Установка Node.js 14 на операционной системе CentOS 7 может быть выполнена с использованием предоставленного скрипта, который состоит из двух команд:
RUN curl -sL https://rpm.nodesource.com/setup_14.x | bash -
RUN yum -y install nodejs
Как это работает?
-
Первый шаг — загрузка и выполнение скрипта установки:
Команда
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
выполняет следующие действия:curl
загружает скрипт настройки RPM (файлы пакетов) с сервера NodeSource, который является официальным создателем пакетов Node.js для различных дистрибутивов Linux.- Флаг
-sL
для curl указывает, что необходимо работать в бесшумном режиме (-s
) и следовать перенаправлениям (-L
), если они имеются. - Загрузка происходит в память, так как данные передаются через пайп (
|
) сразу на выполнение в интерпретатореbash
. - Взаимодействие с сервером происходит временно, и после завершения выполнения скрипта загруженные данные не хранятся на диске.
-
Второй шаг — установка Node.js:
Команда
yum -y install nodejs
выполняет установку Node.js:yum
— это менеджер пакетов для систем на основе RPM, который упрощает установку и управление пакетами программного обеспечения.- В результате выполнения предыдущей команды в локальный репозиторий
yum
будут добавлены информацию и зависимости для установки Node.js 14. - Флаг
-y
позволяет автоматизировать процесс, соглашаясь со всеми запросами на подтверждение. - После выполнения этой команды Node.js установится вместе с
npm
(Node Package Manager), если он включен в пакет Node.js.
Разница между bash
и bash -
Когда вы используете bash
, это просто запускает интерпретатор bash, который может выполнять скрипты. Используя bash -
, вы указываете интерпретатору, что он должен работать в "интерактивном режиме" с входными данными со стандартного ввода. Однако в данном случае эта разница незначительна, так как оба способа вызывают выполнение скрипта без дополнительных параметров, и результат будет одинаковым в контексте выполнения скрипта установки.
Альтернативный способ установки Node.js с использованием wget
Также можно установить Node.js, загружая его непосредственно с сайта официальной документации Node.js. Пример команд может выглядеть следующим образом:
RUN wget https://nodejs.org/download/release/v14.17.0/node-v14.17.0-linux-x64.tar.gz && \
tar xf node-v14.17.0-linux-x64.tar.gz -C /opt/ && \
rm node-v14.17.0-linux-x64.tar.gz
ENV PATH=/opt/node-v14.17.0-linux-x64/bin:$PATH
RUN npm config set cache /tmp --global
- Здесь
wget
загружает архив сNode.js версии 14.17.0 и распаковывает его в каталог/opt/
. - После этого архивный файл удаляется для освобождения места на диске.
ENV
добавляет путь к бинарным файлам Node.js в переменную PATH, что позволяет запускать Node.js и npm из любого места в командной строке.- Установка кэша npm в временную директорию упрощает управление зависимостями.
Таким образом, установка Node.js на CentOS 7 может быть выполнена несколькими способами, но оба подхода обеспечивают установку необходимого программного обеспечения для дальнейшей разработки приложений на JavaScript с использованием Node.js.