问题
我试图安装php 5.5和php5-memcached我的机器已经预装了php 5.3。 此外,我不能更改默认configuration,因为它是为CI提供的登台框。因此,让我们假设PHP 5.3是预安装的, 不能更改。
所以,首先我要尝试安装php,然后php-memcached:
sudo apt-get update sudo apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite" install -y php5 sudo apt-get -o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite" install -y php5-memcached
重要的是上面的命令是由build runner调用的,因此,它不是“交互”模式,因为没有“用户”正在关心安装。
问题是,因为现有的PHP 5.3我得到:
(B)0包assembly置┌────────────────────────┤修改后的configuration文件├───────────────── ─────┐│configuration文件/etc/php5/cli/php.ini的新版本可以使用,││但是当前安装的版本已经在本地修改。││││你想做些什么修改configuration文件php.ini?││││安装包维护者的版本││保留当前安装的本地版本││显示版本之间的差异││显示版本之间的并行差异││启动一个新的shell审查情况│││││││││└└─────────────────────────────────── ───────────────────────────────────────┘
那是因为它find了一些修改过的configuration文件。 问题是 – 我可以强迫它被覆盖吗? 正如你所看到的,我已经尝试了-o Dpkg::Options::="--force-confnew" -o Dpkg::Options::="--force-overwrite"没有任何成功(我想这是因为这个“对话框“与dpkg无关)。 显然,这个“对话框”的问题在于,所有的设置命令都是从CI容器内部调用的,并且没有可以执行任何“动作”的“用户” – 它应该是完全自动执行的。
再次,
问题 :如何在这种情况下强制覆盖任何configuration? 否则,我怎样才能达到最初的目标,并从5.3升级到5.5,然后安装php5-memcached?
该消息与dpkg无关,因此无法使用dpkg选项进行控制。 有两个可行的select,我发现他们:
其次,使用phpenv和php-build来pipe理不同的PHP环境,而不必接触当前安装的环境。 默认情况下,它提供了用于pyrus数据包pipe理器的pyrus扩展,允许使用它。 对于php-memcached我简单地使用它:
pyrus install pecl/memcached-2.1.0 pyrus build pecl/memcached-2.1.0 phpenv rehash
请注意,在某些PHP版本中, pyrus install pecl/memcached可能会失败,因此构build指定特定版本的PHP pyrus install pecl/memcached安全。 这种方法与pyrus将允许安装pyrus可用的任何软件包。 如果你仍然需要自定义的东西(我需要phalcon),你可以用自定义编译来构build它,如:
#!/bin/bash PHPVERSION=$1 # get the extension via wget, for example # cd to extension directory # Perform the compilation ~/.phpenv/versions/$PHPVERSION/bin/phpize ./configure --with-php-config=/home/ubuntu/.phpenv/versions/$PHPVERSION /bin/php-config --enable-extension make && make install echo "extension=extension.so" > ~/.phpenv/versions/$PHPVERSION/etc/conf.d/extension.ini
--enable-extension , "extension.so"等你需要哟replace您的编译的扩展名。
正如你所看到的,这不是解决问题的直接方式,但它仍然对应于完全自动CI构build的目标,允许为这样的构build创build任何PHP版本设置/扩展。
PS如果有人会find解决问题的方法,这将是“第三”的select,但我不相信这是可能的dpkg工具。