Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

install node from packages

  • Loading branch information...
commit c0912fc76277f7e12bed328417191c1e4690a87f 1 parent a764bdb
@smith smith authored
Showing with 105 additions and 47 deletions.
  1. +7 −3 README.rdoc
  2. +2 −1  metadata.rb
  3. +33 −43 recipes/default.rb
  4. +63 −0 recipes/source.rb
View
10 README.rdoc
@@ -1,6 +1,6 @@
= DESCRIPTION:
-Installs Node.JS from source.
+Installs Node.JS.
= REQUIREMENTS:
@@ -22,12 +22,16 @@ Opscode cookbooks (http://github.com/opscode/cookbooks/tree/master)
= USAGE:
-Include the nodejs recipe to install node from source on your system:
+Include the nodejs recipe to install node on your system:
include_recipe "nodejs"
+Include the nodejs recipe to install node from source on your system:
+
+ include_recipe "nodejs::source"
+
Include the npm recipe to install npm:
-
+
include_recipe "nodejs::npm"
= LICENSE and AUTHOR:
View
3  metadata.rb
@@ -4,7 +4,8 @@
description "Installs/Configures nodejs"
long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
version "0.6.11"
-recipe "nodejs", "Installs Node.JS from source"
+recipe "nodejs", "Installs Node.JS"
+recipe "nodejs::source", "Installs Node.JS from source"
recipe "nodejs::npm", "Installs npm - a package manager for node"
depends "build-essential"
View
76 recipes/default.rb
@@ -1,9 +1,9 @@
#
-# Author:: Marius Ducea (marius@promethost.com)
+# Author:: Nathan L Smith (nlloyds@gmail.com)
# Cookbook Name:: nodejs
# Recipe:: default
#
-# Copyright 2010, Promet Solutions
+# Copyright 2012, Cramer Development, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,46 +18,36 @@
# limitations under the License.
#
-include_recipe "build-essential"
-
case node[:platform]
- when "centos","redhat","fedora"
- package "openssl-devel"
- when "debian","ubuntu"
- package "libssl-dev"
-end
-
-nodejs_tar = "node-v#{node[:nodejs][:version]}.tar.gz"
-nodejs_tar_path = nodejs_tar
-
-if node[:nodejs][:version].split('.')[1].to_i >= 5
- nodejs_tar_path = "v#{node[:nodejs][:version]}/#{nodejs_tar_path}"
-end
-
-remote_file "/usr/local/src/#{nodejs_tar}" do
- source "http://nodejs.org/dist/#{nodejs_tar_path}"
- checksum node[:nodejs][:checksum]
- mode 0644
-end
-
-# --no-same-owner required overcome "Cannot change ownership" bug
-# on NFS-mounted filesystem
-execute "tar --no-same-owner -zxf #{nodejs_tar}" do
- cwd "/usr/local/src"
- creates "/usr/local/src/node-v#{node[:nodejs][:version]}"
-end
-
-bash "compile node.js" do
- cwd "/usr/local/src/node-v#{node[:nodejs][:version]}"
- code <<-EOH
- ./configure --prefix=#{node[:nodejs][:dir]} && \
- make
- EOH
- creates "/usr/local/src/node-v#{node[:nodejs][:version]}/node"
-end
-
-execute "nodejs make install" do
- command "make install"
- cwd "/usr/local/src/node-v#{node[:nodejs][:version]}"
- not_if {File.exists?("#{node[:nodejs][:dir]}/bin/node") && `#{node[:nodejs][:dir]}/bin/node --version`.chomp == "v#{node[:nodejs][:version]}" }
+ when 'centos', 'redhat', 'scientific'
+ file = '/usr/local/src/nodejs-stable-release.noarch.rpm'
+
+ remote_file file do
+ source 'http://nodejs.tchol.org/repocfg/el/nodejs-stable-release.noarch.rpm'
+ action :create_if_missing
+ end
+
+ yum_package 'nodejs-stable-release' do
+ source file
+ options '--nogpgcheck'
+ end
+
+ %w{ nodejs nodejs-compat-symlinks npm }.each do |pkg|
+ package pkg
+ end
+ when 'ubuntu'
+ apt_repository 'node.js' do
+ uri 'http://ppa.launchpad.net/chris-lea/node.js/ubuntu'
+ distribution node['lsb']['codename']
+ components ['main']
+ keyserver "keyserver.ubuntu.com"
+ key "C7917B12"
+ action :add
+ end
+
+ %w{ nodejs npm }.each do |pkg|
+ package pkg
+ end
+ else
+ include_recipe 'nodejs::source'
end
View
63 recipes/source.rb
@@ -0,0 +1,63 @@
+#
+# Author:: Marius Ducea (marius@promethost.com)
+# Cookbook Name:: nodejs
+# Recipe:: default
+#
+# Copyright 2010, Promet Solutions
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+include_recipe "build-essential"
+
+case node[:platform]
+ when "centos","redhat","fedora"
+ package "openssl-devel"
+ when "debian","ubuntu"
+ package "libssl-dev"
+end
+
+nodejs_tar = "node-v#{node[:nodejs][:version]}.tar.gz"
+nodejs_tar_path = nodejs_tar
+
+if node[:nodejs][:version].split('.')[1].to_i >= 5
+ nodejs_tar_path = "v#{node[:nodejs][:version]}/#{nodejs_tar_path}"
+end
+
+remote_file "/usr/local/src/#{nodejs_tar}" do
+ source "http://nodejs.org/dist/#{nodejs_tar_path}"
+ checksum node[:nodejs][:checksum]
+ mode 0644
+end
+
+# --no-same-owner required overcome "Cannot change ownership" bug
+# on NFS-mounted filesystem
+execute "tar --no-same-owner -zxf #{nodejs_tar}" do
+ cwd "/usr/local/src"
+ creates "/usr/local/src/node-v#{node[:nodejs][:version]}"
+end
+
+bash "compile node.js" do
+ cwd "/usr/local/src/node-v#{node[:nodejs][:version]}"
+ code <<-EOH
+ ./configure --prefix=#{node[:nodejs][:dir]} && \
+ make
+ EOH
+ creates "/usr/local/src/node-v#{node[:nodejs][:version]}/node"
+end
+
+execute "nodejs make install" do
+ command "make install"
+ cwd "/usr/local/src/node-v#{node[:nodejs][:version]}"
+ not_if {File.exists?("#{node[:nodejs][:dir]}/bin/node") && `#{node[:nodejs][:dir]}/bin/node --version`.chomp == "v#{node[:nodejs][:version]}" }
+end
Please sign in to comment.
Something went wrong with that request. Please try again.