如何解决Ubuntu 13.10上的php5-mcrypt通过木偶安装?

我对木偶很新。 所以,我在这里寻求如何解决我的问题的最佳方法的帮助。

我正在使用这个 puppet模块将PHP提供到我的Ubuntu 13.10盒子中。 但是,似乎包php5-mcrypt已经坏了,因为mcrypt.ini被放在/etc/php5/conf.d而不是/etc/php5/apache2/available-modules/

(为了logging,我正在使用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的bug( https:/ / /bugs.launchpad.net/ubuntu/+source/php-mcrypt/+bug/1241286 )。

通常接受的解决scheme是创build一个符号链接,而不是复制文件。 该方法的优点是将configuration指向一个仍在包pipe理系统控制下的文件。

这里是一个木偶示例: http : //www.puppetcookbook.com/posts/creating-a-symlink.html

将链接作为Puppet文件资源types进行pipe理,而不是更复杂的ln执行。 确保=>链接并指定target => param。

在Ubuntu 13.10或14.04中用puppet启用php5-mcrypt

 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'], ], } } } } }