В отличии от моего друга Вовы я не люблю «играть в 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» чуть ниже, или кинуть ссылку на статью в свой блог или форум. Спасибо :)
ЛОЛ. Я всегда юзал
portsnap fetch
portsnap update
т.ч. удивлен возникшим у тебя проблемам ;)
Жаль вчера мне не подсказал, когда я тебе сказал что порты обновляю и жаль что ты их у нас не серваке так ни разу и не обновил :)
У меня сработал
curl -k https://npmjs.org/install.sh | sudo sh
а curl http://npmjs.org/install.sh | sh
сказал syntax error near unexpected token `newline’