我正在尝试使用ubuntu服务器通过puppet更新已安装的软件包。 但是没有发生更新。
在puppet清单文件中,我们包含了收集程序包,如下所示,
if !defined(Package['package name'])
{
package { 'package name': }
}
else
{
package { 'package name':
ensure => latest,
require => Exec['apt-get update'],
}
}
可以解释这句话 - 如果!定义(包['包名'])或 如何升级软件包。假设我想在下次部署时安装php需要更新到最新版本...可以共享代码吗?
答案 0 :(得分:0)
首先,您应该避免使用defined
函数,因为它会创建与解析相关的行为,这是不建议的。
你可能没有做你认为的木偶代码。只有在已定义包的情况下,它才会进入else
分支。在这种情况下,您应该看到一个错误,因为您正在重新定义它,这是被禁止的。
这意味着该软件包未定义,并且您没有选项定义它。您可能希望查看可以配置为在每个软件包安装之前运行apt-get update
的{{3}},并且通常会使事情更容易管理(ppa,自定义软件源等)。< / p>