2014-07-15 117 views
0

我尝试用安装使用以下命令伪军一个无业游民机上phanomjs(Ubuntu的忠实的64位):安装phantomjs通过对流浪汉傀儡VM不起作用

exec {"npm install -g phantomjs": 
    path => "/usr/bin", 
    require => [ 
     Package["nodejs-legacy"] 
    ] 
} 

这将导致以下错误(从/home/vagrant/npm-debug.log)

... 
2550 info install [email protected] 
2551 info postinstall [email protected] 
2552 verbose about to build /usr/local/lib/node_modules/phantomjs 
2553 info build /usr/local/lib/node_modules/phantomjs 
2554 info install [email protected] 
2555 verbose unsafe-perm in lifecycle false 
2556 error Error: spawn ENOENT 
2556 error  at errnoException (child_process.js:988:11) 
2556 error  at Process.ChildProcess._handle.onexit (child_process.js:779:34) 
2557 error If you need help, you may report this log at: 
2557 error  <http://github.com/isaacs/npm/issues> 
2557 error or email it to: 
2557 error  <[email protected]> 
2558 error System Linux 3.13.0-30-generic 
2559 error command "/usr/bin/nodejs" "/usr/bin/npm" "install" "-g" "phantomjs" "--no-bin-links" 
2560 error cwd /home/vagrant 
2561 error node -v v0.10.25 
2562 error npm -v 1.3.10 
2563 error syscall spawn 
2564 error code ENOENT 
2565 error errno ENOENT 
2566 verbose exit [ 1, true ] 
[email protected]:~$ 

从控制台

enter image description here

相同

这是为什么发生?哪里不对?如果我手动安装包装

vagrant ssh 
sudo npm install -g phantomjs 

它工作正常。

+0

它看起来像你通过SSH使用sudo,但不是在puppet中? – Henry

回答

2

您应该仔细比较成功调用的环境与Puppet使用的环境 - 您指定的path对于大多数任务而言看起来不够充分,因为找不到/bin中的二进制文件。

你可能想获得nodejs module代替,这样就可以使用npm提供商为package型像

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

我遇到类似的问题与Ubuntu服务器14.04与流浪汉/傀儡部署节点+ NPM 。虽然从日志中可以看出情况并非如此,但它可能是您想要尝试的一种方式。

看来在ubuntu上nodejs的软件包命名有了变化。从节点nodejs。下面从我的日志(使用流浪汉,木偶provisionner)

做了一些研究,我决定创建一个符号链接(似乎是最流行的黑客)

sudo ln -s /usr/bin/nodejs /usr/bin/node 

我的木偶site.pp样子这个:

include nodejs 

# Exec path 
Exec { 
    path => [ 
    '/usr/bin', 
    '/bin', 
    'sbin'], 
    logoutput => true, 
} 

# quickfix the bug with ubuntu changing the bin name from node to nodejs 
exec { 'ln -s /usr/bin/nodejs /usr/bin/node':} 

# Configure Docroot 
file { ['/var/www', '/var/www/dev','/prj']: 
ensure => directory, 
owner => 'vagrant', 
group => 'vagrant', 
mode => '775' 
} 

#for global packages 
package { 'grunt-cli': 
    ensure => present, 
    provider => 'npm', 
} 

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

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

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

你应该也包括tar文件路径。下面的代码 为我工作。

exec {"sudo rm -rf ~/tmp;sudo npm install -g phantomjs": 
    path => "/usr/bin:/bin/tar", 
    provider => "shell" 
}