为什么每次运行 puppet 时它都会检查某些包?

为什么每次运行 puppet 时它都会检查某些包?

每次我在我的 ubuntu 服务器上运行 puppet 时,都会出现以下情况:

通知:/Stage[main]/MyCompany::Role::MyApp/Package[ncurses-dev]/ensure:确保将“已清除”更改为“当前”

每次。为什么它会对这个特定的包执行此操作,而不对出现在同一个代码块中的其他包执行此操作?

Package { ensure => present }
package {
    [
    "openjdk-6-jre-headless", # for SOLR
    "ncurses-dev",  # for varnishstat built from buildout, used by munin
    "pkg-config",
    "nfs-common",
    "gettext", # for building PO @deployment
    "libpcre3", "libpcre3-dev", # for varnish build / to be removed
    "libevent-dev", # for beantalk buid / to be removed
    "ffmpeg", # for thumbnails
    "gpac", # contains MP4Box, for making mp4 pseudo-streamables
    ]:;
  }

编辑:在详细/调试模式下运行 Puppet 显示以下内容:

调试:Puppet::Type::Package::ProviderApt:正在执行'/usr/bin/dpkg-query -W --showformat ${Status} ${Package} ${Version}\n ncurses-dev'

调试:Puppet::Type::Package::ProviderApt:正在执行‘/usr/bin/apt-get -q -y -o DPkg::Options::=--force-confold install ncurses-dev’

执行第一个命令得到如下结果:

n[演示]root@ucdb:~#

注意提示前的 n

我们承认这是调试选项的格式问题,以下是我在运行它并进行一些修复后得到的结果:

/usr/bin/dpkg-query -W --showformat='${Status} ${Package} ${Version}\n' ncurses-dev

未知 ok 未安装 ncurses-dev

这是我运行时得到的结果aptitude search ncurses-dev

ncurses-dev 版本

该包是虚拟的...

答案1

出现该错误的原因是ncurses-dev它是一个虚拟包。


 # apt-cache show ncurses-dev
N: Can't select versions from package 'ncurses-dev' as it is purely virtual
N: No packages found

你要么想要下面两个中的一个:


libncurses5-dev - developer's libraries for ncurses
libncursesw5-dev - developer's libraries for ncursesw

要知道你正在使用哪一个,你可以这样做:

apt-cache showpkg ncurses-dev | sed '/Reverse Provides/,$!d'
Reverse Provides: 
libncurses5-dev 5.9-4

相关内容