Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
While JavaScript engines and shells have been available outside of the browser for many years, it
was really only when Google released their V8 JavaScript engine in 2008 that the much of the
software development world started to wake up to the possibilities of using JavaScript as a
ly
standalone server-side scripting language.
on
As a result, a number of JavaScript toolkits and application frameworks based on V8 have emerged
in the last couple of years including Node.js, EJScript, Firecat and Appweb. Another impetus for
such toolkits and frameworks is the fact that in recent years JavaScript has become faster and
more efficient than many of the other popular scripting languages for non platform dependant
se
tasks and is well on its way to becoming a major universal scripting language.
The stated goal of Node,js is to provide an easy way to build scalable network applications. It
lu
includes many useful JavaScript libraries to access to the network and underlying filesystem.
However its key feature is evented I/O. Node.js takes the approach that all I/O should be
non-blocking. This means that HTTP requests, database queries, file I/O and suchlike do not block.
They are asynchronous, run independently and emit an event when necessary via callbacks.
a
nn
A whole collection of libraries and application frameworks has emerged based on Node.js. Check
out the github Node.js page which lists many of the popular Node.js libraries (AKA modules.) This
has lead to the development of a number of package managers for Node.js packages including
NPM, SeedJS and Kiwi.
o
rs
NPM (Node.js Package Manager) is currently the defacto package manager for Node.js. It is a
command line tool for installing, updating and managing Node.js packages. It works much like the
Ruby (RubyGems), Perl and Python package managers in that it does not use the underlying
pe
Currently there are no official Fedora RPMs for node.JS or NPM. There are some experimental
RPMs but I found them all to be deficient in one way or another. This post will show you how to
build what I consider to be suitable RPMs for use on Fedora platforms.
However, first of all, let me show you a typical example of installing node.JS using a shell script:
wget http://nodejs.org/dist/node-v0.2.5.tar.gz
tar xvf node-v0.2.5.tar.gz
cd node-v0.2.5
./configure
make
sudo make install
ly
* installing src/node_object_wrap.h as /usr/local/include/node/node_object_wrap.h
* installing src/node_buffer.h as /usr/local/include/node/node_buffer.h
* installing src/node_events.h as /usr/local/include/node/node_events.h
on
* installing src/node_version.h as /usr/local/include/node/node_version.h
* installing doc/node.1 as /usr/local/share/man/man1/node.1
* installing bin/node-waf as /usr/local/bin/node-waf
* installing bin/node-repl as /usr/local/bin/node-repl
* installing tools/wafadmin/Build.py as /usr/local/lib/node/wafadmin/Build.py
se
* installing tools/wafadmin/Constants.py as /usr/local/lib/node/wafadmin/Constants.py
* installing tools/wafadmin/py3kfixes.py as /usr/local/lib/node/wafadmin/py3kfixes.py
* installing tools/wafadmin/Task.py as /usr/local/lib/node/wafadmin/Task.py
* installing tools/wafadmin/Scripting.py as /usr/local/lib/node/wafadmin/Scripting.py
* installing
lu
tools/wafadmin/Configure.py as /usr/local/lib/node/wafadmin/Configure.py
* installing tools/wafadmin/Options.py as /usr/local/lib/node/wafadmin/Options.py
* installing tools/wafadmin/Runner.py as /usr/local/lib/node/wafadmin/Runner.py
* installing tools/wafadmin/ansiterm.py as /usr/local/lib/node/wafadmin/ansiterm.py
a
* installing tools/wafadmin/__init__.py as /usr/local/lib/node/wafadmin/__init__.py
* installing tools/wafadmin/Environment.py as /usr/local/lib/node/wafadmin/Environment.py
nn
_c.py
* installing tools/wafadmin/Tools/icc.py as /usr/local/lib/node/wafadmin/Tools/icc.py
* installing tools/wafadmin/Tools/gxx.py as /usr/local/lib/node/wafadmin/Tools/gxx.py
pe
iler_d.py
* installing tools/wafadmin/Tools/gob2.py as /usr/local/lib/node/wafadmin/Tools/gob2.py
* installing tools/wafadmin/Tools/suncxx.py as /usr/local/lib/node/wafadmin/Tools/suncxx.p
y
* installing tools/wafadmin/Tools/misc.py as /usr/local/lib/node/wafadmin/Tools/misc.py
* installing tools/wafadmin/Tools/node_addon.py as /usr/local/lib/node/wafadmin/Tools/node
_addon.py
* installing tools/wafadmin/Tools/cc.py as /usr/local/lib/node/wafadmin/Tools/cc.py
* installing tools/wafadmin/Tools/d.py as /usr/local/lib/node/wafadmin/Tools/d.py
* installing tools/wafadmin/Tools/xlcxx.py as /usr/local/lib/node/wafadmin/Tools/xlcxx.py
* installing tools/wafadmin/Tools/__init__.py as /usr/local/lib/node/wafadmin/Tools/__init
__.py
* installing tools/wafadmin/Tools/ar.py as /usr/local/lib/node/wafadmin/Tools/ar.py
* installing tools/wafadmin/Tools/gdc.py as /usr/local/lib/node/wafadmin/Tools/gdc.py
* installing tools/wafadmin/Tools/libtool.py as /usr/local/lib/node/wafadmin/Tools/libtool.
py
* installing tools/wafadmin/Tools/osx.py as /usr/local/lib/node/wafadmin/Tools/osx.py
* installing tools/wafadmin/Tools/python.py as /usr/local/lib/node/wafadmin/Tools/python.p
y
ly
y
* installing tools/wafadmin/Tools/compiler_cc.py as /usr/local/lib/node/wafadmin/Tools/com
piler_cc.py
on
* installing build/default/node as /usr/local/bin/node
* installing build/default/src/node_config.h as /usr/local/include/node/node_config.h
There are a number of documented ways to install NPM. Here is one way to download and install
se
NPM:
# curl http://npmjs.org/install.sh | sh
lu
node cli.js cache clean
npm info it worked if it ends with ok
npm info using npm@0.2.12-1
a
npm info using node@v0.2.5
npm ERR! sudon't!
nn
* 0.2.10:
npm edit command
various stability bugfixes.
* 0.2.11:
~> and 1.2.x style version ranges
complete tab completion: see `npm help completion` (Evan Meagher)
explore command: see `npm help explore`
docs command: see `npm help docs`
keywords and description in `npm ls`
Frequently asked questions at `npm help faq`
ly
* 0.2.12:
Various bugfixes (0.2.11 was big, broke some stuff)
on
`npm faq` command (wrapper for `npm help faq`)
se
npm info build Success: npm@0.2.12-1
npm ok
It worked lu
it was installed in /usr/local/bin/npm
As you can see neither Node.js or NPM install in ways that most people are used to on Fedora.
a
I decided to develop separate RPMs for installing Node.js and NPM. I am not, however, going to
nn
discuss how to build RPMs in general. I assume that you already know how to do that if you are
reading this post. If not, there are plenty of good tutorials available of the Internet.
o
The first problem that emerged is that there is an pre-existing package called node for most
GNU/Linux distributions. Unfortunately the lead Node.js developer, Ryan Dahl, insists on calling
rs
I want Node to have the executable name ‘node’. You can contact the author of the
other package and see if they’ll change their name.
r
I, for one, think that Fedora should follow the lead of Debian and rename it to nodejs to avoid
confusion. This is what I have done in the two RPMs that I developed.
I do not see a valid reason for separate 64-bit and 32-bit libraries at this time but the issue may
need revisiting in the future.
Name: nodejs
Version: 0.3.1
Release: 1.0
Summary: Node.js
Group: Development/Languages/Other
License: MIT
URL: http://nodejs.org/
Source0: node-v%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: gcc-c++ >= 4.1
BuildRequires: libstdc++-devel
BuildRequires: python
BuildRequires: openssl-devel
Provides: nodejs
Obsoletes: nodejs
ly
%description
Evented I/O for Google V8 JavaScript
%package devel
on
Summary: Node.js development files
Group: Development/Languages/C and C++
Requires: %{name} = %{version}-%{release}
Requires: python
Requires: gcc-c++ >= 4.1
se
%description devel
This package contains files for node.js addons development and build
%clean
rm -rf %{buildroot}
lu
%prep
%setup -q -n node-v%{version}
%build
a
./configure --debug --prefix=%{_prefix}
sed -i -e 's|"lib", "node"|"lib", "nodejs"|' src/node.js
nn
mv ${RPM_BUILD_ROOT}%{_bindir}/node_g ${RPM_BUILD_ROOT}%{_bindir}/nodejs_g
mv ${RPM_BUILD_ROOT}%{_includedir}/node ${RPM_BUILD_ROOT}%{_includedir}/nodejs
rs
mv ${RPM_BUILD_ROOT}%{_prefix}/lib/node ${RPM_BUILD_ROOT}%{_prefix}/lib/nodejs
mv ${RPM_BUILD_ROOT}%{_mandir}/man1/node.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/nodejs.1
%files
pe
%defattr(-,root,root,-)
%doc AUTHORS ChangeLog LICENSE
%attr(755,root,root) %{_bindir}/nodejs
%{_mandir}/man1/nodejs.1.gz
%files devel
r
%defattr(-,root,root,-)
# Headers
Fo
%dir %{_includedir}/nodejs
%{_includedir}/nodejs/*
# Debug version of node
%attr(755,root,root) %{_bindir}/nodejs_g
# Package information
%{_prefix}/lib/pkgconfig/nodejs.pc
# Node-waf
%attr(755,root,root) %{_bindir}/node-waf
%dir %{_prefix}/lib/nodejs
%dir %{_prefix}/lib/nodejs/wafadmin
%dir %{_prefix}/lib/nodejs/wafadmin/Tools
%{_prefix}/lib/nodejs/wafadmin/*
%changelog
* Sat Dec 18 2010 Finnbarr P. Murphy <fpm@fpmurphy.com> - 0.3.1
- First release. Contains node.JS v0.3.1
Name: npm
Version: 0.2.9
Release: 1.0
Summary: A package manager for node.js
Group: Development/Libraries/Other
License: MIT
URL: http://npmjs.org/
%define realversion 0.2.9
Source0: npm-v%{realversion}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root
BuildRequires: nodejs
Requires: nodejs
BuildArch: noarch
%description
NPM is a package manager for node.js.
ly
%prep
%setup -q -n npm-v%{realversion}
%clean
on
rm -rf %{buildroot}
%build
%install
# control the NPM install locations
cat > /var/tmp/npmrc <<NPMRC
se
root = %{buildroot}/usr/lib/nodejs
binroot = %{buildroot}%{_bindir}
manroot = %{buildroot}%{_mandir}
loglevel = verbose
lu
tmpdir = /var/tmp
NPMRC
npm_config_userconfig=/var/tmp/npmrc nodejs cli.js install .
a
rm -f /var/tmp/npmrc
# Replace NPM manpage symlinks with normal files
nn
mv %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/man1/npm.1 %{buildroot}%{_m
andir}/man1/npm.1
rs
rm %{buildroot}%{_bindir}/npm
mv %{buildroot}%{_bindir}/npm@%{realversion} %{buildroot}%{_bindir}/npm
rm -r %{buildroot}/usr/lib/nodejs/npm
mv %{buildroot}/usr/lib/nodejs/npm@%{realversion} %{buildroot}/usr/lib/nodejs/npm
rm -f %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/.gitignore
r
chmod -x %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/test/packages/bindir/
test.js
Fo
tmproot = /var/tmp
loglevel = error
NPMRC
%files
%defattr(-,root,root,-)
%exclude /usr/lib/nodejs/.npm/.cache
%dir /usr/lib/nodejs/npm
/usr/lib/nodejs/npm/*
%dir /usr/lib/nodejs/.npm
/usr/lib/nodejs/.npm/*
%attr(755,root,root) %{_bindir}/npm
%{_mandir}/man1/*
/etc/npmrc
%changelog
* Mon Dec 20 2010 Finnbarr P. Murphy <fpm@fpmurphy.com> 0.2.9-1
- Initial RPM packaging of NPM v0.2.9
ly
These RPM packages should not be regarded as production ready as they have not been
on
extensively tested or reviewed. I am not an RPM build expert by any means! I did not create the
above .spec files from scratch. Instead I modified the .spec files for existing RPMs that I found on
OBS (OpenSUSE Build Service). The bRPMs appear to work as intended.
se
If you do not want to build your own RPMs, you can download built RPMs for a number of
platforms them from my project area on OBS. Just pick the project you want (nodejs or NPM)
followed by the build platform (under build status), and you will be taken to the appropriate
lu
download repository. Note Fedora 14 is not yet available as an operational build platform on OBS
as the build hosts need upgrading. However, with Novell being recently sold off to Attachmate
Corporation, I wonder will this ever occur! Meanwhile you can download the two Fedora 14 RPMs
a
for X86_64 platforms from fpmurphy.com.
nn
nodejs-0.3.1-1.0
#
# rpm -ql nodejs
pe
/usr/bin/nodejs
/usr/share/doc/nodejs-0.3.1
/usr/share/doc/nodejs-0.3.1/AUTHORS
/usr/share/doc/nodejs-0.3.1/ChangeLog
/usr/share/doc/nodejs-0.3.1/LICENSE
r
/usr/share/man/man1/nodejs.1.gz
Fo
#
# rpm -vi npm-0.2.9-1.0.noarch.rpm
Preparing packages for installation...
npm-0.2.9-1.0
#
# rpm -ql npm
/etc/npmrc
/usr/bin/npm
/usr/lib/nodejs/.npm
/usr/lib/nodejs/.npm/npm
/usr/lib/nodejs/.npm/npm/0.2.9
/usr/lib/nodejs/.npm/npm/0.2.9/package
/usr/lib/nodejs/.npm/npm/0.2.9/package/.npmignore
/usr/lib/nodejs/.npm/npm/0.2.9/package/LICENSE
/usr/lib/nodejs/.npm/npm/0.2.9/package/Makefile
/usr/lib/nodejs/.npm/npm/0.2.9/package/README.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/cli.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/activate.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/adduser.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/build.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/bundle.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/cache.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/changelog.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/coding-style.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/config.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/deactivate.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/deprecate.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/developers.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/folders.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/future-ideas
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/future-ideas/deploy.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/future-ideas/remote.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/future-ideas/site.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/init.md
ly
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/install.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/json.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/link.md
on
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/list.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/ln.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/ls.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/npm.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/outdated.md
se
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/owner.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/publish.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/rebuild.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/restart.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/rm.md
lu
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/scripts.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/start.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/stop.md
a
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/tag.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/test.md
nn
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/uninstall.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/unpublish.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/update.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/version.md
o
/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/view.md
/usr/lib/nodejs/.npm/npm/0.2.9/package/html
rs
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/favicon.ico
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/index.html
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/npm-16.png
pe
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/npm-64-square.png
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/npm-fin.png
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/npm-large.png
/usr/lib/nodejs/.npm/npm/0.2.9/package/html/npm.png
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib
r
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/activate.js
Fo
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/adduser.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/autoremove.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/build.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/bundle.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/cache.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/completion.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/config.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/deactivate.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/deprecate.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/help.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/init.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/install.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/link.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/ls.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/outdated.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/owner.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/publish.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/rebuild.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/repl.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/restart.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/start.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/stop.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/tag.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/test.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/uninstall.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/unpublish.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/update-dependents.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/update.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/abbrev.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/async-map.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/base64.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/chain.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/default-config.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/default.npmignore
ly
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/error-handler.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/exec.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/fetch.js
on
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/find.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/get.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/graceful-fs.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/ini-parser.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/ini.js
se
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/lifecycle.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/link.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/load-package-defaults.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/log.js
lu
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/mkdir-p.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/output.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/promise-chain.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/prompt.js
a
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/proto-list.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/read-installed.js
nn
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/read-json.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/adduser.js
o
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/get.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/publish.js
rs
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/request.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/tag.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/registry/unpublish.js
pe
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/relativize.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/rm-rf.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/semver.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/set.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/sha.js
r
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/sys.js
Fo
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/uuid.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/write-shim.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/version.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/view.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/activate.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/adduser.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/build.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/bundle.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/cache.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/changelog.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/coding-style.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/config.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/deactivate.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/deprecate.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/developers.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/folders.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/future-ideas
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/future-ideas/deploy.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/future-ideas/remote.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/future-ideas/site.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/init.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/install.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/json.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/link.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/list.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/ln.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/ls.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/outdated.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/owner.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/publish.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/rebuild.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/restart.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/rm.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/scripts.1
ly
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/start.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/stop.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/tag.1
on
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/test.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/uninstall.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/unpublish.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/update.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/version.1
se
/usr/lib/nodejs/.npm/npm/0.2.9/package/man1/view.1
/usr/lib/nodejs/.npm/npm/0.2.9/package/npm-completion.sh
/usr/lib/nodejs/.npm/npm/0.2.9/package/npm.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/scripts
lu
/usr/lib/nodejs/.npm/npm/0.2.9/package/scripts/install.sh
/usr/lib/nodejs/.npm/npm/0.2.9/package/test
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/common.js
a
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/failer
nn
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/failer/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/fast
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/fast/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/slow
o
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/slow/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages
rs
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bindir
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bindir/bin
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bindir/bin/prog.js
pe
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bindir/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bindir/test.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/blerg
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/blerg/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/blerg/test.js
r
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundlerecurs
Fo
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundlerecurs/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundletest
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundletest/foo.js
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundletest/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/depends-on-connect
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/depends-on-connect/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/depends-on-jsdom
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/depends-on-jsdom/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/env-reader
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/env-reader/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/test-package
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/test-package/package.json
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/run.sh
/usr/lib/nodejs/.npm/npm/0.2.9/package/test/update-test.sh
/usr/lib/nodejs/.npm/npm/active
/usr/lib/nodejs/npm
/usr/lib/nodejs/npm/activate.js
/usr/lib/nodejs/npm/adduser.js
/usr/lib/nodejs/npm/autoremove.js
/usr/lib/nodejs/npm/build.js
/usr/lib/nodejs/npm/bundle.js
/usr/lib/nodejs/npm/cache.js
/usr/lib/nodejs/npm/completion.js
/usr/lib/nodejs/npm/config.js
/usr/lib/nodejs/npm/deactivate.js
/usr/lib/nodejs/npm/deprecate.js
/usr/lib/nodejs/npm/help.js
/usr/lib/nodejs/npm/index.js
/usr/lib/nodejs/npm/init.js
/usr/lib/nodejs/npm/install.js
/usr/lib/nodejs/npm/link.js
/usr/lib/nodejs/npm/ls.js
/usr/lib/nodejs/npm/outdated.js
/usr/lib/nodejs/npm/owner.js
/usr/lib/nodejs/npm/publish.js
ly
/usr/lib/nodejs/npm/rebuild.js
/usr/lib/nodejs/npm/repl.js
/usr/lib/nodejs/npm/restart.js
on
/usr/lib/nodejs/npm/start.js
/usr/lib/nodejs/npm/stop.js
/usr/lib/nodejs/npm/tag.js
/usr/lib/nodejs/npm/test.js
/usr/lib/nodejs/npm/uninstall.js
se
/usr/lib/nodejs/npm/unpublish.js
/usr/lib/nodejs/npm/update-dependents.js
/usr/lib/nodejs/npm/update.js
/usr/lib/nodejs/npm/utils
/usr/lib/nodejs/npm/utils/abbrev.js
lu
/usr/lib/nodejs/npm/utils/async-map.js
/usr/lib/nodejs/npm/utils/base64.js
/usr/lib/nodejs/npm/utils/chain.js
a
/usr/lib/nodejs/npm/utils/default-config.js
/usr/lib/nodejs/npm/utils/default.js
nn
/usr/lib/nodejs/npm/utils/error-handler.js
/usr/lib/nodejs/npm/utils/exec.js
/usr/lib/nodejs/npm/utils/fetch.js
/usr/lib/nodejs/npm/utils/find.js
o
/usr/lib/nodejs/npm/utils/get.js
/usr/lib/nodejs/npm/utils/graceful-fs.js
rs
/usr/lib/nodejs/npm/utils/ini-parser.js
/usr/lib/nodejs/npm/utils/ini.js
/usr/lib/nodejs/npm/utils/lifecycle.js
pe
/usr/lib/nodejs/npm/utils/link.js
/usr/lib/nodejs/npm/utils/load-package-defaults.js
/usr/lib/nodejs/npm/utils/log.js
/usr/lib/nodejs/npm/utils/mkdir-p.js
/usr/lib/nodejs/npm/utils/output.js
r
/usr/lib/nodejs/npm/utils/promise-chain.js
Fo
/usr/lib/nodejs/npm/utils/prompt.js
/usr/lib/nodejs/npm/utils/proto-list.js
/usr/lib/nodejs/npm/utils/read-installed.js
/usr/lib/nodejs/npm/utils/read-json.js
/usr/lib/nodejs/npm/utils/registry
/usr/lib/nodejs/npm/utils/registry.js
/usr/lib/nodejs/npm/utils/registry/adduser.js
/usr/lib/nodejs/npm/utils/registry/get.js
/usr/lib/nodejs/npm/utils/registry/publish.js
/usr/lib/nodejs/npm/utils/registry/request.js
/usr/lib/nodejs/npm/utils/registry/tag.js
/usr/lib/nodejs/npm/utils/registry/unpublish.js
/usr/lib/nodejs/npm/utils/relativize.js
/usr/lib/nodejs/npm/utils/rm-rf.js
/usr/lib/nodejs/npm/utils/semver.js
/usr/lib/nodejs/npm/utils/set.js
/usr/lib/nodejs/npm/utils/sha.js
/usr/lib/nodejs/npm/utils/sys.js
/usr/lib/nodejs/npm/utils/uuid.js
/usr/lib/nodejs/npm/utils/write-shim.js
/usr/lib/nodejs/npm/version.js
/usr/lib/nodejs/npm/view.js
/usr/share/man/man1/npm-activate.1.gz
/usr/share/man/man1/npm-adduser.1.gz
/usr/share/man/man1/npm-build.1.gz
/usr/share/man/man1/npm-bundle.1.gz
/usr/share/man/man1/npm-cache.1.gz
/usr/share/man/man1/npm-changelog.1.gz
/usr/share/man/man1/npm-coding-style.1.gz
/usr/share/man/man1/npm-config.1.gz
/usr/share/man/man1/npm-deactivate.1.gz
/usr/share/man/man1/npm-deprecate.1.gz
/usr/share/man/man1/npm-developers.1.gz
/usr/share/man/man1/npm-folders.1.gz
/usr/share/man/man1/npm-init.1.gz
ly
/usr/share/man/man1/npm-install.1.gz
/usr/share/man/man1/npm-json.1.gz
/usr/share/man/man1/npm-link.1.gz
on
/usr/share/man/man1/npm-list.1.gz
/usr/share/man/man1/npm-ln.1.gz
/usr/share/man/man1/npm-ls.1.gz
/usr/share/man/man1/npm-outdated.1.gz
/usr/share/man/man1/npm-owner.1.gz
se
/usr/share/man/man1/npm-publish.1.gz
/usr/share/man/man1/npm-rebuild.1.gz
/usr/share/man/man1/npm-restart.1.gz
/usr/share/man/man1/npm-rm.1.gz
/usr/share/man/man1/npm-scripts.1.gz
lu
/usr/share/man/man1/npm-start.1.gz
/usr/share/man/man1/npm-stop.1.gz
/usr/share/man/man1/npm-tag.1.gz
a
/usr/share/man/man1/npm-test.1.gz
/usr/share/man/man1/npm-uninstall.1.gz
nn
/usr/share/man/man1/npm-unpublish.1.gz
/usr/share/man/man1/npm-update.1.gz
/usr/share/man/man1/npm-version.1.gz
/usr/share/man/man1/npm-view.1.gz
o
/usr/share/man/man1/npm.1.gz
rs
Here is a simple program to test the Node.js installation. It simply outputs the contents of the
NPM global configuration file /etc/npmrc
pe
~
To test NPM, you could, for example, install the expressjs application framework for Node.js:
r
# npm ls installed
Fo
Here is the usual Hello World application using the express framework. You can use it to check
that NPM correctly installed the express package and the dependency package connect and that
Node.js can actually use them.
#!/usr/bin/nodejs
In summary, it is possible to package Node.js and NPM in a manner that is consistent with the
Fedora packaging guidelines. Server-side JavaScript implementations such as Node.js are an
emerging technology which should be made available to users of Fedora and downstream
distributions via the standard RPM package mechanism.
ly
on
se
a lu
o nn
rs
pe
r
Fo