Git Product home page Git Product logo

voxpupuli / puppet-nodejs Goto Github PK

View Code? Open in Web Editor NEW
114.0 108.0 248.0 780 KB

Puppet module to install nodejs and global npm packages

Home Page: https://forge.puppet.com/puppet/nodejs

License: Apache License 2.0

Ruby 81.72% Puppet 18.09% HTML 0.19%
linux-puppet-module puppet hacktoberfest bsd-puppet-module centos-puppet-module debian-puppet-module freebsd-puppet-module oraclelinux-puppet-module redhat-puppet-module scientific-puppet-module

puppet-nodejs's Introduction

Node.js module for Puppet

Build Status Code Coverage Puppet Forge Puppet Forge - downloads Puppet Forge - endorsement Puppet Forge - scores

Table of Contents

  1. Overview
  2. Setup - The basics of getting started with nodejs
  3. Usage
  4. Npm packages
  5. Limitations - OS compatibility, etc.
  6. Development

Overview

The nodejs module installs the Node.js package, (global) npm package provider and configures global npm configuration settings. A defined type nodejs::npm is used for the local installation of npm packages.

By default this module installs packages from the NodeSource repository on Debian and RedHat platforms. The NodeSource Node.js package includes the npm binary, which makes a separate npm package unnecessary.

On SUSE, ArchLinux, FreeBSD, OpenBSD and Gentoo, native packages are used. On Darwin, the MacPorts package is used. On Windows the packages are installed via Chocolatey.

Setup

What nodejs affects

  • the Node.js package
  • the npm package (if it exists as a separate package)
  • the global npmrc file ($PREFIX/etc/npmrc)
  • globally installed npm packages
  • local npm packages installed in user-specified directories

Beginning with nodejs

To install Node.js and npm (using the NodeSource repository if possible):

class { 'nodejs': }

The default version installed is currently 20.x.

If you wish to install a Node.js 21.x release from the NodeSource repository rather than 20.x on Debian/RHEL platforms:

class { 'nodejs':
  repo_version => '21',
}

See the repo_version parameter entry below for possible values.

Usage

When a separate npm package exists (natively or via EPEL) the Node.js development package also needs to be installed as it is a dependency for npm.

Install Node.js and npm using the native packages provided by the distribution:

class { 'nodejs':
  manage_package_repo       => false,
  nodejs_dev_package_ensure => installed,
  npm_package_ensure        => installed,
}

Install Node.js and npm using the packages from EPEL:

class { 'nodejs':
  nodejs_dev_package_ensure => installed,
  npm_package_ensure        => installed,
  repo_class                => 'epel',
}

Upgrades

The parameter nodejs_package_ensure defaults to installed. Changing the repo_version will not result in a new version being installed. Changing the nodejs_package_ensure parameter should provide the desired effect.

For example:

# Upgrade from nodejs 5.x to 6.x
class { 'nodejs':
  repo_version          => '6',
  nodejs_package_ensure => '6.12.2',
}

Forcing the installation of NodeSource packages over native packages

When the native package version and NodeSource version are the same, you may need to use repo_pin or repo_priority (depending on your operating system). This ensures that the version in the NodeSource repository takes precedence when Puppet invokes Apt/Yum.

npm packages

Two types of npm packages are supported:

  • npm global packages are supported via the npm provider for the puppet package type.
  • npm local packages are supported via the Puppet defined type nodejs::npm.

For more information regarding global vs local installation see the nodejs blog

npm global packages

The npm package provider is an extension of the Puppet package type which supports versionable and upgradeable. The package provider only handles global installation:

For example:

package { 'express':
  ensure   => installed,
  provider => 'npm',
}

package { 'mime':
  ensure   => '1.2.4',
  provider => 'npm',
}

npm local packages

nodejs::npm is used for the local installation of npm packages. It attempts to support all of the npm install <package> combinations shown in the npm install docs except version ranges. The title simply must be a unique, arbitrary value.

  • If using packages directly off the npm registry, the package parameter is the name of the package as published on the npm registry.
  • If using scopes, the package parameter needs to be specified as '@scope_name/package_name'.
  • If using a local tarball path, remote tarball URL, local folder, git remote URL or GitHubUser/GitRepo as the source of the package, this location needs to be specified as the source parameter and the package parameter just needs to be a unique, descriptive name for the package that is being installed.
  • If using tags, the tag can be specified with the ensure parameter, and the package parameter needs to be match the name of the package in the npm registry.
  • Package versions are specified with the ensure parameter, which defaults to installed.
  • Install options and uninstall options are also supported, and need to be specified as an array.
  • The user parameter is provided should you wish to run npm install or npm rm as a specific user.
  • If you want to use a package.json supplied by a module to install dependencies (e.g. if you have a NodeJS server app), set the parameter use_package_json to true. The package name is then only used for the resource name. source parameter is ignored.

Examples:

Install the express package published on the npm registry to /opt/packages:

nodejs::npm { 'express from the npm registry':
  ensure  => 'present',
  package => 'express',
  target  => '/opt/packages',
}

or the lazy way:

nodejs::npm { 'express':
  target  => '/opt/packages',
}

Install the express package as user foo:

nodejs::npm { 'express install as user foo':
  ensure  => 'present',
  package => 'express',
  target  => '/opt/packages',
  user    => 'foo',
}

Install a specific version of express to /opt/packages:

nodejs::npm { 'express version 2.5.9 from the npm registry':
  ensure  => '2.5.9',
  package => 'express',
  target  => '/opt/packages',
}

Install the latest version of express to /opt/packages:

nodejs::npm { 'express latest from the npm registry':
  ensure  => 'latest',
  package => 'express',
  target  => '/opt/packages',
}

Install express from GitHub to /opt/packages:

nodejs::npm { 'express from GitHub':
  ensure  => 'present',
  package => 'express',
  source  => 'strongloop/express',
  target  => '/opt/packages',
}

Install express from a remote git repository to /opt/packages:

nodejs::npm { 'express from a git repository':
  ensure  => 'present',
  package => 'express',
  source  => 'git+https://[email protected]/strongloop/expressjs.git',
  target  => '/opt/packages',
}

Install express from a remote tarball to /opt/packages:

nodejs::npm { 'express from a remote tarball':
  ensure  => 'present',
  package => 'express',
  source  => 'https://server.domain/express.tgz',
  target  => '/opt/packages',
}

Install tagged packages:

nodejs::npm { 'my beta tagged package':
  ensure  => 'beta',
  package => 'mypackage',
  target  => '/opt/packages',
}

Install a package from the registry associated with a specific scope:

nodejs::npm { 'package_name from @scope_name':
  ensure  => 'present',
  package => '@scope_name/package_name',
  target  => '/opt/packages',
}

Install express from a local tarball to /opt/packages:

nodejs::npm { 'express from a local tarball':
  ensure  => 'present',
  package => 'express',
  source  => '/local/repository/npm_packages/express.tgz',
  target  => '/opt/packages',
}

Install express with --save-dev --no-bin-links passed to npm install:

nodejs::npm { 'express with options':
  ensure          => 'present',
  package         => 'express',
  install_options => ['--save-dev', '--no-bin-links'],
  target          => '/opt/packages',
}

Install dependencies from package.json:

nodejs::npm { 'serverapp':
  ensure           => 'present',
  target           => '/opt/serverapp',
  use_package_json => true,
}

Uninstall any versions of express in /opt/packages regardless of source:

nodejs::npm { 'remove all express packages':
  ensure  => 'absent',
  package => 'express',
  target  => '/opt/packages',
}

Uninstall dependencies from package.json:

nodejs::npm { 'serverapp':
  ensure           => 'absent',
  target           => '/opt/serverapp',
  use_package_json => true,
}

nodejs::npm::global_config_entry

nodejs::npm::global_config_entry can be used to set/remove global npm configuration settings.

Note that when specifying a URL, such as registry, NPM will add a trailing slash when it stores the config. You must specify a trailing slash in your URL or the code will not be idempotent.

Examples:

nodejs::npm::global_config_entry { 'proxy':
  ensure => 'present',
  value  => 'http://proxy.company.com:8080/',
}
nodejs::npm::global_config_entry { 'dev':
  ensure => 'present',
  value  => 'true',
}

Delete the key from all configuration files:

nodejs::npm::global_config_entry { 'color':
  ensure => 'absent',
}

If a global_config_entry of proxy or https-proxy is specified, this will be applied before the local installation of npm packages using nodejs::npm.

Limitations

See metadata.json for supported operating systems.

Module dependencies

This modules uses puppetlabs-apt for the management of the NodeSource repository. If using an operating system of the Debian-based family, you will need to ensure that puppetlabs-apt version 4.4.0 or above is installed.

If using CentOS/RHEL and you wish to install Node.js from EPEL rather than from the NodeSource repository, you will need to ensure puppet-epel is installed and is applied before this module.

If using Gentoo, you will need to ensure gentoo-portage is installed.

If using Windows, you will need to ensure that puppetlabs-chocolatey is installed.

nodejs::npm has the ability to fetch npm packages from Git sources. If you wish to use this functionality, Git needs to be installed and be in the PATH.

Development

See CONTRIBUTING

puppet-nodejs's People

Contributors

alexjfisher avatar bastelfreak avatar cmurphy avatar dan33l avatar dhoppe avatar ekohl avatar evgeni avatar fnoop avatar ghoneycutt avatar hunner avatar igalic avatar imriz avatar jlindquist-godaddy avatar juniorsysadmin avatar jyaworski avatar kenyon avatar mmoll avatar nanliu avatar nibalizer avatar poil avatar rnelson0 avatar siwilkins avatar smortex avatar tphoney avatar tragiccode avatar tsde avatar wiebe avatar wolfspyre avatar wyardley avatar zilchms avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

puppet-nodejs's Issues

Nodejs package is installed before apt is updated

OS: Ubuntu 14.04.2 LTS
Puppet version: 3.7.2-1puppetlabs1
Nodejs module version: 0.8.0

Puppet code snippet:

  $npm_packages = [ 'bower','grunt','grunt-cli', ]
  package { $npm_packages:
    ensure   => present,
    provider => 'npm',
  }
  class { 'nodejs':
    repo_url_suffix       => 'node_0.12',
    nodejs_package_ensure => '0.12.7-1nodesource1~trusty1',
    before                => Package[$npm_packages],
  }

Puppet run output:

Info: Retrieving plugin
Info: Caching catalog for REMOVED
Info: Applying configuration version '1443784901'
Notice: /Stage[main]/Nodejs::Repo::Nodesource/Nodejs::Repo::Nodesource::Apt/Apt::Source[nodesource]/Apt::Setting[list-nodesource]/File[/etc/apt/sources.list.d/nodesource.list]/ensure: created
Info: /Stage[main]/Nodejs::Repo::Nodesource/Nodejs::Repo::Nodesource::Apt/Apt::Source[nodesource]/Apt::Setting[list-nodesource]/File[/etc/apt/sources.list.d/nodesource.list]: Scheduling refresh of Class[Apt::Update]
Error: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install nodejs=0.12.7-1nodesource1~trusty1' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 192 not upgraded.
E: Can't find a source to download version '0.12.7-1nodesource1~trusty1' of 'nodejs:amd64'
Wrapped exception:
Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install nodejs=0.12.7-1nodesource1~trusty1' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 192 not upgraded.
E: Can't find a source to download version '0.12.7-1nodesource1~trusty1' of 'nodejs:amd64'
Error: /Stage[main]/Nodejs::Install/Package[nodejs]/ensure: change from absent to 0.12.7-1nodesource1~trusty1 failed: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold --force-yes install nodejs=0.12.7-1nodesource1~trusty1' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
  nodejs
0 upgraded, 1 newly installed, 0 to remove and 192 not upgraded.
E: Can't find a source to download version '0.12.7-1nodesource1~trusty1' of 'nodejs:amd64'
Notice: /Stage[main]/Nodejs/Anchor[::nodejs::end]: Dependency Package[nodejs] has failures: true
Warning: /Stage[main]/Nodejs/Anchor[::nodejs::end]: Skipping because of failed dependencies
Notice: /Package[bower]: Dependency Package[nodejs] has failures: true
Warning: /Package[bower]: Skipping because of failed dependencies
Notice: /Package[grunt-cli]: Dependency Package[nodejs] has failures: true
Warning: /Package[grunt-cli]: Skipping because of failed dependencies
Notice: /Package[grunt]: Dependency Package[nodejs] has failures: true
Warning: /Package[grunt]: Skipping because of failed dependencies
Info: Class[Apt::Update]: Scheduling refresh of Exec[apt_update]
Notice: /Stage[main]/Apt::Update/Exec[apt_update]: Triggered 'refresh' from 1 events
Notice: Finished catalog run in 15.63 seconds

The next Puppet run installs node successfully.

Possibly missing dependency on puppetlabs-apt

On a fresh puppet install, the following manifest will not compile,

class {
    'nodejs':
        repo_url_suffix        => 'node_0.12',
        legacy_debian_symlinks => true;
}

Error is

Error: Evaluation Error: Error while evaluating a Function Call, Could not find class ::apt for node.example.net at /home/ff/.puppetlabs/etc/code/modules/nodejs/manifests/repo/nodesource/apt.pp:11:3 on node node.example.net

Puppet 4.2.3

new release to fix Nodesource 4.x on CentOS 6.7

I'm trying to use nodesource 4.x on CentOS 6.7, which in the version on the forge throws an error. This was fixed in the master branch. Is it possible to get a minor version release so that the fix is available on the forge?

Thanks

undefined method `ref' for nil:NilClass on v1.1.0

Overview

Whenever I attempt to use the nodejs module in the following way:

    class {
        'nodejs':
            repo_url_suffix        => 'node_0.12',
            legacy_debian_symlinks => true;
    }

The error "undefined method `ref' for nil:NilClass" comes up. This only happens when including this module, I have attempted just about everything given that I cannot get a decent stack trace that actually tells me boo of what is happening. Basically the puppetmaster refuses to supply it because of this.

Modules

/etc/puppet/environments/production/modules
โ”œโ”€โ”€ puppet-nodejs (v1.1.0)
โ”œโ”€โ”€ puppetlabs-apache (v1.0.1)
โ”œโ”€โ”€ puppetlabs-apt (v2.1.0)
โ”œโ”€โ”€ puppetlabs-concat (v1.2.3)
โ”œโ”€โ”€ puppetlabs-firewall (v1.6.0)
โ”œโ”€โ”€ puppetlabs-mysql (v2.2.3)
โ”œโ”€โ”€ puppetlabs-ntp (v4.0.0)
โ”œโ”€โ”€ puppetlabs-stdlib (v4.6.0)
โ”œโ”€โ”€ saz-timezone (v3.0.1)

Environment

DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=14.04
DISTRIB_CODENAME=trusty
DISTRIB_DESCRIPTION="Ubuntu 14.04.2 LTS"

Puppet version: 3.8.1
Puppetmaster version: 3.8.1

installing nodejs 4 leads to npm being installed as well, which fails the nodejs install

  class { 'nodejs':
    repo_url_suffix           => 'node_4.x',
    npm_package_ensure        => 'latest',
  }

leads to:

Error: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 2.1.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
Error: /Stage[main]/Nodejs::Install/Package[npm]/ensure: change from purged to latest failed: Could not update: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 2.1.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

This is on ubuntu trusty tahr.

Module v2.0.0 error on CentOS 6.6

After upgrading my environment to use v2.0.0, a node on CentOS 6.6 receives the following errors:

Could not autoload puppet/provider/package/npm: /var/lib/puppet/lib/puppet/provider/package/npm.rb:3: syntax error, unexpected ':', expecting $end ...package).provide :npm, parent: Puppet::Provider::Package do ^

Could not retrieve local facts: Could not autoload puppet/provider/package/npm: /var/lib/puppet/lib/puppet/provider/package/npm.rb:3: syntax error, unexpected ':', expecting $end ...package).provide :npm, parent: Puppet::Provider::Package do ^

Failed to apply catalog: Could not retrieve local facts: Could not autoload puppet/provider/package/npm: /var/lib/puppet/lib/puppet/provider/package/npm.rb:3: syntax error, unexpected ':', expecting $end ...package).provide :npm, parent: Puppet::Provider::Package do ^

Another node in my environment is on CentOS 7.2 and didn't receive this error.

$repo_url_suffix ignores 5.x and 4.x (or others)

If the parameter $repo_url_suffix is provided with 5.x or 4.x the module will ignore it and default to 0.10.x this is due the fact, that in the file "manifests/repo/nodesource.pp" the parameter $source_baseurl is hardcoded to "https://rpm.nodesource.com/pub/". On this route only Node versions up to 0.10.x are provided.

For NodeJs version 5.x the repo ($source_baseurl) should be: "https://rpm.nodesource.com/pub_5.x/" (not just /pub/).
For NodeJs version 4.x the repo ($source_baseurl) should be: "https://rpm.nodesource.com/pub_4.x/" (also not just /pub/).

undefined method `ref' for nil:NilClass

Running puppet agent --test against a puppetmaster with puppetlabs-nodejs v0.8.0 results in the error mentioned. 0.7.1 does not have this problem. Puppet 3.4.3 on master and agent. The following modules installed.

puppet module list
/etc/puppet/modules
โ”œโ”€โ”€ maestrodev-ssh_keygen (v1.3.1)
โ”œโ”€โ”€ puppetlabs-apt (v2.2.0)
โ”œโ”€โ”€ puppetlabs-concat (v1.2.5)
โ”œโ”€โ”€ puppetlabs-firewall (v1.7.1)
โ”œโ”€โ”€ puppetlabs-nodejs (v0.8.0)
โ”œโ”€โ”€ puppetlabs-stdlib (v4.9.0)
โ””โ”€โ”€ saz-ssh (v2.8.1)
puppet agent --test
Error: Could not retrieve catalog from remote server: Error 400 on SERVER: undefined method `ref' for nil:NilClass on node `nodename`

Use a custom type within the nodejs::npm defined type

Currently the npm defined type uses some quite ugly blocks of code. Quite apart from the fact that this could put people off eating their dinner (which is probably quite delicious), things could be a simpler and more robust if a Custom Type was used instead, with nodejs::npm simply making calls to this custom type. Ideally most of code that invokes npm should be same in both the provider and in the defined type with the exception of one or two attributes.

/usr/bin/npm doesn't exist when setting a nodejs::npm::global_config_entry

On a fresh install of an Ubuntu v14.04 node I come across an issue where Puppet fails to set the global_config_entry because /usr/bin/npm doesn't exist.

Here's my manifest:

class ta_linux::ta_nodejs(                                           
  $npm_packages = {},                                                
) {                                                                  
  validate_hash($npm_packages)                                       

  $npm_package_defaults = {                                          
    'require' => Nodejs::Npm::Global_config_entry['strict-ssl'],     
    'target'  => '/usr/lib',                                         
  }                                                                  

  class { '::nodejs':                                                
    manage_package_repo       => false,                              
    nodejs_dev_package_ensure => present,                            
    npm_package_ensure        => present,                            
  }->                                                                

  nodejs::npm::global_config_entry { 'strict-ssl':                   
    ensure  => present,                                              
    value   => false,                                                
  }                                                                  

  create_resources(nodejs::npm, $npm_packages, $npm_package_defaults)
}

When I run my acceptance test for this manifest, it works as expected.

But when I run my acceptance test for another class that loads this ta_linux::ta_nodejs class, it results in this error:

Error: /bin/sh: /usr/bin/npm: No such file or directory

Error: /Stage[main]/Ta_linux::Ta_nodejs/Nodejs::Npm::Global_config_entry[strict-ssl]/Exec[npm_config present strict-ssl]/returns: change from notrun to 0 failed: /bin/sh: /usr/bin/npm: No such file or directory

I have the require relationship between the nodejs class and the global_config_entry define, but that doesn't enforce the installation of npm before trying to set that configuration option.

Obviously, this is pretty obscure and difficult to reproduce (outside of my own environment), but if anyone has any insight here, I'm all ears.

Thanks

Enforce that npm is installed with collectors before using it

A package with provider => npm may run before npm is installed and fail

Not sure if it is ok to add it in the module, but at least should be in the README

if $::operatingsystem != 'ubuntu' {
Package['npm'] -> Package <| provider == npm |>
} else {
Package['nodejs'] -> Package <| provider == npm |>
}

An nodejs::npm anchor would also simplify the rule above

Does it look reasonable?

provider broken on Puppet v3.8.6 w/ Ruby 1.8.7

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not autoload puppet/type/package: Could not autoload puppet/provider/package/npm: /etc/puppet/environments/development/modules/nodejs/lib/puppet/provider/package/npm.rb:3: syntax error, unexpected ':', expecting $end ...package).provide :npm, parent: Puppet::Provider::Package do

seems this was changed in ce1460c

Fix RSpec tests so that they run successfully under docker containers

The RSpec tests can't currently be run on TravisCI with sudo: false as sadly one of the provider tests fail when this is set. Given how slow tests now run on non-docker TravisCI instances, fixing this would without doubt result in an immediate 50% increase in general health and well-being for any PR contributor.

Upgrade from 4.x to 5.x, Downgrade from 5.x to 4.x

Just changing the repo_url_suffix from node_4.x to node_5.x and set ensure to present or latest doesn't do any changes.

Version 4.x will still be installed, since it fulfills the present requirement.

A way to force a new version is to set a certain version.
For an upgrade:

class { 'nodejs':
  manage_package_repo => true,
  repo_url_suffix => 'node_5.x',
  nodejs_package_ensure => '5.4.0-1nodesource1~wheezy1' # or latest
}

latest does not work for a downgrade though, so for a downgrade you have to do something like this:

class { 'nodejs':
  manage_package_repo => true,
  repo_url_suffix => 'node_4.x',
  nodejs_package_ensure => '4.2.4-1nodesource1~wheezy1'
}

Sadly, the apt.pp file only updates the sources if the nodejs_package_ensure is set to present

11:  if ($ensure == 'present') {

Maybe I got it all wrong and there's another way to upgrade/downgrade major versions. Otherwise I'd write a PR.

So I propose a change

11:   if ($ensure != 'absent') {

Puppetforge nodejs is not the same version as on github

If i download the puppetforge puppet/nodejs via the tar.gz download, i get a version which says 1.2.0 in the changelog.

But if i check the file "manifests/init.pp" it is not the same file as in this github repository.

If i download the old(?) puppetlabs/nodejs version which says 0.8.0 in the changelog, the file "manifests/init.pp" is the same as the 1.2.0 version of puppet/nodejs which i downloaded previously.

In other words: puppet/nodejs as version 1.2.0 and puppetlabs/nodejs as version 0.8.0 are (nearly?) the same files when downloaded via tar.gz (maybe also via puppet module).

Is there a problem in your CI or whatever you use to distribute the module?

EL packages are ancient and from unofficial repo

The EL packages used here are from an unofficial, no-longer-maintained repo, and are of NodeJS 0.6.x - the current version is 0.10.20 and there's been considerable change (specifically feature additions and optimizations) since then.

I have EL6 NodeJS 0.9.5 packages that work, and if similar isn't in EPEL yet, I can try to get them there (I was working with a maintainer for a while...). On EL5, however, it doesn't appear that current NodeJS will build at all.

node.js manifests/params.pp & manifests/init.pp should support Scientific Linux

I am using Scientific Linux 6.4, which is a derivative of Red Hat Enterprise Linux and is similar to CentOS. SL is used extensively at research labs and higher-education institutions.

I was attempting to install Puppet Labs Razor onto a Scientific Linux 6.4 box, and the install failed with the following error. I posted the error to the puppet-razor mailing-list, and they recommended that I file a bug here [1].

root@sl6:~ # puppet apply /etc/puppet/modules/razor/tests/init.pp
Class nodejs does not support Scientific at /etc/puppet/modules/nodejs/manifests/params.pp:55 on node sl6.example.gov

It appears that node.js does not support Scientific Linux:

root@sl6:~ # puppet apply /etc/puppet/modules/nodejs/tests/init.pp
Class nodejs does not support Scientific at /etc/puppet/modules/nodejs/manifests/params.pp:55 on node sl6.example.gov

Please update nodejs to support Scientific Linux.

[1] https://groups.google.com/forum/#!topic/puppet-razor/bJIz1Fs7r7k

Support nodejs-legacy package for Debian

I experienced a problem today when provisioning a Debian Wheezy VM. Node.js and NPM would both install, but the two modules I used with them, buster and sinon, did not. Invocations of either binary would yield an error. It seemed that both relied on the node binary being available, which is not the case with the nodejs package in Debian. However, when the Debian team decided to rename to package, it added an additional package. That package is nodejs-legacy0. The package provides both the node and nodejs binaries, thereby providing both options to modules and developers alike.

Always installs node '0.10.42', but need '5.x', and npm

I have the following puppet modules:

$ sudo puppet module install puppetlabs-vcsrepo --version 1.3.0
$ sudo puppet module install treydock-gpg_key
$ sudo puppet module install puppetlabs-stdlib --version 4.6.0
$ sudo puppet module install maestrodev-wget --version 1.7.1
$ sudo puppet module install stahnma-epel --version 1.2.2
$ sudo puppet module install puppet-nodejs --version 1.3.0
$ sudo puppet module install puppetlabs-mysql --version 3.6.2
$ sudo puppet module install puppetlabs-concat --version 2.1.0
$ sudo puppet module install puppetlabs-apache --version 1.8.1
$ sudo puppet module install crayfishx-firewalld --version 2.1.0
$ sudo puppet module install willdurand-composer --version 1.1.1
$ sudo puppet module install previousnext-drush --version 0.1.1

Then, I have configure_compilers.pp:

...
## install nodejs dependencies
class install_nodejs_dependencies {
    include stdlib
    include wget
}

## install nodejs: to use npm
class install_nodejs {
    ## set dependency
    require install_nodejs_dependencies

    class { 'nodejs':
        repo_url_suffix => '5.x',
    }
}

## install necessary packages
class install_packages {
    ## set dependency
    require install_nodejs_dependencies
    require install_nodejs

    ## variables
    $packages_general  = ['inotify-tools', 'ruby']
    $packages_npm      = ['uglify-js', 'node-sass', 'imagemin']

    ## packages: install general packages (apt, yum)
    package { $packages_general:
        ensure => 'installed',
        before => Package[$packages_npm],
    }

    ## packages: install general packages (npm)
    package {$packages_npm:
        ensure => 'installed',
        provider => 'npm',
    }
}
...
## constructor
class constructor {
    contain install_nodejs_dependencies
    contain install_nodejs
...
}
include constructor

When, I do puppet apply configure_compilers, I get the following error traceback:

[root@centos7x manifests]# puppet apply configure_compilers.pp
Notice: Compiled catalog for ****.****.****.****.*** in environment production in 1.56 seconds
Notice: /Stage[main]/Nodejs::Install/Package[nodejs]/ensure: created
Error: Command npm is missing
Error: /Stage[main]/Install_packages/Package[uglify-js]/ensure: change from absent to present failed: Command npm is missing
Error: Command npm is missing
Error: /Stage[main]/Install_packages/Package[node-sass]/ensure: change from absent to present failed: Command npm is missing
Error: Command npm is missing
Error: /Stage[main]/Install_packages/Package[imagemin]/ensure: change from absent to present failed: Command npm is missing
...
[root@centos7x manifests]# node -v
v0.10.42
[root@centos7x manifests]# puppet -V
4.3.2

nodejs/manifests/params.pp installs /etc/yum.repos.d/nodejs-stable.repo which doesn't work with Scientific Linux 6.4

nodejs/tests/init.pp fails on my Scientific Linux 6.4 boxes with the following error:

root@sl6:~ # puppet apply /etc/puppet/modules/nodejs/tests/init.pp
Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install nodejs-compat-symlinks' returned 1: Error: Cannot retrieve repository metadata (repomd.xml) for repository: nodejs-stable. Please verify its path and try again

Error: /Stage[main]/Nodejs/Package[nodejs]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install nodejs-compat-symlinks' returned 1: Error: Cannot retrieve repository metadata (repomd.xml) for repository: nodejs-stable. Please verify its path and try again

Error: Execution of '/usr/bin/yum -d 0 -e 0 -y install npm' returned 1: Error: Cannot retrieve repository metadata (repomd.xml) for repository: nodejs-stable. Please verify its path and try again

Error: /Stage[main]/Nodejs/Package[npm]/ensure: change from absent to present failed: Execution of '/usr/bin/yum -d 0 -e 0 -y install npm' returned 1: Error: Cannot retrieve repository metadata (repomd.xml) for repository: nodejs-stable. Please verify its path and try again

This issue arises from the following code in nodejs/manifests/params.pp:

  $baseurl  = 'http://patches.fedorapeople.org/oldnode/stable/el$releasever/$basearch/'

On RHEL & CentOS, $releasever will return a single digit like '6', and thus the repo above will point to something like http://patches.fedorapeople.org/oldnode/stable/el6/x86_64/ .

However, on Scientific Linux, $releasever is often something like 6x or 6.4:

root@sl6:~ # python -c 'import yum, pprint; yb = yum.YumBase(); pprint.pprint(yb.conf.yumvar, width=1)'
Loaded plugins: fastestmirror, priorities
{'arch': 'ia32e',
 'basearch': 'x86_64',
 'releasever': '6.4',
 'uuid': 'a7d2547c-c95c-4577-88e8-eb0b18c89101'}

Therefore, the URL will turn out to be something like http://patches.fedorapeople.org/oldnode/stable/el6.4/x86_64/, which doesn't exist.

For now, a workaround is to manually modify /etc/puppet/modules/nodejs/manifests/params.pp & replace $releasever with '6', but this only works for a limited number of cases.

I am still familiarizing myself with Puppet and I am unsure how to fix this. However, the commit to puppet-yum (see link [1]) might have a solution. He make use of the $yum::osver & $common::osver variables:

-        baseurl => 'http://yum.puppetlabs.com/el/$releasever/dependencies/$basearch',
+        baseurl => "http://yum.puppetlabs.com/el/$common::osver/dependencies/\$basearch", 

[1] example42/puppet-yum@764ee1b .

Running `npm install` in a package dir with no arguments

I would like to run npm install in a package dir with no arguments in order to install the dependencies of this package. I do not want to deploy the package dir itself with npm. This corresponds to the first form of invocation of npm in the docs. I believe that this is currently not possible, right? I suggest to add this functionality though...

installing from git

when installing a module from git

  nodejs::npm { 'node-wimoto':
    ensure  => 'present',
    package => 'node-wimoto',
    source  => 'onzyone/node-wimoto',
    target  => '/opt/packages',
  }

source ends up in the grep as source is no longer registry

  if $source != 'registry' {
    $install_check_package_string = $source
    $package_string = $source

this fails and re installs the module over and over again as it is looking for

Debug: Exec[npm_install_node-wimoto](provider=posix): Executing check '/usr/bin/npm ls --long --parseable | grep "/opt/packages/node_modules/onzyone/node-wimoto"'
Debug: Executing: '/usr/bin/npm ls --long --parseable | grep "/opt/packages/node_modules/onzyone/node-wimoto"'

and not

grep "/opt/packages/node_modules/node-wimoto"'

Add a dependency for treydock/gpg

On Redhat systems, the nodejs::repo::nodesource::yum class uses a custom gpg_key resource type. By default, this module is not specified in the dependency list. It appears to be a hard dependency for yum based package managers.

Expand rspec tests that were modified for Rubocop

In #190, some rspec tests were reformatted to work with Rubocop in a not-so-awesome manner. If we are interested in going back to the previous format, here's the diff required:

$ git diff
diff --git a/spec/defines/nodejs_npm_spec.rb b/spec/defines/nodejs_npm_spec.rb
index 88a93d2..b4e27f2 100644
--- a/spec/defines/nodejs_npm_spec.rb
+++ b/spec/defines/nodejs_npm_spec.rb
@@ -30,8 +30,10 @@ describe 'nodejs::npm', :type => :define do
       end

       it 'the npm install command should run under user foo' do
-        is_expected.to contain_exec('npm_install_express').with('command' => '/usr/bin/npm install express ',
-                                                                'user'    => 'foo',)
+        is_expected.to contain_exec('npm_install_express').with(
+          'command' => '/usr/bin/npm install express ',
+          'user'    => 'foo',
+         )
       end
     end

Fix deprecated use of should syntax in provider RSpec test

One of the provider tests uses a deprecated should form in its RSpec test. This should be replaced with the supported equivalent.

Using `should` from rspec-expectations' old `:should` syntax without explicitly enabling the syntax is deprecated.
Use the new `:expect` syntax or explicitly enable `:should` instead.
Called from ../puppet-nodejs/spec/unit/puppet/provider/package/npm_spec.rb:18:in `block (2 levels) in it_should_respond_to'.

Use npm to install a specific npm version

Hey all,

I recently downloaded the nodejs module and I think it's really well done. I have run into a small feature request though. I'm using Ubuntu and the NodeSource packages, which (I believe) puts the npm binary in the same package as nodejs, instead of having 2 separate packages like the base Ubuntu packages.

I would like to be able to use npm to upgrade npm to a specific version. When I set $npm_package_ensure to be a specific version it errors out though because it's trying to install that version via the default provider instead of via the npm provider.

I'd love to add another variable that would allow you to override the provider for npm (something like $npm_provider). Are there any downsides to doing this? Is there a better way to get a specific version of npm using npm? I'd love any feedback that the community would like to share.

Thanx!

Can't ensure latest if package is not instatlled

Using the nodejs::npm type I have the following experience. When setting ensure => latest on a package that is not installed, I get the following error:

package { 'express':
  ensure   => 'latest',
  provider => 'npm',
}
Error: Could not update: Got nil value for ensure
Error: /Stage[main]/Main/Package[express]/ensure: change from absent to latest failed: Could not update: Got nil value for ensure

Changing to:

package { 'express':
  ensure   => 'present',
  provider => 'npm',
}

I can then successfully install it. Then changing it to latest and running again works.

Question: uninstall nodejs entirely

I've installed nodejs via:

...
    class { 'nodejs':
        repo_url_suffix => '5.x',
    }
...

But, I'm curious: if I no longer need nodejs after provisioning, and want to remove nodejs entirely, is there an appropriate method to remove it? For example willdurand/puppet-nodejs has the following implementation:

::nodejs::install { 'node-v5.4':
  ensure  => absent,
  version => 'v5.4.1',
}

Ubuntu support? Or npm install failure

Hi,

Apologies - this might be due to me being a puppet noob...

I have this module installed and it seems to install node/npm ok - I now have the latest versions.

However it also seems to give an error:

# puppet nodejs.pp

err: /Stage[main]/Nodejs/Package[npm]/ensure: change from purged to present failed: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs (>= 0.6.19~dfsg1-3) but it is not going to be installed
       Depends: nodejs-dev
       Depends: node-node-uuid but it is not going to be installed
       Depends: node-request but it is not going to be installed
       Depends: node-mkdirp but it is not going to be installed
       Depends: node-minimatch but it is not going to be installed
       Depends: node-semver but it is not going to be installed
       Depends: node-ini but it is not going to be installed
       Depends: node-graceful-fs but it is not going to be installed
       Depends: node-abbrev but it is not going to be installed
       Depends: node-nopt but it is not going to be installed
       Depends: node-fstream but it is not going to be installed
       Depends: node-rimraf but it is not going to be installed
       Depends: node-tar but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

notice: Finished catalog run in 0.82 seconds

My nodejs.pp file contains

# install puppetlabs/nodejs
# puppet module install puppetlabs/nodejs

#include nodejs

#apt::ppa { "ppa:chris-lea/node.js": }

class { 'nodejs':
#  require => Apt::Ppa["ppa:chris-lea/node.js"]
}

#package { 'coffee-script':
#  ensure => latest,
#  provider => 'npm',
#}

#package { 'forever':
#  ensure => latest,
#  provider => 'npm',
#}

Is this a know issue? Am I doing something wrong?

Thanks in advance for any pointers.

Cheers,
Chris

NPN Packages Global install on centos

I have copied a pasted the code from the readme file:

package { 'express':
ensure => present,
provider => 'npm',
}

and I keep getting the following error:
Error: /Stage[main]//Package[express]: Provider npm is not functional on this host

It appears to install on the machine because when I get in I can do npm install or npm -v

I am using:
Node: 0.10.22
Npm: 1.3.14
Centos 6.4

Any ideas of whats going on? Am I missing something that is not in the readme?

Unmet dependencies installing node and npm on Debian 7 (Wheezy)

manifests:

class {'nodejs':
    manage_repo => true,
}
Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install nodejs' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nodejs : Depends: libc6 (>= 2.14) but 2.13-38 is to be installed
          Depends: libv8-3.14.5 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Error: /Stage[main]/Nodejs/Package[nodejs]/ensure: change from purged to present failed: Execution
of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install nodejs' returned 100: Reading
 package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 nodejs : Depends: libc6 (>= 2.14) but 2.13-38 is to be installed
          Depends: libv8-3.14.5 but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Error: Execution of '/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 2.1.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Error: /Stage[main]/Nodejs/Package[npm]/ensure: change from purged to present failed: Execution of
'/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install npm' returned 100: Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 2.1.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

Nodejs version under ubuntu

Guys I have a question:

Is there a way to disable node.js-devel repo for Ubuntu? Now when I install nodejs through puppet with:

class { "nodejs":
version => "latest",
manage_repo => true,
}

I get newest version of nodejs from node.js-devel but I want to use stable version.

I don't understand why you added both repositories.

Best regards.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.