Puppet - контролира инсталираната версия на пакета

Имам следното:

class compass {
    package { 'ruby-dev':
        ensure => installed,
    }
    package { ["rubygems"]:
        ensure => 'installed'
    }

    package { ['sass']:
        ensure => '3.2.0.alpha.277',
        provider => 'gem',
        require => Package['rubygems']
    }~>
    package { ['compass']:
        ensure => '0.12.2',
        provider => 'gem',
        require => Package['rubygems']
    }
}

Когато направя gem list, след като е стартиран, са инсталирани две версии на sass:

# gem list

*** LOCAL GEMS ***

chunky_png (1.2.8)
compass (0.12.2)
ffi (1.9.0)
fssm (0.2.10)
listen (1.1.6)
rake (10.1.0)
rb-fsevent (0.9.3)
rb-inotify (0.9.0)
rb-kqueue (0.2.0)
sass (3.3.0.alpha.212, 3.2.0.alpha.277)
zurb-foundation (3.0.6)

За да може кодът ми да работи, трябва да се инсталира само 3.2.0.alpha.277. Изглежда, че изискването от пакета sass е изпълнено, но пакетът compass изисква sass "~> 3.1".

Как да се уверя, че е инсталирана само 3.2.0.alpha.277 версията на sass?


person phidah    schedule 20.07.2013    source източник


Отговори (1)


Интересното е, че стартирах това на почти чиста версия на Ubuntu 12.04 и инсталирах само версията 277.

Също така не мисля, че ресурсът на пакета може да направи това вместо вас. Въпреки това можете да се справите с него в exec, като:

exec { 'remove-sass-3.3.0.alpha.212':
  command => 'gem uninstall sass -v=3.3.0.alpha.212',
  unless  => 'test `gem list --local | grep -q 3.3.0.alpha.212; echo $?` -ne 0',
  path    => ['/usr/bin', '/bin'],
}

Можете дори да го опаковате като дефиниран тип:

define remove-gem ($version) {
  exec { "remove-gem-${name}-version-${version}":
    command => "gem uninstall ${name} -v=${version}",
    unless  => "test `gem list --local | grep -q \"${name}.*${version}\"; echo $?` -ne 0",
    path    => ['/usr/bin', '/bin'],
  }
}


remove-gem {'sass':
  version => '3.3.0.alpha.212',
}

по този начин можете да го използвате повторно, за да премахнете други конкретни версии на скъпоценни камъни.

person Sekm    schedule 21.07.2013