+ All Categories
Home > Documents > Node.js and NPM on Fedora 14

Node.js and NPM on Fedora 14

Date post: 27-Apr-2015
Category:
Upload: finnbarr-p-murphy
View: 684 times
Download: 3 times
Share this document with a friend
Description:
Discusses the current methods of installing Node.js and NPM on Fedora 14 and shows you how to build suitable RPM packages for both Node.js and NPM.
13
Creating RPMs for Node.js and NPM on Fedora Creating RPMs for Node.js and NPM on Fedora Finnbarr P. Murphy ([email protected]) 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 standalone server-side scripting language. 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 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 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 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. 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 platform package manager. Instead it maintains its own package repository. A NPM package is: A folder (a) containing a program or library described by a package.json file A gzipped tarball (b) containing the folder (a) A URL (c) that resolves to (b) A @ (d) that is published on the registry with (c) A @ (e) that points to (d) A that has a “latest” tag satisfying (e) 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 For personnal use only 02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 1/13
Transcript
Page 1: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

Creating RPMs for Node.js andNPM on Fedora

Finnbarr P. Murphy([email protected])

While JavaScript engines and shells have been available outside of the browser for many years, itwas really only when Google released their V8 JavaScript engine in 2008 that the much of thesoftware development world started to wake up to the possibilities of using JavaScript as astandalone server-side scripting language.

As a result, a number of JavaScript toolkits and application frameworks based on V8 have emergedin the last couple of years including Node.js, EJScript, Firecat and Appweb. Another impetus forsuch toolkits and frameworks is the fact that in recent years JavaScript has become faster andmore efficient than many of the other popular scripting languages for non platform dependanttasks 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. Itincludes 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 benon-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 whole collection of libraries and application frameworks has emerged based on Node.js. Checkout the github Node.js page which lists many of the popular Node.js libraries (AKA modules.) Thishas lead to the development of a number of package managers for Node.js packages includingNPM, SeedJS and Kiwi.

NPM (Node.js Package Manager) is currently the defacto package manager for Node.js. It is acommand line tool for installing, updating and managing Node.js packages. It works much like theRuby (RubyGems), Perl and Python package managers in that it does not use the underlyingplatform package manager. Instead it maintains its own package repository.

A NPM package is:

A folder (a) containing a program or library described by a package.json file●

A gzipped tarball (b) containing the folder (a)●

A URL (c) that resolves to (b)●

A @ (d) that is published on the registry with (c)●

A @ (e) that points to (d)●

A that has a “latest” tag satisfying (e)●

Currently there are no official Fedora RPMs for node.JS or NPM. There are some experimentalRPMs but I found them all to be deficient in one way or another. This post will show you how tobuild 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.gztar xvf node-v0.2.5.tar.gzcd node-v0.2.5

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 1/13

Page 2: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

./configuremakesudo make install

Here is a list of the files that make install installs:

* installing deps/libeio/eio.h as /usr/local/include/node/eio.h* installing deps/v8/include/v8-profiler.h as /usr/local/include/node/v8-profiler.h* installing deps/v8/include/v8-debug.h as /usr/local/include/node/v8-debug.h* installing deps/v8/include/v8.h as /usr/local/include/node/v8.h* installing deps/libev/ev.h as /usr/local/include/node/ev.h* installing build/default/config.h as /usr/local/include/node/config.h* installing src/node.h as /usr/local/include/node/node.h* 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* 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* 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 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* 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* installing tools/wafadmin/TaskGen.py as /usr/local/lib/node/wafadmin/TaskGen.py* installing tools/wafadmin/pproc.py as /usr/local/lib/node/wafadmin/pproc.py* installing tools/wafadmin/Utils.py as /usr/local/lib/node/wafadmin/Utils.py* installing tools/wafadmin/Logs.py as /usr/local/lib/node/wafadmin/Logs.py* installing tools/wafadmin/Node.py as /usr/local/lib/node/wafadmin/Node.py* installing tools/wafadmin/Tools/config_c.py as /usr/local/lib/node/wafadmin/Tools/config_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* installing tools/wafadmin/Tools/nasm.py as /usr/local/lib/node/wafadmin/Tools/nasm.py* installing tools/wafadmin/Tools/dmd.py as /usr/local/lib/node/wafadmin/Tools/dmd.py* installing tools/wafadmin/Tools/suncc.py as /usr/local/lib/node/wafadmin/Tools/suncc.py* installing tools/wafadmin/Tools/gas.py as /usr/local/lib/node/wafadmin/Tools/gas.py* installing tools/wafadmin/Tools/gcc.py as /usr/local/lib/node/wafadmin/Tools/gcc.py* installing tools/wafadmin/Tools/compiler_d.py as /usr/local/lib/node/wafadmin/Tools/compiler_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.py* 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.py

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 2/13

Page 3: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

* installing tools/wafadmin/Tools/icpc.py as /usr/local/lib/node/wafadmin/Tools/icpc.py* installing tools/wafadmin/Tools/gnu_dirs.py as /usr/local/lib/node/wafadmin/Tools/gnu_dirs.py* installing tools/wafadmin/Tools/cxx.py as /usr/local/lib/node/wafadmin/Tools/cxx.py* installing tools/wafadmin/Tools/intltool.py as /usr/local/lib/node/wafadmin/Tools/intltool.py* installing tools/wafadmin/Tools/compiler_cxx.py as /usr/local/lib/node/wafadmin/Tools/compiler_cxx.py* installing tools/wafadmin/Tools/unittestw.py as /usr/local/lib/node/wafadmin/Tools/unittestw.py* installing tools/wafadmin/Tools/xlc.py as /usr/local/lib/node/wafadmin/Tools/xlc.py* installing tools/wafadmin/Tools/ccroot.py as /usr/local/lib/node/wafadmin/Tools/ccroot.py* installing tools/wafadmin/Tools/preproc.py as /usr/local/lib/node/wafadmin/Tools/preproc.py* installing tools/wafadmin/Tools/winres.py as /usr/local/lib/node/wafadmin/Tools/winres.py* installing tools/wafadmin/Tools/compiler_cc.py as /usr/local/lib/node/wafadmin/Tools/compiler_cc.py* 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 installNPM:

# curl http://npmjs.org/install.sh | shnode cli.js cache cleannpm info it worked if it ends with oknpm info using [email protected] info using [email protected] ERR! sudon't!npm ERR! sudon't! Running npm as root is not recommended!npm ERR! sudon't! Seriously, don't do this!npm ERR! sudon't!npm oknode cli.js rm npmnpm info it worked if it ends with oknpm info using [email protected] info using [email protected] ERR! sudon't!npm ERR! sudon't! Running npm as root is not recommended!npm ERR! sudon't! Seriously, don't do this!npm ERR! sudon't!npm info not installed npmnpm oknode cli.js install npmnpm info it worked if it ends with oknpm info using [email protected] info using [email protected] ERR! sudon't!npm ERR! sudon't! Running npm as root is not recommended!npm ERR! sudon't! Seriously, don't do this!npm ERR! sudon't!npm info fetch http://registry.npmjs.org/npm/-/npm-0.2.12-1.tgznpm info calculating sha1 /tmp/npm-1292470427494/1292470427888-0.6498551466502249/tmp.tgznpm info shasum a6a1d796735ac94fac62152e1b610b0041317703npm info calculating sha1 /usr/local/lib/node/.npm/.cache/npm/0.2.12-1/package.tgznpm info shasum 7c6c1c89a1b74333fe00d25d43ce4d2655a6bc7bnpm info preinstall [email protected] info install [email protected] info postinstall [email protected]

Thanks for installing version 0.2.12-1 of npm.

Last few items from the changelog:

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 3/13

Page 4: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

shasums on all tarballs More portable tar option usage Much beefed up bundle command Deep view command

* 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`

* 0.2.12: Various bugfixes (0.2.11 was big, broke some stuff) `npm faq` command (wrapper for `npm help faq`)

npm info preactivate [email protected] info activate [email protected] info postactivate [email protected] info build Success: [email protected] okIt worked

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.

I decided to develop separate RPMs for installing Node.js and NPM. I am not, however, going todiscuss how to build RPMs in general. I assume that you already know how to do that if you arereading this post. If not, there are plenty of good tutorials available of the Internet.

The first problem that emerged is that there is an pre-existing package called node for mostGNU/Linux distributions. Unfortunately the lead Node.js developer, Ryan Dahl, insists on callinghis application node. His attitude to this problem is interesting:

I want Node to have the executable name ‘node’. You can contact the author of theother package and see if they’ll change their name.

Ah, the arrogance of youth!

I, for one, think that Fedora should follow the lead of Debian and rename it to nodejs to avoidconfusion. This is what I have done in the two RPMs that I developed.

As a result of this decision, the executable /usr/bin/node is renamed to /usr/bin/nodejs, scriptscontaining shebangs are modified from #!/usr/bin/env node to #!/usr/bin/nodejs and/usr/lib/nodejs replaces /usr/lib/nodejs. The default NPM configuration options file../lib/utils/default-config.js is modified to set sane defaults for the Fedora platform, and a globalconfiguration file /etc/npmrc is created. See the .spec files for details.

I do not see a valid reason for separate 64-bit and 32-bit libraries at this time but the issue mayneed revisiting in the future.

Here is the .spec file for node.js

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 4/13

Page 5: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

Name: nodejsVersion: 0.3.1Release: 1.0Summary: Node.jsGroup: Development/Languages/OtherLicense: MITURL: http://nodejs.org/Source0: node-v%{version}.tar.gzBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-rootBuildRequires: gcc-c++ >= 4.1BuildRequires: libstdc++-develBuildRequires: pythonBuildRequires: openssl-develProvides: nodejsObsoletes: nodejs%descriptionEvented I/O for Google V8 JavaScript%package develSummary: Node.js development filesGroup: Development/Languages/C and C++Requires: %{name} = %{version}-%{release}Requires: pythonRequires: gcc-c++ >= 4.1%description develThis package contains files for node.js addons development and build%cleanrm -rf %{buildroot}%prep%setup -q -n node-v%{version}%build./configure --debug --prefix=%{_prefix}sed -i -e 's|"lib", "node"|"lib", "nodejs"|' src/node.js%__make %{?_smp_mflags} CXXFLAGS="%{optflags}" CFLAGS="%{optflags}"%install%__make DESTDIR=%{buildroot} installmv ${RPM_BUILD_ROOT}%{_bindir}/node ${RPM_BUILD_ROOT}%{_bindir}/nodejsmv ${RPM_BUILD_ROOT}%{_bindir}/node_g ${RPM_BUILD_ROOT}%{_bindir}/nodejs_gmv ${RPM_BUILD_ROOT}%{_includedir}/node ${RPM_BUILD_ROOT}%{_includedir}/nodejsmv ${RPM_BUILD_ROOT}%{_prefix}/lib/node ${RPM_BUILD_ROOT}%{_prefix}/lib/nodejsmv ${RPM_BUILD_ROOT}%{_mandir}/man1/node.1 ${RPM_BUILD_ROOT}%{_mandir}/man1/nodejs.1%files%defattr(-,root,root,-)%doc AUTHORS ChangeLog LICENSE%attr(755,root,root) %{_bindir}/nodejs%{_mandir}/man1/nodejs.1.gz%files devel%defattr(-,root,root,-)# Headers%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 <[email protected]> - 0.3.1- First release. Contains node.JS v0.3.1

And here is the .spec file for NPM:

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 5/13

Page 6: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

Name: npmVersion: 0.2.9Release: 1.0Summary: A package manager for node.jsGroup: Development/Libraries/OtherLicense: MITURL: http://npmjs.org/%define realversion 0.2.9Source0: npm-v%{realversion}.tar.gzBuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-rootBuildRequires: nodejsRequires: nodejsBuildArch: noarch%descriptionNPM is a package manager for node.js.%prep%setup -q -n npm-v%{realversion}%cleanrm -rf %{buildroot}%build%install# control the NPM install locationscat > /var/tmp/npmrc <<NPMRCroot = %{buildroot}/usr/lib/nodejsbinroot = %{buildroot}%{_bindir}manroot = %{buildroot}%{_mandir}loglevel = verbosetmpdir = /var/tmpNPMRCnpm_config_userconfig=/var/tmp/npmrc nodejs cli.js install .rm -f /var/tmp/npmrc# Replace NPM manpage symlinks with normal filesbuildroot_escaped=`echo '%{buildroot}' | sed -e 's/\\//\\\\\\//g'`realversion_escaped=`echo '%{realversion}' | sed -e 's/\\//\\\\\\//g'`mandir_escaped=`echo '%{_mandir}' | sed -e 's/\\//\\\\\\//g'`rm %{buildroot}%{_mandir}/man1/*mv %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/man1/npm.1 %{buildroot}%{_mandir}/man1/npm.1ls -l %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/man1/*.1 | sed -e "s/.*\/\(.*\)$/cp ${buildroot_escaped}\/usr\/lib\/nodejs\/.npm\/npm\/${realversion_escaped}\/package\/man1\/\1 ${buildroot_escaped}${mandir_escaped}\/man1\/npm-\1/g" | bashrm %{buildroot}%{_bindir}/npmmv %{buildroot}%{_bindir}/npm@%{realversion} %{buildroot}%{_bindir}/npmrm -r %{buildroot}/usr/lib/nodejs/npmmv %{buildroot}/usr/lib/nodejs/npm@%{realversion} %{buildroot}/usr/lib/nodejs/npmrm -f %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/.gitignorechmod -x %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/test/packages/bindir/test.js# configure NPM defaults in ../libs/utils/default-config.js for Fedora/Redhat/Centos platformssed -i -e 's|\(^ , root : \)\(.*\)|\1"/usr/lib/nodejs"|' -e 's|\(^ , tmproot : \)\(.*\)|\1"/var/tmp"|' -e 's|\(^ , manroot : \)\(.*\)|\1"/usr/share/man"|' -e 's|\(^ , binroot : \)\(.*\)|\1"/usr/bin"|' -e 's|\(^ , globalconfig : \)\(.*\)|\1"/etc/npmrc"|' %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/lib/utils/default-config.js# fix up hashbangs to up /usr/bin/nodejssed -i -e 's|/usr/bin/env node|/usr/bin/nodejs|' %{buildroot}/usr/bin/npmsed -i -e 's|/usr/bin/env node|/usr/bin/nodejs|' %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/lib/utils/write-shim.jssed -i -e 's|/usr/bin/env node|/usr/bin/nodejs|' %{buildroot}/usr/lib/nodejs/.npm/npm/%{realversion}/package/cli.js# add an /etc/npmrc config filemkdir -p %{buildroot}/etccat > %{buildroot}/etc/npmrc <<NPMRCroot = /usr/lib/nodejsbinroot = /usr/binmanroot = /usr/share/man

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 6/13

Page 7: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

tmproot = /var/tmploglevel = errorNPMRC%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 <[email protected]> 0.2.9-1- Initial RPM packaging of NPM v0.2.9

These RPM packages should not be regarded as production ready as they have not beenextensively tested or reviewed. I am not an RPM build expert by any means! I did not create theabove .spec files from scratch. Instead I modified the .spec files for existing RPMs that I found onOBS (OpenSUSE Build Service). The bRPMs appear to work as intended.

If you do not want to build your own RPMs, you can download built RPMs for a number ofplatforms 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 appropriatedownload repository. Note Fedora 14 is not yet available as an operational build platform on OBSas the build hosts need upgrading. However, with Novell being recently sold off to AttachmateCorporation, I wonder will this ever occur! Meanwhile you can download the two Fedora 14 RPMsfor X86_64 platforms from fpmurphy.com.

Here are a list of the files installed by both packages:

# rpm -vi nodejs-0.3.1-1.0.x86_64.rpmPreparing packages for installation...nodejs-0.3.1-1.0## rpm -ql nodejs/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/usr/share/man/man1/nodejs.1.gz## rpm -vi npm-0.2.9-1.0.noarch.rpmPreparing 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

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 7/13

Page 8: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

/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/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/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/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/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/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/tag.md/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/test.md/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/usr/lib/nodejs/.npm/npm/0.2.9/package/doc/view.md/usr/lib/nodejs/.npm/npm/0.2.9/package/html/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/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/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/activate.js/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

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 8/13

Page 9: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

/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/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/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/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/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/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/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/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/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/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/usr/lib/nodejs/.npm/npm/0.2.9/package/lib/utils/sys.js/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

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 9/13

Page 10: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

/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/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/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/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/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/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/usr/lib/nodejs/.npm/npm/0.2.9/package/test/disabled/failer/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/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/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/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/usr/lib/nodejs/.npm/npm/0.2.9/package/test/packages/bundlerecurs/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

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 10/13

Page 11: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

/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/usr/lib/nodejs/npm/rebuild.js/usr/lib/nodejs/npm/repl.js/usr/lib/nodejs/npm/restart.js/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/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/usr/lib/nodejs/npm/utils/async-map.js/usr/lib/nodejs/npm/utils/base64.js/usr/lib/nodejs/npm/utils/chain.js/usr/lib/nodejs/npm/utils/default-config.js/usr/lib/nodejs/npm/utils/default.js/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/usr/lib/nodejs/npm/utils/get.js/usr/lib/nodejs/npm/utils/graceful-fs.js/usr/lib/nodejs/npm/utils/ini-parser.js/usr/lib/nodejs/npm/utils/ini.js/usr/lib/nodejs/npm/utils/lifecycle.js/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/usr/lib/nodejs/npm/utils/promise-chain.js/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

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 11/13

Page 12: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

/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/usr/share/man/man1/npm-install.1.gz/usr/share/man/man1/npm-json.1.gz/usr/share/man/man1/npm-link.1.gz/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/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/usr/share/man/man1/npm-start.1.gz/usr/share/man/man1/npm-stop.1.gz/usr/share/man/man1/npm-tag.1.gz/usr/share/man/man1/npm-test.1.gz/usr/share/man/man1/npm-uninstall.1.gz/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/usr/share/man/man1/npm.1.gz

Here is a simple program to test the Node.js installation. It simply outputs the contents of theNPM global configuration file /etc/npmrc~To test NPM, you could, for example, install the expressjs application framework for Node.js:

# npm ls [email protected] =isaacs active installednpm ok# npm install expressnpm ok# npm ls [email protected] =creationix =tjholowaychuk active installed latest [email protected] =tjholowaychuk active installed latest [email protected] =isaacs active installednpm ok#

Here is the usual Hello World application using the express framework. You can use it to checkthat NPM correctly installed the express package and the dependency package connect and thatNode.js can actually use them.

#!/usr/bin/nodejs

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 12/13

Page 13: Node.js and NPM on Fedora 14

Creating RPMs for Node.js and NPM on Fedora

var express = require('express');var app = express.createServer();app.get('/', function(req, res){ res.send('Hello World');});app.listen(3000);console.log('Express server started on port %s', app.address().port);

In summary, it is possible to package Node.js and NPM in a manner that is consistent with theFedora packaging guidelines. Server-side JavaScript implementations such as Node.js are anemerging technology which should be made available to users of Fedora and downstreamdistributions via the standard RPM package mechanism.

For p

erson

nal u

se on

ly

02-25-2011 Copyright 2004-2011 Finnbarr P. Murphy. All rights reserved. 13/13


Recommended