Пошаговая установка Node.js на Windows без виртуалок



    Эта статья предназначена для тех, кого бесят мильён левых служб и драйверов, которые ставят любые виртуалки. Тем, кто будут ставить доп. пакеты Node.js
    Все остальные могут скачать скомпилированный Node.js node-js.prcn.co.cc
    Или же установить Node.js из-под виртуалки nodejs.ru/25

    Прошу под кат


    Совсем без виртуалок, конечно, не обойдется попутно нам придется поставить Cygwin. Который лишен левых windows-служб, что меня неимоверно порадовало.

    Качаем Cygwin setup.exe — 670 Кб cygwin.com/setup.exe

    Установка Cygwin


    Запускаем, предложит выбрать путь установки, лучше ставить в c:\cygwin\
    Далее предложит выбрать путь куда будут заливаться пакеты, мой выбор пал на c:\cygwin\p\
    Далее предложит выбрать зеркало, откуда будет качать пакеты — я выбрал ftp.linux.kiev.ua — скорость отдачи очень радует

    Теперь нам нужно установить необходимые для установки и работы Node.js пакеты
    Dev — ставим все или только пакеты ниже
    — gcc g++ C++ compiler
    — gcc mingw-g++
    — gcc4-4++ G++ subpackage
    — git
    — make
    — openssl
    — pkg-config
    — zlib-devel
    Python – ставим все
    Web
    — wget

    Окно выбора пакетов примерно такое:


    Установщик соберет зависимости и установит все минут за 5 при отдаче в 8 Мбит/сек


    Патчим rebaseall


    Открываем файл C:\сygwin\bin\rebaseall не виндузовым блокнотом

    Если имя пользователя не латинское (прим. Администратор), то находим
    TmpDir="${TMP:-${TEMP:-/tmp}}"
    Заменяем на
    TmpDir="/tmp"

    Если работаем под 7й виндой, то находим
    sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' >"$TmpFile"
    Заменяем на
    sed -e '/cygwin1\.dll$/d' -e '/cyglsa.*\.dll$/d' -e 's/^/\//' -e '/\/sys-root\/mingw\/bin/d' >"$TmpFile"

    Больше ничего патчить не нужно

    Патчим библиотеки


    Закрываем Cygwin если открыли
    Запускаем командную строку windows
    в ней вбиваем C:\сygwin\bin\ash.exe
    Вбиваем руками ./rebaseall –v

    В результате мы увидим что-то такое:
    /usr/lib/dde1.2/tcldde12.dll: new base = 69050000, new size = 20000
    ... пропущена тыщастрок ...
    /usr/lib/reg1.1/tclreg11.dll: new base = 69030000, new size = 20000
    /usr/bin/cygz.dll: new base = 69000000, new size = 30000

    Закрываем виндузовую командную строку

    Запускаем Cygwin


    Запускаем Cygwin при первом запуске он создаст каталог для текущего пользователя windows в своей среде
    у меня c:\cygwin\home\Администратор\



    Ставим Node.js


    Качаем последнюю стабильную версию и устанавливаем

    $ wget http://nodejs.org/dist/node-latest.tar.gz
    $ tar xvf node-latest.tar.gz
    $ cd node-v0.2.4/
    $ ./configure
    $ make
    $ make install

    Если ругается на openssl
    ./configure --without-ssl

    Пробуем запустить Node.js
    $ node --version
    v0.2.4

    Создаем тестовое приложение для Node.js


    Создаем файл c:\cygwin\home\Администратор\www\server.js
    var http = require('http');
    
    http.createServer(function (request, response) {
      response.writeHead(200, {'Content-Type': 'text/html'});
      response.end('<b>Hello World from Cygwin</b>');
    }).listen(8124);
    
    console.log('Server running at http://127.0.0.1:8124/');

    Запускаем наш сервер


    $ node /home/Администратор/www/server.js

    Тут может заругаться фаерволл windows — разрешаем все, что спросит
    Открываем 127.0.0.1:8124
    Если вы увидели Hello World from Cygwin значит у вас все получилось, поздравляю.

    Прочие фиксы


    Для того, чтобы Node.js мог работать с внешними DNS, нужно создать файл /etc/resolv.conf и прописать в него
    nameserver 8.8.8.8
    nameserver 8.8.4.4

    Это адреса Google Public DNS

    По мотивам
    codebetter.com/blogs/matthew.podwysocki/archive/2010/09/07/getting-started-with-node-js-on-windows.aspx
    blog.brev.name/2010/09/nodejs-on-windows-7-under-cygwin.html
    Поделиться публикацией
    Похожие публикации
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 19
    • –4
      чего только на хабре не прочитаешь)))
      • 0
        Спасибо за топик, будет полезным. Какие-то нестандартные патчи :-)
        Не пробовали собирать третью линейку?
        • 0
          из-под cygwin ругается на jsmin.py, версия не стабильна все может быть. Под линуксом не пытался.
          • 0
            Под линуксом я таки собрал готовую к разработки аддонов версию чуть после v0.3.0, но не без пары патчей. Надеюсь в v0.3.1 всё устаканится.
        • +13
          Тем, кто не понял о чем тема, как и я, по ссылке есть очень хороший текст:

          «О проекте node.js

          Учите английский, блядь! Это серверный однопоточный джаваскрипт-движок на событиях (libev), состоящий из гугловского якобы высокопроизводительного JIT-компилятора V8 и библиотеки асинхронного ввода-вывода к нему. В библиотеке присутствует HTTP-сервер, что позволяет получить что-то в духе эрланговского MochiWeb и питоновского TornadoWeb, но позволяющее писать клиентский (браузерный/AJAX) и серверный ('cкрипты') код на одном языке. Ну и конечно геморрой в стиле mod_perl + POE вам обеспечен. Тем не менее, говорят, это прогрессивно и круто. (Шутка) „
          • +1
            Спасибо за полезную многим статью! Сам использую node.js в некоторых проектах с YUI 3.
            • 0
              А дебажить сие представляется возможным?
            • +1
              похоже это больше статья по установке cygwin
                • 0
                  Использовать Xen, он позволит сделать виртуализацию без установки дополнительных драйверов в HVM-домен с windows.
                  • 0
                    Добавьте, пожалуйста, тег «javascript».
                    • 0
                      не ставить левых служб — в лес не ходить
                      • 0
                        Cygwin — это зло и жесть. Я все же поставил virtual box и debian, поднял samba и доволен теперь как слон!
                        • +1
                          а как насчет npm?
                          • +1
                            npm, kiwi или seedjs это уже решает каждый сам
                            npm ставится как и все остальное, но без следующего фикса не встанет:
                            Cygwin internally uses Windows for DNS queries. node.js uses the c-ares library that relies on /etc/resolv.conf. Cygwin ships with an empty /etc/resolv.conf. In order to enabled networking from your scripts, add these IPs to the file (Google Public DNS):
                            $ vim /etc/resolv.conf

                            nameserver 8.8.8.8
                            nameserver 8.8.4.4
                          • +2
                            разрабатывать на виндовс-машине то, что потом все равно будет крутится под линухом — ССЗБ
                            • 0
                              если вам как и мне не удался билд:
                              make
                              ......
                              Build failed: -> task failed (err #2): {task: libv8.a SConstruct -> libv8.a}

                              то поможет:
                              export SHELL=/bin/bash

                              а потом повторить:
                              make
                              • 0
                                спасибо, очень помогло.(думал не смогу установит никогда)

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.