你们知道如何在装有 Puppet 3.6 的 CEntOS 6.7 服务器上正确运行 r10k 吗?这是否自相矛盾?
我检查了 r10k 源代码的要求列表:https://github.com/puppetlabs/r10k#requirements
看起来它需要 Ruby 1.9。还算公平。
但...
$ facter rubysitedir rubyversion
rubysitedir => /usr/lib/ruby/site_ruby/1.8
rubyversion => 1.8
从此,寻找传说中的红宝石的卑鄙旅程开始了。
第三方存储库
但是大多数第三方存储库不提供适用于 CEntOS 6.7 的 Ruby 1.9。
我无法正确安装我在 Remi 的仓库里找到了一个包,由于缺少 mockbuild 用户而失败。我认为只有从源代码构建时才需要这样做。
Ruby‘管理器’
我安装了 RVM。
但是,这是必需的glibc = 2.12-1.166.el6_7.7
,而我的系统没有这个特定的版本可用(出于充分的理由)。
无论如何,这只对特定用户有效。如果安装了 RVM,系统用户需要使用 Ruby,情况可能会变得很奇怪。rbenv
,这可能会缓解这个问题,也给了我同样的关于 glibc 的废话:
$ mkdir ~/.tmp && export TMPDIR=~/.tmp && rbenv install 1.9.3-p551 ## How did it come to this...
Downloading yaml-0.1.6.tar.gz...
-> https://dqw8nmjcqpjn7.cloudfront.net/7da6971b4bd08a986dd2a61353bc422362bd0edcc67d7ebaac68c95f74182749
Installing yaml-0.1.6...
BUILD FAILED (CentOS release 6.7 using ruby-build 20160913)
Inspect or clean up the working tree at /export/home/nger/.tmp/ruby-build.20161117064013.21057
Results logged to /home/nger/.tmp/ruby-build.20161117064013.21057.log
Last 10 log lines:
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... no
checking for cc... no
checking for cl.exe... no
configure: error: in `/home/nger/.tmp/ruby-build.20161117064013.21057/yaml-0.1.6':
configure: error: no acceptable C compiler found in $PATH
See `config.log' for more details
系统 Ruby
无论如何,我当时认为我可以使用 Ruby 1.8,CEntOS 6 的系统 Ruby:
然而,r10k 开发人员后来取消了对 Ruby 1.8 的支持:(
木偶收藏
接下来,应评论者的要求,我检查了 Puppet Collections 文档。
A。http://yum.puppetlabs.com/el/6/与 Ruby 无关。
B. puppet-agent 包不会更新系统 Ruby,正如(我认为的?)广告中说的:
但是,安装后,看起来确实为 Puppet 生成了一个定制的 Ruby。有关更多详细信息,请参阅下面的答案。
CEntOS 6 是否也受 r10k 支持?
CEntOS 6 支持 Ruby 1.9 吗?
我快要放弃了,serverfault.com 就是我的“万福玛利亚”剧。
当然,除了实际工作,我还有更多选择。我可能会乞求 RedHat 软件包维护者更新他们的 Ruby,或者缠着某些人(你知道你是谁)加快他们的 CEntOS 7 工作步伐……
笔记:
注1:我没有在serverfault上找到太多关于这个问题的信息。 https://serverfault.com/search?q=r10k+on+CEntOS+6
注2:我在研究以下先前问题时提出了这个问题:
答案1
r10k 1.5.1 是支持 ruby 1.8.7 的最后一个版本。即使你 gem install 1.5.1,也会安装比发布时更新的依赖项,这些依赖项也与 ruby 1.8.7 不兼容。显然会导致非 r10k 错误,这也是你正在查看此答案的原因。
yum install ruby-devel rubygems rubygem-rspec rubygem-rake
gem install --no-rdoc --no-ri semantic_puppet -v 0.1.3
gem install --no-rdoc --no-ri r10k -v 1.5.1
答案2
答案显然是在 Puppet Collections 中:
$ curl -O https://yum.puppetlabs.com/puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo rpm -ivh puppetlabs-release-pc1-el-6.noarch.rpm
$ sudo yum -d 1 install -y puppet-agent
$ /opt/puppetlabs/puppet/bin/ruby --version
ruby 2.1.9p490 (2016-03-30 revision 54437) [x86_64-linux]
r10k
就可以很好地完成这个。
但是,这会为您提供更高版本的 Puppet。
$ /opt/puppetlabs/bin/puppet --version
4.8.0
但是,强制安装早期版本的puppet-agent
软件包无法解决这个问题:
$ sudo yum info puppet-agent-1.0.0 | grep 'puppet ('
: puppet (4.0.0)
这里真正的答案是编译您自己的 Ruby 版本,并通过 FTP 或内部 repo 使其可供您的系统使用。
回答这个明确的问题:
是的,您可以使用 CURL、RPM 和 YUM 在 CENTOS 6 上安装 r10k。
至于在这样做的同时,你是否可以保留旧的、即将消亡的 Puppet 3.6,这仍然悬而未决。
(注:管理层为了保护那些有罪和/或愚蠢的人,故意省略了一些输出。)