Ответ 1
Где node установлен, когда я использую nvm, apt-get, устанавливаю или когда используя другие способы?
apt-get устанавливает все программное обеспечение, а не только node, в файловую систему, следующую за соглашением Ubuntu, где хранятся двоичные файлы, файлы с людьми, общие файлы, журналы и т.д. Однако, используя apt-get, вы будете иметь только определенная версия node, которая определяется циклом распространения дистрибутива. Если будут доступны обновления, они будут установлены с помощью apt-get update; apt-get upgrade
Однако самая новая версия какого-либо приложения будет недоступна до тех пор, пока она не войдет в дистрибутив. Например, node v0.x.y может быть недоступен до тех пор, пока Ubuntu 13.10 не сможет получить его только вручную. Хорошая сторона apt-get
или другого менеджера системных пакетов заключается в том, что она управляет обновлениями и удалением пакетов для вас. Он хранит все данные о пакете программного обеспечения в своей собственной базе данных. Вы всегда можете удалить node с помощью apt-get remove node
и его.
make install
установите пакет вручную, но он считается вредным. Никогда не используйте make install
в основном потому, что вы не сможете легко удалить пакет, вам придется прочитать Makefile и вручную удалить все установленные им файлы. В ситуации, когда вы хотите использовать make install
, всегда есть checkinstall
. Это программное обеспечение, которое создает собственный пакет и регистрирует его с помощью системы. Когда вы решите удалить пакет, вы можете сделать это с помощью одной команды вместо многих. ссылка wiki; Руководство по Ubuntu в checkinstall
Теперь nvm
script является node version manager
. Это очень полезно и легко использовать. Это позволяет вам устанавливать несколько версий node для параллельного использования на вашем компьютере. Он не компилирует node из источника, такого как make install
, поэтому он очень быстрый. это не зависит от вашего цикла распространения, так что у вас есть доступ ко всем версиям node, доступным на данный момент. nvm загружает предварительно скомпилированные двоичные файлы и идеально подходит для общего использования. Он сохраняет файлы node в своей локальной папке локально, поэтому, если вы хотите сравнить что-то между различными версиями node, это легко сделать.
Можно ли установить локальную локальную локацию node?
Если локально вы имеете в виду использование nvm
, то это очень хорошо для разработки и тестирования. Не уверены в производительности и преимуществах производительности между установкой из источника или использованием предварительно скомпилированных двоичных файлов nvm
. Я использую nvm для разработки и установки из источника в процессе производства. Однако, если кто-то еще сможет объяснить эту проблему, я буду рад узнать больше.
Почему nvm меняет свой файл ~/.profile вместо того, чтобы устанавливать его в какую-то системную папку bin?
Потому что nvm
не является исполняемым. Это набор функций bash, которые получены оболочкой и могут использоваться отдельно. Вы можете вызывать nvm_ls
и nvm_ls_remote
, а другие без основного script после этого отправляются в вашу оболочку. В главном script он анализирует аргументы командной строки и довольно печатает вывод в случае, например, `nvm_ls_remote '.
в ~/.profile добавляется следующая строка
[[ -s /home/USERNAME/.nvm/nvm.sh ]] && . /home/USERANME/.nvm/nvm.sh # This loads NVM
загружает все функции в вашу оболочку
Я видел, что nvm может устанавливать разные версии node рядом друг с другом - зачем мне это делать? Я могу установить их локально, не так ли?
Вы можете установить их локально с помощью make install
или checkinstall
, но вам придется создавать псевдонимы для них, например node_0.8.1, node_0.8.2, node_0.10.1 и т.д. И вам придется управлять новыми псевдонимами, устанавливая все пакеты, удаляя их, если они вам не нужны СЕБЯ. Это утомительные и скучные задачи, которые иногда могут быть подвержены ошибкам. nvm
выполняет все эти задачи для вас бесплатно.
Вы хотите сделать это, чтобы протестировать свое приложение в разных версиях node. Например, вы хорошо разбираетесь в v0.8, но хотите использовать новые функции v0.10.3, как вы это делаете? Вы должны загрузить исходный код, скомпилировать, создать псевдоним и запустить приложение. вы можете сделать это только с помощью nvm install 0.10.3
и запустить приложение.
Иногда вам приходится поддерживать более одной версии node. Например, некоторые размещенные среды не поддерживают связь с последней версией и имеют только v0.6. Ваши клиенты, которые используют ваше серверное приложение, могут столкнуться с ошибкой, характерной для этой версии. Когда вы исправляете ошибку, вы должны сначала ее воспроизвести. Используя nvm
установка v0.6 - это одна строка и полминуты. И вы можете легко проверить все версии, которые вы хотите таким образом. Проверьте свой код под разными версиями и убедитесь, что вам хорошо идти.
Где npm устанавливает пакеты? Я видел, что он проверяет версию аганиста пакетов node, что происходит с этими пакетами при обновлении node?
Если вы используете nvm
, пакеты, установленные глобально с опцией -g
, привязаны к соответствующей версии node. При переключении между версиями с помощью nvm use 0.x
вам нужно либо снова установить пакеты, либо использовать nvm copy-packages <version>
для использования пакетов из текущей версии. Если пакеты установлены локально, это зависит от них. package.json
должен содержать информацию об зависимостях приложения. Если он говорит node: '0,8', и вы только что обновили до 0,9, вы можете столкнуться с проблемами. Например, поведение process.nextTick
было изменено в последних выпусках по сравнению с 0,6. Поэтому будьте осторожны.
В каких случаях лучше использовать глобальную или локальную установку? Где я должен поместить мои пакеты тогда (и где они по умолчанию по умолчанию?)
Это зависит. Для развития nvm
является превосходным, на мой взгляд. Для меня это удобно и просто. Для производства могут быть некоторые последствия для производительности при использовании предварительно скомпилированных двоичных файлов, не оптимизированных для вашей системы. Было бы лучше спросить об этом как отдельный вопрос, чтобы люди с соответствующим опытом могли ответить.
Какая разница между npm, nvm и nave?
npm
- это ссылка node package manager
→ . Она содержит пакеты пользовательских программ, разработанные другими людьми. Эти пакеты не являются частью ядра node. npm используется для публикации вашего кода и управления зависимостями. Если вашему приложению требуется другое приложение, разработанное другими людьми, его удобно публиковать через npm.
nvm
есть node version manager
, он делает совершенно отдельную вещь. Это дает вам возможность очень легко переключаться между версиями node на одном компьютере и управляет всеми изменениями в вашей переменной среды $PATH
.
Рассмотрим nvm
как диспетчер обновлений для операционной системы и npm
в качестве менеджера приложений для этой системы. Ну, это сравнение неточно, но просто наступил на меня.
nave
в основном совпадает с nvm
, но он является исполняемым, тогда как nvm
является script, который поступает в оболочку. У каждой системы есть свои преимущества. Вы можете задать отдельный вопрос относительно использования случаев и различий.
Мой ответ не выполнен на 100% и содержит много субъективных личных мнений. Тем не менее, я надеюсь, что, по крайней мере, сделаю некоторые моменты более ясными, чтобы вы могли перейти к другим более конкретным вопросам. Кстати, этот список вопросов можно задать как отдельные вопросы. Я считаю, что stackoverflow дает наилучшие результаты, когда конкретные вопросы задаются отдельно, и больше людей с соответствующим опытом могут внести свой вклад.