installation from packages available as an option; source install still default; readme migrated to md; foodcritic lint applied

Esse commit está contido em:
Marius Ducea
2012-03-04 23:31:19 -08:00
commit 2710c028f9
9 arquivos alterados com 165 adições e 120 exclusões
+3
Ver Arquivo
@@ -0,0 +1,3 @@
## v1.0.0:
* added packages installation support thanks to Nathan L Smith
+67
Ver Arquivo
@@ -0,0 +1,67 @@
DESCRIPTION
===========
Installs Node.JS
REQUIREMENTS
============
## Platform
* Tested on Debian 5+ and Ubuntu 10.04
* Should work fine on Centos, RHEL, etc.
## Cookbooks:
* build-essential
Opscode cookbooks (http://github.com/opscode/cookbooks/tree/master)
ATTRIBUTES
==========
* nodejs['install_method'] = source or package
* nodejs['version'] - release version of node to install
* nodejs['dir'] - location where node will be installed, default /usr/local
* nodejs['npm'] - version of npm to install
USAGE
=====
Include the nodejs recipe to install node on your system based on the default installation method:
* include_recipe "nodejs"
Include the install_from_source recipe to install node from sources:
* include_recipe "nodejs::install_from_source"
Include the install_from_package recipe to install node from packages:
* include_recipe "nodejs::install_from_package"
Include the npm recipe to install npm:
* include_recipe "nodejs::npm"
LICENSE and AUTHOR
==================
Author:: Marius Ducea (marius@promethost.com)
Author:: Nathan L Smith (nlloyds@gmail.com)
Copyright:: 2010-2012, 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.
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.
-53
Ver Arquivo
@@ -1,53 +0,0 @@
= DESCRIPTION:
Installs Node.JS.
= REQUIREMENTS:
== Platform:
Tested on Debian Lenny. Should work fine on Ubuntu, Centos, etc.
== Cookbooks:
Opscode cookbooks (http://github.com/opscode/cookbooks/tree/master)
* build-essential
= ATTRIBUTES:
* nodejs[:version] - release version of node to install
* nodejs[:dir] - location where node will be installed, default /usr/local
* nodejs[:npm] - version of npm to install
= USAGE:
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:
Author:: Marius Ducea (marius@promethost.com)
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.
+6 -5
Ver Arquivo
@@ -2,7 +2,7 @@
# Cookbook Name:: nodejs
# Attributes:: nodejs
#
# Copyright 2010, Promet Solutions
# Copyright 2010-2012, Promet Solutions
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -17,7 +17,8 @@
# limitations under the License.
#
default.nodejs[:version] = "0.6.11"
default.nodejs[:checksum] = "94bbdb2d62645fd2ad5b96e41cfec68abf004fd03fabaaf7d71c48b39013cbd1"
default.nodejs[:dir] = "/usr/local"
default.nodejs[:npm] = "1.1.2"
default['nodejs']['install_method'] = 'source'
default['nodejs']['version'] = '0.6.11'
default['nodejs']['checksum'] = '94bbdb2d62645fd2ad5b96e41cfec68abf004fd03fabaaf7d71c48b39013cbd1'
default['nodejs']['dir'] = '/usr/local'
default['nodejs']['npm'] = '1.1.2'
+12 -6
Ver Arquivo
@@ -2,10 +2,16 @@ maintainer "Promet Solutions"
maintainer_email "marius@promethost.com"
license "Apache 2.0"
description "Installs/Configures nodejs"
long_description IO.read(File.join(File.dirname(__FILE__), 'README.rdoc'))
version "0.6.11"
recipe "nodejs", "Installs Node.JS"
recipe "nodejs::source", "Installs Node.JS from source"
recipe "nodejs::npm", "Installs npm - a package manager for node"
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
version "1.0.0"
depends "build-essential"
recipe "nodejs", "Installs Node.JS based on the default installation method"
recipe "nodejs::install_from_source", "Installs Node.JS from source"
recipe "nodejs::install_from_package", "Installs Node.JS from packages"
recipe "nodejs::npm", "Installs npm from source - a package manager for node"
depends "build-essential"
%w{ debian ubuntu centos redhat }.each do |os|
supports os
end
+3 -35
Ver Arquivo
@@ -1,9 +1,9 @@
#
# Author:: Nathan L Smith (nlloyds@gmail.com)
# Author:: Marius Ducea (marius@promethost.com)
# Cookbook Name:: nodejs
# Recipe:: default
#
# Copyright 2012, Cramer Development, Inc.
# Copyright 2010-2012, Promet Solutions
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,36 +18,4 @@
# limitations under the License.
#
case node[:platform]
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
include_recipe "nodejs::install_from_#{node['nodejs']['install_method']}"
+53
Ver Arquivo
@@ -0,0 +1,53 @@
#
# Author:: Nathan L Smith (nlloyds@gmail.com)
# Cookbook Name:: nodejs
# Recipe:: package
#
# 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.
# 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.
#
case node['platform']
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::install_from_source"
end
@@ -1,9 +1,9 @@
#
# Author:: Marius Ducea (marius@promethost.com)
# Cookbook Name:: nodejs
# Recipe:: default
# Recipe:: source
#
# Copyright 2010, Promet Solutions
# Copyright 2010-2012, Promet Solutions
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -20,23 +20,23 @@
include_recipe "build-essential"
case node[:platform]
when "centos","redhat","fedora"
case node['platform']
when 'centos','redhat','fedora'
package "openssl-devel"
when "debian","ubuntu"
when 'debian','ubuntu'
package "libssl-dev"
end
nodejs_tar = "node-v#{node[:nodejs][:version]}.tar.gz"
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}"
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]
checksum node['nodejs']['checksum']
mode 0644
end
@@ -44,20 +44,20 @@ end
# 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]}"
creates "/usr/local/src/node-v#{node['nodejs']['version']}"
end
bash "compile node.js" do
cwd "/usr/local/src/node-v#{node[:nodejs][:version]}"
cwd "/usr/local/src/node-v#{node['nodejs']['version']}"
code <<-EOH
./configure --prefix=#{node[:nodejs][:dir]} && \
./configure --prefix=#{node['nodejs']['dir']} && \
make
EOH
creates "/usr/local/src/node-v#{node[:nodejs][:version]}/node"
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]}" }
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
+6 -6
Ver Arquivo
@@ -3,7 +3,7 @@
# Cookbook Name:: nodejs
# Recipe:: npm
#
# Copyright 2010, Promet Solutions
# Copyright 2010-2012, Promet Solutions
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
@@ -18,7 +18,7 @@
# limitations under the License.
#
include_recipe "nodejs"
include_recipe "nodejs::install_from_source"
package "curl"
@@ -26,11 +26,11 @@ bash "install npm - package manager for node" do
cwd "/usr/local/src"
user "root"
code <<-EOH
mkdir -p npm-v#{node[:nodejs][:npm]} && \
cd npm-v#{node[:nodejs][:npm]}
curl -L http://registry.npmjs.org/npm/-/npm-#{node[:nodejs][:npm]}.tgz | tar xzf - --strip-components=1 && \
mkdir -p npm-v#{node['nodejs']['npm']} && \
cd npm-v#{node['nodejs']['npm']}
curl -L http://registry.npmjs.org/npm/-/npm-#{node['nodejs']['npm']}.tgz | tar xzf - --strip-components=1 && \
make uninstall dev
EOH
not_if "#{node[:nodejs][:dir]}/bin/npm -v 2>&1 | grep '#{node[:nodejs][:npm]}'"
not_if "#{node['nodejs']['dir']}/bin/npm -v 2>&1 | grep '#{node['nodejs']['npm']}'"
end