每次我在我的 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