Как установить последнюю версию NodeJS в Debian Jessie?

Вам не нужны системные библиотеки или двоичные файлы внутри chroot для запуска приложения.

Например:

$ ls chroot_test 
hello*
$ sudo chroot chroot_test /hello
Hello, World

Почему это работает? Поскольку программа hello статически связана и не имеет зависимостей:

$ file chroot_test/hello 
chroot_test/hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped

В основном, независимо от технологии, файлы, которые необходимы для помещения в «песочницу», являются минимально необходимым для запуска приложения. Таким образом, динамически скомпонованной программе могут потребоваться libc.so и ld.so и так далее.

Простая среда bash может потребовать еще несколько файлов:

$ find chroot-bash -type f
chroot-bash/lib64/libdl.so.2
chroot-bash/lib64/ld-linux-x86-64.so.2
chroot-bash/lib64/libc.so.6
chroot-bash/lib64/libtinfo.so.5
chroot-bash/bin/bash

Мы не можем сделать в ней много (например, нет команды ls , но это работающая оболочка bash .

$ sudo chroot chroot-bash /bin/bash
bash-4.2# pwd
/
bash-4.2# ls
bash: ls: command not found
bash-4.2# echo *
bin lib64

Обратите внимание, что эти файлы являются копиями оригиналов; они не оригиналы (ну, вы можете связать-смонтировать их). ОС не выставлена.

Вам потребуется один и тот же набор файлов, независимо от того, используете ли вы chroot или docker или lxc ...

Пример небольшого контейнера докеров

Теперь обратите внимание, что это также верно и для самой операционной системы. Когда вы yum install или apt-get install пакет, он может добавить некоторые зависимости, включая библиотеки! В вашей ОС есть еще не все! Он просто имеет больший набор параметров по умолчанию, чтобы людям было проще его использовать.

29
04.06.2015, 19:50
2 ответа

Вы можете следуйте официальной документации node.js , чтобы установить последнюю версию с помощью диспетчера пакетов.

Node.js v6:

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

Node.js v7:

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

Запуск последнего, в моей системе были установлены node v7.5.0 и npm v4.1.2. Оба псевдонима node и nodejs были включены для Node автоматически.

2
27.01.2020, 19:38

в моем случае я выполнил рекомендуемые команды оболочки:

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

проблема была в том, что сценарий bash не обновил мой APT pinning, поэтому apt-get установил старый пакет Debian по умолчанию из источника debian.org, а не с nodesource.com

проверьте эту проблему с помощью apt-cache policy nodejs. вы должны увидеть что-то вроде Candidate: 6.10. 2-1nodesource1~jessie1, а не Candidate: 0.10.29~dfsg-2

чтобы установить приоритет вывода на nodesource, добавьте файл в /etc/apt/preferences. d/ под названием node или любым другим с таким содержанием:

Package: nodejs
Pin: release o=Node Source
Pin-Priority: 1200

сохраните и запустите apt-get cache update. затем попробуйте apt-cache policy nodejs снова. если кандидат выглядит правильно, установите как обычно apt-get install nodejs

4
27.01.2020, 19:38

Теги

Похожие вопросы