Назад | Перейти на главную страницу

Как исправить php5-mcrypt при установке Ubuntu 13.10 через марионетку?

Я новичок в Puppet. Итак, я прошу помощи в том, как лучше всего решить мою проблему.

я использую этот puppet для предоставления PHP в мой ящик Ubuntu 13.10. Но, похоже, что пакет php5-mcrypt сломано, так как mcrypt.ini неуместен в /etc/php5/conf.d вместо того /etc/php5/apache2/available-modules/

(Для справки, я работаю с Apache 2.4 и PHP 5.5)

Я сделал класс php-mcrypt это подходит для меня'. Но я хочу знать, есть ли способ сделать это лучше / чище.

Вот мой обходной путь:

# https://github.com/lucasvscn/puppet-php-mcrypt
#
class php-mcrypt() {


  Exec { path => [ "/bin/", "/sbin/" , "/usr/bin/", "/usr/sbin/" ] }

  package { "php5-mcrypt":
    ensure  => "installed",
    require => Class['php'],
  }

  file { '/etc/php5/conf.d/mcrypt.ini':
    require => Package['php5-mcrypt'],
  }

  exec {
    "copying_mcrypt":
    command => 'cp -v /etc/php5/conf.d/mcrypt.ini /etc/php5/mods-available/',
    require => Package['php5-mcrypt'],
  }->

  exec {
    "enabling_mcrypt":
    command => 'php5enmod mcrypt && service apache2 reload',
    require => Package['php5-mcrypt'],
  }

}

Проблема с самим пакетом обсуждалась в этой ветке (https://stackoverflow.com/questions/19446679/mcrypt-not-present-after-ubuntu-upgrade-to-13-10) и этот баг Ubuntu (https://bugs.launchpad.net/ubuntu/+source/php-mcrypt/+bug/1241286).

Общепринятое решение - создать символическую ссылку, а не копировать файл. Этот метод имеет то преимущество, что ваша конфигурация указывает на файл, который все еще находится под контролем системы управления пакетами.

Вот пример Puppet: http://www.puppetcookbook.com/posts/creating-a-symlink.html

Включите php5-mcrypt с марионеткой в ​​Ubuntu 13.10 или 14.04

case $lsbdistid {
    'Ubuntu': {

        case $lsbdistrelease {
            '13.10': {
                file { '/etc/php5/apache2/conf.d/20-mcrypt.ini':
                    ensure => link,
                    target => '/etc/php5/conf.d/mcrypt.ini',
                    notify => Service['apache2'],
                    require => [
                        Package['libapache2-mod-php5'],
                        Package['php5-mcrypt'],
                    ],
                }
                file { '/etc/php5/cli/conf.d/20-mcrypt.ini':
                    ensure => link,
                    target => '/etc/php5/conf.d/mcrypt.ini',
                    require => [
                        Package['php5-mcrypt'],
                        Package['php5-cli'],
                    ],
                }
            }

            '14.04': {
                file { '/etc/php5/apache2/conf.d/20-mcrypt.ini':
                    ensure => link,
                    target => '../../mods-available/mcrypt.ini',
                    notify => Service['apache2'],
                    require => [
                        Package['libapache2-mod-php5'],
                        Package['php5-mcrypt'],
                    ],
                }
                file { '/etc/php5/cli/conf.d/20-mcrypt.ini':
                    ensure => link,
                    target => '../../mods-available/mcrypt.ini',
                    require => [
                        Package['php5-mcrypt'],
                        Package['php5-cli'],
                    ],
                }
            }
        }
    }
}

Управляйте ссылкой как типом ресурса Puppet File вместо более запутанного Exec ln. Убедитесь, что ссылка => и укажите target => param.