Skip to content

Commit

Permalink
only ensure real npm packages
Browse files Browse the repository at this point in the history
nodesource's `nodejs` packages have `Provides: npm` which means that when
we try to `ensure => absent` the `npm` package, it really removes the
`nodejs` package we want.

by setting `allow_virtual => false` when using nodesource packages,
we ensure that we only remove real packages.

Fixes: 160ea93
  • Loading branch information
evgeni committed Oct 28, 2023
1 parent ff1fd3f commit 6c2c411
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 3 deletions.
12 changes: 10 additions & 2 deletions manifests/install.pp
Original file line number Diff line number Diff line change
Expand Up @@ -45,9 +45,17 @@

# npm
if $nodejs::npm_package_name and $nodejs::npm_package_name != false {
# the nodesource nodejs packages provide "npm" which makes Puppet
# try to uninstall them again
if $nodejs::npm_package_ensure == absent and $nodejs::manage_package_repo == true and $nodejs::repo_class == 'nodejs::repo::nodesource' {
$allow_virtual = false
} else {
$allow_virtual = undef
}
package { $nodejs::npm_package_name:
ensure => $nodejs::npm_package_ensure,
tag => 'nodesource_repo',
ensure => $nodejs::npm_package_ensure,
allow_virtual => $allow_virtual,
tag => 'nodesource_repo',
}
}

Expand Down
2 changes: 1 addition & 1 deletion manifests/params.pp
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
$nodejs_dev_package_name = 'nodejs-devel'
$nodejs_dev_package_ensure = 'absent'
$nodejs_package_name = 'nodejs'
$npm_package_ensure = 'present'
$npm_package_ensure = 'absent'
$npm_package_name = 'npm'
$npm_path = '/usr/bin/npm'
$repo_class = 'nodejs::repo::nodesource'
Expand Down

0 comments on commit 6c2c411

Please sign in to comment.