我有一个独特的情况,Puppet包确保=>最新指令仅适用于我的一些系统.在30台服务器中,软件包在除4之外的所有服务器上都正确更新.我正在尝试从<软件套件中获取主要版本的软件. 9.40至9.50.我可以指定一个硬级别,但我会遇到
the multiple architecture wildcard issue.
清单代码段:
# Install packages $spppackages = [ "hp-snmp-agents","hpssa","hp-health","hp-smh-templates","hpsmh","hpssacli","hponcfg",] package { $spppackages: ensure => latest,require => Yumrepo['HP-spp'],}
集体地位:
mco package hp-snmp-agents status Summary of Ensure: 9.50-2564.40.rhel6 = 14 9.50-2564.34.rhel5 = 9 9.40-2506.37.rhel6 = 4 <== This is what I'm trying to fix! 9.50-2564.35.rhel5 = 1
我试过在受影响的系统上调试这个:
puppet apply --verbose --debug --execute 'package { hp-snmp-agents: ensure => latest }'
导致:
Info: Applying configuration version '1393411670' Debug: Prefetching yum resources for package Debug: Executing '/bin/rpm --version' Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n'' Error: Could not prefetch package provider 'yum': invalid byte sequence in US-ASCII Debug: Executing '/bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n'' Debug: Finishing transaction 11762680 Debug: Storing state Debug: Stored state in 0.09 seconds
运行yum list更新hp-snmp-agents显示yum可以更新软件包,并且有更新版本可用:
Installed Packages hp-snmp-agents.x86_64 9.40-2506.37.rhel6 @HP-spp Available Packages hp-snmp-agents.x86_64 9.50-2564.40.rhel6 HP-spp
似乎问题可能是rpm版本查询格式.手动运行产生:
# /bin/rpm -q hp-snmp-agents --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n' hp-snmp-agents 0 9.40 2506.37.rhel6 x86_64 :DESC: Insight Management Agents(SNMP) for HP ProLiant Systems
如果我确保=> hp-snmp-agents包上的9.50-xxx,我可以强迫它在顽固系统上工作.即使输入伪造的版本号,似乎也会快速启动目录构建,并且随后的木偶代理运行正常工作和更新.我只是好奇为什么这个服务器可以在30台服务器中的26台上无缝工作,并且需要按摩其余部分.
请注意,我通过Mcollective完成所有yum清洁作为初始故障排除步骤
我相信相关问题是这样的:
Debug: Executing '/bin/rpm -qa --nosignature --nodigest --qf '%{NAME} %|EPOCH?{%{EPOCH}}:{0}| %{VERSION} %{RELEASE} %{ARCH} :DESC: %{SUMMARY}\n'' Error: Could not prefetch package provider 'yum': invalid byte sequence in US-ASCII
在这个bug中讨论了这个问题:https://tickets.puppetlabs.com/browse/PUP-736
基本上,在rpm -qa …输出的某个地方,你得到一个UTF-8(或其他非ASCII)字符,这导致傀儡认为“yum”提供者不好.由于“rpm”后备提供程序没有确保=>最新的支持,它忽略了,你得到旧版本.
你可以升级到puppet 3.4.3,其中包括一个修复,或者比较/ bin / rpm -qa … |在工作正确且无法正常查找罪魁祸首包的框之间对输出进行排序.从LANG = C更改为LANG = en_US.UTF-8(或任何其他有效的UTF-8 LANG)也应暂时解决此问题.