你们知道如何在一个使用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
因此开始了对传说中的Ruby的不屑的追求。
但大多数第三方回购不提供CEntOS 6.7的Ruby 1.9。
https://dl.iuscommunity.org/pub/ius/stable/CentOS/6/x86_64/repoview/letter_r.group.html 🙁
https://dl.fedoraproject.org/pub/epel/6/x86_64/
我没有正确安装我find的一个软件包,在Remi的回购中 ,由于缺lessmockbuild用户而失败。 我认为只有从源头上构build才是必要的。
我安装了RVM。
然而,这需要glibc = 2.12-1.166.el6_7.7 ,我的系统没有这个特定的版本可用(出于很好的理由)。
无论如何,这只会对特定用户有效。 如果安装了RVM,需要使用Ruby的系统用户可能会感到奇怪。 rbenv ,可能减轻了这个问题,给了我同样的关于glibc的guff:
$ 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 1.8,CEntOS 6的系统Ruby:
1.8的猴子补丁 🙂
不过, r10k开发人员后来删除了对Ruby1.8的支持 🙁
接下来,在评论者的要求下,我检查了木偶集合文档。
A. http://yum.puppetlabs.com/el/6/对Ruby没有任何用处。
B.傀儡代理软件包不会更新系统Ruby,因为(我认为?)广告:
但是,安装之后,看起来确实是为Puppet生成了一个定制的Ruby。 有关更多详细信息,请参阅下面的答案。
CE10是否支持r10k?
CEntOS 6支持Ruby 1.9吗?
我快要放弃在这里,serverfault.com是我的'冰雹玛丽'玩。
当然,除了实际工作,我还有更多的select。 我可能只是乞求RedHat包维护人员更新他们的Ruby,或者纠缠某些人(你知道你是谁)加快他们的CEntOS 7努力的步伐…
笔记:
注1:我没有发现很多关于这个问题的serverfault。 https://serverfault.com/search?q=r10k+on+CEntOS+6
注2:我已经将此作为我对以下问题的研究的一部分:
如何添加第三方木偶模块而不将它们提交到源代码pipe理?
r10k 1.5.1是支持ruby1.8.7的最后一个版本。 即使你安装了1.5.1的gem,也会安装比release-release-release更新的依赖关系,这也与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
答案是在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或内部回购库提供给您的系统。
要回答这个明确的问题:
至于你是否可以保留你那古老的垂死的木偶3.6,这样做还是悬而未决。
(注:pipe理层故意忽略某些输出以保护有罪和/或愚蠢。)