Мне нужно установить puppet 3.2.0 или выше вместе с ruby 2.0.0-p247 на сервере ubuntu 12.04.
Нет возможности установить марионетку без рубин 1.8?
По большей части мой опыт получен из CentOS, поэтому мне может не хватать чего-то простого с apt.
Моя установка:
Убедитесь, что рубина нет
root@gitlab:~# which ruby
root@gitlab:~# ruby --version
The program 'ruby' can be found in the following packages:
* ruby1.8
* ruby1.9.1
Try: apt-get install <selected package>
Установите марионетку из официального ppa
root@gitlab:~# cat /etc/apt/sources.list.d/puppetlabs.list
deb http://apt.puppetlabs.com precise main
deb-src http://apt.puppetlabs.com precise main
deb http://apt.puppetlabs.com precise dependencies
deb-src http://apt.puppetlabs.com precise dependencies
Последняя версия марионетки указана в apt
root@gitlab:~# apt-cache policy puppet|head
puppet:
Installed: (none)
Candidate: 3.3.0-1puppetlabs1
Version table:
3.3.0-1puppetlabs1 0
500 http://apt.puppetlabs.com/ precise/main amd64 Packages
3.2.4-1puppetlabs1 0
500 http://apt.puppetlabs.com/ precise/main amd64 Packages
3.2.3-1puppetlabs1 0
500 http://apt.puppetlabs.com/ precise/main amd64 Packages
При установке puppet 3.3.0 автоматически появляется Ruby 1.8.
root@gitlab:~# apt-get install puppet-common
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas-ruby1.8 libaugeas0 libjson-ruby libruby libruby1.8
libshadow-ruby1.8 ruby ruby-json ruby-rgen ruby1.8 virt-what
Suggested packages:
augeas-doc augeas-tools ruby-selinux libselinux-ruby1.8 librrd-ruby1.9.1 librrd-ruby1.8 ri ruby-dev ruby1.8-examples ri1.8
The following NEW packages will be installed:
augeas-lenses debconf-utils facter hiera libaugeas-ruby libaugeas-ruby1.8 libaugeas0 libjson-ruby libruby libruby1.8
libshadow-ruby1.8 puppet-common ruby ruby-json ruby-rgen ruby1.8 virt-what
0 upgraded, 17 newly installed, 0 to remove and 92 not upgraded.
Need to get 3,664 kB of archives.
After this operation, 14.1 MB of additional disk space will be used.
Do you want to continue [Y/n]?
марионеточная версия
root@gitlab:/tmp/ruby-2.0.0-p247# puppet --version
3.3.0
рубиновая версия
root@gitlab:/tmp/ruby-2.0.0-p247# ruby --version
ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
(обратите внимание, что ruby автоматически устанавливается с помощью альтернативных обновлений)
root@gitlab:/tmp/ruby-2.0.0-p247# ll `which ruby`
lrwxrwxrwx 1 root root 22 Sep 18 02:57 /usr/bin/ruby -> /etc/alternatives/ruby*
root@gitlab:/tmp/ruby-2.0.0-p247# update-alternatives --list ruby
/usr/bin/ruby1.8
Затем я устанавливаю ruby 2.0 в его собственный каталог из источника
./configure --prefix=/usr/bin/ruby2.0
Затем зарегистрируйте ruby 2.0 с помощью альтернативных обновлений
update-alternatives --install /usr/bin/ruby ruby /usr/bin/ruby2.0/bin/ruby 10
Переключитесь на Ruby 2.0 через update-alternatives
root@gitlab:/tmp/ruby-2.0.0-p247# update-alternatives --set ruby /usr/bin/ruby2.0/bin/ruby
update-alternatives: using /usr/bin/ruby2.0/bin/ruby to provide /usr/bin/ruby (ruby) in manual mode.
root@gitlab:/tmp/ruby-2.0.0-p247# ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
Я делал это несколько раз, пока which ruby
указывает на любую версию ruby, кроме 1.8, марионетка возвращает следующую ошибку:
root@gitlab:/tmp/ruby-2.0.0-p247# puppet --version
/usr/bin/ruby2.0/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- puppet/util/command_line (LoadError)
from /usr/bin/ruby2.0/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from /usr/bin/puppet:3:in `<main>'
Как я могу установить марионетку с Ruby 2.0?
Puppet 3.3 совместим с Ruby 2.0, потому что он указан на сайт марионетки
Дополнительные ресурсы
http://projects.puppetlabs.com/issues/18494
RVM кажется намного сложнее, чем мне нужно. Кроме того, в часто задаваемых вопросах говорится, что нельзя использовать его с sudo или запускать от имени пользователя root, что я должен сделать. https://rvm.io/
http://rvm.io/support/faq
https://stackoverflow.com/questions/1892877/how-do-i-make-ruby-1-9-the-default-ruby-on-ubuntu
Мне удалось установить ruby 2.0 и puppet 3.3.0 с помощью rvm
Установить марионетку
apt-get install марионетка
Установить rvm
\ curl -L https://get.rvm.io | трепать
Выйти и снова войти в систему
Установите Ruby 2.0
rvm установить рубин 2.0.0-p247
Перейти на Ruby 2.0
rvm использовать 2.0.0-p247
Проверьте вывод $ apt-cache depends puppet
; вы могли бы использовать ruby-1.9
, но по крайней мере на 17 сентября 2013 г. ruby 2.0 не был упакован в Ubuntu.
Пакетная версия требует Ruby 1.8 или 1.9. Вы можете использовать один из не рекомендуемых методов для его установки (gem, tarball), например, sudo gem install puppet
.