如何使用AWS自定义JSON重载Chef Cookbook中的package_name?

如何使用AWS自定义JSON重载Chef Cookbook中的package_name?

我之前从未使用过 Chef 和 OpsWorks。我正在做的是尝试覆盖一些 Chef 配置以使用现代 PHP 5.6。

我为 Layer PHP App Server 编写了一个 JSON

{ "mod_php5_apache2": { "packages": ["php56-xml", "php56-common", "php56-gd", "php56-bcmath", "php56-mysqlnd", "php56-pecl-memcache"], "version": "2.4" } , "php-mysql" : {"package_name" :"php56-mysqlnd" } }

然后它开始安装新版本的 PHP 和软件包。但我遇到了问题php-mysql。我找到了这个文件:https://github.com/aws/opsworks-cookbooks/blob/release-chef-11.4/mod_php5_apache2/recipes/mysql_adapter.rb 据我了解,它提供了一个 php-mysql 包名,所以我尝试在 JSON 中重载它,但没有成功。当我部署层(设置)时,由于包冲突而失败:

[2016-05-18T20:28:25+00:00] INFO: 处理包 [php56-mysqlnd] 操作安装(mod_php5_apache2::default 第 4 行)
[2016-05-18T20:28:25+00:00] DEBUG:软件包 [php56-mysqlnd] 正在检查 php56-mysqlnd 的 yum 信息
[2016-05-18T20:28:25 + 00:00] DEBUG:包[php56-mysqlnd]已安装版本:(无)候选版本:5.6.21-1.124.amzn1
[2016-05-18T20:28:25+00:00] INFO: 软件包[php56-mysqlnd] 从 amzn-updates 存储库安装 php56-mysqlnd-5.6.21-1.124.amzn1
[2016-05-18T20:28:25+00:00] 调试:执行 yum -d0 -e0 -y 安装 php56-mysqlnd-5.6.21-1.124.amzn1
[2016-05-18T20:28:28+00:00] DEBUG: ---- 开始输出 yum -d0 -e0 -y install php56-mysqlnd-5.6.21-1.124.amzn1 ----
[2016-05-18T20:28:28+00:00] 调试:标准输出:
[2016-05-18T20:28:28+00:00] 调试:STDERR:
[2016-05-18T20:28:28+00:00] DEBUG: ---- yum -d0 -e0 -y install php56-mysqlnd-5.6.21-1.124.amzn1 的输出结束 ----
[2016-05-18T20:28:28 + 00:00]调试:运行 yum -d0 -e0 -y install php56-mysqlnd-5.6.21-1.124.amzn1 返回 0
[2016-05-18T20:28:28+00:00] INFO: 处理包 [php56-pecl-memcache] 操作安装 (mod_php5_apache2::default 第 4 行)
[2016-05-18T20:28:28+00:00] 警告:解析 yum-dump.py 中的行“插件“replace”无法导入”时出现问题!请检查您的 yum 配置。
[2016-05-18T20:28:28+00:00] DEBUG:软件包 [php56-pecl-memcache] 正在检查 php56-pecl-memcache 的 yum 信息
[2016-05-18T20:28:28+00:00] DEBUG:包[php56-pecl-memcache]已安装版本:3.0.8-6.17.amzn1候选版本:3.0.8-6.17.amzn1
[2016-05-18T20:28:28+00:00] DEBUG:包 [php56-pecl-memcache] 已安装 - 无需执行任何操作
[2016-05-18T20:28:28+00:00] INFO: 处理包 [php-mysql] 操作安装(mod_php5_apache2::mysql_adapter 第 1 行)
[2016-05-18T20:28:28+00:00] DEBUG:软件包[php-mysql] 正在检查 php-mysql 的 yum 信息
[2016-05-18T20:28:28 + 00:00] DEBUG:包[php-mysql]已安装版本:(无)候选版本:5.3.29-1.8.amzn1
[2016-05-18T20:28:28+00:00] INFO: 软件包[php-mysql] 从 amzn-main 存储库安装 php-mysql-5.3.29-1.8.amzn1
[2016-05-18T20:28:28+00:00] 调试:执行 yum -d0 -e0 -y install php-mysql-5.3.29-1.8.amzn1
[2016-05-18T20:28:30+00:00] DEBUG: ---- 开始输出 yum -d0 -e0 -y install php-mysql-5.3.29-1.8.amzn1 ----
[2016-05-18T20:28:30+00:00] DEBUG: STDOUT: 您可以尝试使用 --skip-broken 来解决问题
您可以尝试运行:rpm -Va --nofiles --nodigest
[2016-05-18T20:28:30+00:00] DEBUG:STDERR:错误:php56-pdo 与 php-pdo-5.3.29-1.8.amzn1.x86_64 冲突
错误:php-mysql 与 php56-mysqlnd-5.6.21-1.124.amzn1.x86_64 冲突
错误:php56-common 与 php-common-5.3.29-1.8.amzn1.x86_64 冲突
[2016-05-18T20:28:30+00:00] DEBUG: ---- yum -d0 -e0 -y install php-mysql-5.3.29-1.8.amzn1 的输出结束 ----
[2016-05-18T20:28:30+00:00] 调试:运行 yum -d0 -e0 -y install php-mysql-5.3.29-1.8.amzn1 返回 1

================================================================================
在资源‘package[php-mysql]’上执行操作‘install’时出错
================================================================================


Chef::例外::执行
----------------------
返回 1,预期 0
---- 开始输出 ----
STDOUT:您可以尝试使用 --skip-broken 来解决问题
您可以尝试运行:rpm -Va --nofiles --nodigestSTDERR:错误:php56-pdo 与 php-pdo-5.3.29-1.8.amzn1.x86_64 冲突
错误:php-mysql 与 php56-mysqlnd-5.6.21-1.124.amzn1.x86_64 冲突
错误:php56-common 与 php-common-5.3.29-1.8.amzn1.x86_64 冲突
---- 结束输出 ----



资源声明:
---------------------
# 在 /opt/aws/opsworks/releases/20160503163349_2426-20160503163349/cookbooks/mod_php5_apache2/recipes/mysql_adapter.rb 中

1:软件包‘php-mysql’
2:平台系列的软件包名称值(
3:'rhel' => 'php-mysql',
4:'debian' => 'php5-mysql'
5:)
6:结束



编译资源:
------------------
# 在 /opt/aws/opsworks/releases/20160503163349_2426-20160503163349/cookbooks/mod_php5_apache2/recipes/mysql_adapter.rb:1:in `from_file' 中声明

包(“php-mysql”)执行
重试延迟 2
版本“5.3.29-1.8.amzn1”
重试 0
cookbook_name :mod_php5_apache2
配方名称“mysql_adapter”
操作:安装
软件包名称“php-mysql”
结尾

有没有什么办法可以让这些弃用的软件包超载?

相关内容