Установка актуальной версии Node.JS на сервер с FreeBSD

nodejsВ отличии от моего друга Вовы я не люблю «играть в Linux». Возможно нелюбовь появилась когда мне несколько лет назад пришлось принять на себя обязанности админа сервера под Solaris с парой сотен сайтов на борту, хотя тогда я не знал даже как в никсах вывести содержимое папки на консоль. Пришлось осваивать все в режиме берсерка и ничего сразу не давалось.

Сегодня потребовалось установиться на свой сервер Node.JS. Кто не знает что это такое опишу — это серверный JavaScript. Да, да, теперь на JavaScript пишутся сервера :)

Итак, как нужно ставить Node.JS?

Идем на официальный сайт в раздел «как устанавливать» и видим что собственно под FreeBSD никаких инструкций нет. Гуглим и находим следующий рецепт:

# cd /tmp
# fetch http://s3.amazonaws.com/four.livejournal/20100120/node-v0.1.26.tar.gz
# tar -xzvf node-v0.1.26.tar.gz
# cd node-v0.1.26
# ./configure --prefix=/usr/local
# make && make install
# rehash

Скажу сразу — для текущей версии на моем сервере это не работает вот так:

make
Error expanding embedded variable.

Пробую юзать gmake вместо make — код компилируется и на сборке вываливаются ошибки. Не вариант.

Во FreeBSD есть порты. Ищем там node — вуаля. Версия 0.1.91 в портах вот тут /usr/ports/www/node. Но на официальном сайте доступна уже версия 0.4.2, использовать версию годичной давности не айс. Нужно как-то обновить порты. Гуглим — есть по крайней мере две утилиты для этого cvsup и portsnap. Юзаю первую потому что порекомендовал лисяра. Юзаю вот так:

cd /usr/ports/net/cvsup
make
make install
make clean

Потом создаю конфиг:

cd /usr/share/examples/cvsup/
cp standard-supfile /usr/local/etc/supfile
cd /usr/local/etc/
ee supfile

В конфиге пишу:

# cvsup -g -L 2 /usr/local/etc/supfile
#
# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup2.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4_11
*default delete use-rel-suffix# If your network link is a T1 or faster, comment out the following line.
*default compress## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection. It includes all of the individual "src-*" collections.
#src-all
ports-all tag=.
#doc-all tag=.

 

 

Далее:

cd /usr/ports/
rehash
cvsup -g -L 2 /usr/local/etc/supfile && make fetchindex

И получаю кучу ошибок «такой то каталог не найден». Можно конечно дергать последнюю команду множество раз, ошибки она пропускает, но я подумал что это не спортивно и попробовал вторую тулзу.

portsnap fetch
portsnap update

Пару раз коннект терялся и приходилось запускать её заново, но в итоге за часа полтора она все сделала.

Теперь в портах появились две версии Node.JS — /usr/ports/www/node и /usr/ports/www/node-devel. Первая более древняя, вторая 0.4.1, конечно не последняя, но и не годичной давности.

Ставим Node.JS из портов:

cd /usr/ports/www/node-devel
make
make install
make clean

И доставляем NPM для расширений:

curl http://npmjs.org/install.sh | sh

Обычно когда софт по мануалу инсталлируется одной строчкой, значения которой я не понимаю, то обычно у меня вылазит куча ошибок, но тут все прошло гладко и с первого раза.

Ну и собственно все ради чего это затевалось:

paulov# node test.js
Hello, people!

Если вам понравилось, пожалуйста, не поленитесь кликнуть «мне нравится» или «поделиться» или «+1» чуть ниже, или кинуть ссылку на статью в свой блог или форум. Спасибо :)

Вы можете оценить эту статью: 12345

Загрузка...

Комментарии приветствуются (уже оставили 3 комментария)
  1. avatar Моисеев Владимир:

    ЛОЛ. Я всегда юзал
    portsnap fetch
    portsnap update

    т.ч. удивлен возникшим у тебя проблемам ;)

  2. avatar ds:

    Жаль вчера мне не подсказал, когда я тебе сказал что порты обновляю и жаль что ты их у нас не серваке так ни разу и не обновил :)

Добавить комментарий

Ваш e-mail не будет опубликован.

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