为什么我不能从刚刚使用 Chef 添加的存储库安装软件包?
Why can I not install a package from a repo I just added using Chef?
我在厨师食谱中有以下内容:
cookbook_file '/etc/yum.repos.d/wandisco-svn.repo' do
source 'wandisco-svn.repo'
end
execute 'yum clean all'
package 'subversion' do
action :install
end
使用 Chef 配置服务器后,安装了错误版本的 Subversion(来自其他 yum 存储库的旧版本)。我可以立即 运行 yum list subversion
并查看可用的正确版本。
如果我手动执行上述操作(创建文件,运行 a yum clean all
和 运行 yum install subversion
),则会安装正确的版本。
为什么上面的代码不能正常工作?
Chef 将 yum 包数据库缓存在内存中,以加快菜谱执行速度。您可以使用以下方式刷新它:
yum_package 'subversion' do
flush_cache before: true
end
而不是您现有的包资源。
指出代码的问题。您还可以通过使用 yum_repository
让 Chef 知道您正在添加存储库(而不是向文件系统添加任意文件并执行任意命令)来解决问题:
yum_repository 'wandisco-svn' do
description 'Wandisco SVN Repo'
baseurl 'http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/'
gpgcheck false
enabled true
end
package 'subversion' do
action :install
end
默认情况下,yum_repository
处理 Chef 缓存和 Yum 缓存的刷新。有很多不同的选项可以按照您需要的方式设置存储库。可以在 chef-cookbooks/yum GitHub repository.
上找到文档
我在厨师食谱中有以下内容:
cookbook_file '/etc/yum.repos.d/wandisco-svn.repo' do
source 'wandisco-svn.repo'
end
execute 'yum clean all'
package 'subversion' do
action :install
end
使用 Chef 配置服务器后,安装了错误版本的 Subversion(来自其他 yum 存储库的旧版本)。我可以立即 运行 yum list subversion
并查看可用的正确版本。
如果我手动执行上述操作(创建文件,运行 a yum clean all
和 运行 yum install subversion
),则会安装正确的版本。
为什么上面的代码不能正常工作?
Chef 将 yum 包数据库缓存在内存中,以加快菜谱执行速度。您可以使用以下方式刷新它:
yum_package 'subversion' do
flush_cache before: true
end
而不是您现有的包资源。
yum_repository
让 Chef 知道您正在添加存储库(而不是向文件系统添加任意文件并执行任意命令)来解决问题:
yum_repository 'wandisco-svn' do
description 'Wandisco SVN Repo'
baseurl 'http://opensource.wandisco.com/centos/6/svn-1.8/RPMS/$basearch/'
gpgcheck false
enabled true
end
package 'subversion' do
action :install
end
默认情况下,yum_repository
处理 Chef 缓存和 Yum 缓存的刷新。有很多不同的选项可以按照您需要的方式设置存储库。可以在 chef-cookbooks/yum GitHub repository.