首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用zypper命令安装多个软件包-包名连接在一起

使用zypper命令安装多个软件包-包名连接在一起
EN

Stack Overflow用户
提问于 2014-12-16 09:19:49
回答 2查看 1.1K关注 0票数 0

我想要安装多个软件包,使用命令zypper与木偶。我创建了自己的存储库,并将一些bacula包倾倒在那里。我的舱单如下:

代码语言:javascript
复制
#cat manifests/init.pp 
class bacula()
{
$baculas = [ "bacula-dir", "bacula-fd", "bacula-bat", "bacula-bconsole", "bacula-  catalog-postgresql", "bacula-libs", "bacula-postgresql", "bacula-sd", "bacula-sql", "bacula-tools", "bacula-updatedb" ]

package { $baculas: ensure => "installed" }

exec { 'install_bacula':
provider => shell,
path => [ "/bin/", "/usr/bin", "/sbin" ],
command => "/usr/bin/zypper -n in $baculas;",
logoutput => on_failure,
}
}

当软件包安装良好时,输出中会出现错误。看起来包的名称被连在一起了,而木偶返回了一个错误,因为找不到这么长的包名。产出如下:

代码语言:javascript
复制
# puppet agent --test
info: Caching catalog for otoyas
info: Applying configuration version '1418720157'
notice: /Stage[main]/Bacula/Package[bacula-dir]/ensure: created
notice: /Stage[main]/Bacula/Package[bacula-sd]/ensure: created
notice: /Stage[main]/Bacula/Package[bacula-fd]/ensure: created
notice: /Stage[main]/Bacula/Exec[install_bacula]/returns: Loading repository data...
notice: /Stage[main]/Bacula/Exec[install_bacula]/returns: Reading installed packages...
notice: /Stage[main]/Bacula/Exec[install_bacula]/returns: 'bacula-dirbacula-fdbacula-batbacula-bconsolebacula-catalog-postgresqlbacula-libsbacula-postgresqlbacula-sdbacula-sqlbacula-toolsbacula-updatedb' not found in package names. Trying capabilities.
notice: /Stage[main]/Bacula/Exec[install_bacula]/returns: No provider of 'bacula-dirbacula-fdbacula-batbacula-bconsolebacula-catalog-postgresqlbacula-libsbacula-postgresqlbacula-sdbacula-sqlbacula-toolsbacula-updatedb' found.
err: /Stage[main]/Bacula/Exec[install_bacula]/returns: change from notrun to 0 failed: /usr/bin/zypper -n in bacula-dirbacula-fdbacula-batbacula-bconsolebacula-catalog-postgresqlbacula-libsbacula-postgresqlbacula-sdbacula-sqlbacula-toolsbacula-updatedb; returned 104 instead of one of [0] at /etc/puppet/modules/bacula/manifests/init.pp:12
notice: /Stage[main]/Bacula/Package[bacula-bat]/ensure: created
notice: /Stage[main]/Bacula/Package[bacula-updatedb]/ensure: created
notice: /Stage[main]/Vsftpd/Exec[install_vsftpd]/returns: executed successfully
notice: /Stage[main]/Bacula/Package[bacula-tools]/ensure: created
notice: /Stage[main]/Bacula/Package[bacula-postgresql]/ensure: created
notice: Finished catalog run in 6.28 seconds

我该怎么解决这个问题?如果有更好的方式来执行这个任务,我是开放的建议,因为我是新的傀儡。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-16 10:48:52

是的,你的方法有缺陷。

您应该将如何调用zypper的血淋淋的细节留给木偶。除非绝对必要,否则不要使用exec类型。对于包,使用package代替。

代码语言:javascript
复制
package {
    $baculas:
        ensure   => 'installed',
        provider => 'zypper',
}

实际上,如果您在SUSE系统上,木偶应该自己选择zypper提供程序。仅仅是放弃exec可能已经起了作用。

票数 1
EN

Stack Overflow用户

发布于 2014-12-16 10:57:50

考虑检查系统中的默认提供程序。

development.html https://github.com/puppetlabs/puppet/blob/master/lib/puppet/provider/package/zypper.rb

代码语言:javascript
复制
  commands :zypper => "/usr/bin/zypper"

  defaultfor :operatingsystem => [:suse, :sles, :sled, :opensuse]
  confine    :operatingsystem => [:suse, :sles, :sled, :opensuse]

正确设置之后,不需要exec部件,package部分就足够了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27501167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档