安装PECL模块时不需要提示


Install PECL modules without the prompts

我刚刚在Ubuntu Natty上安装了PHP。

我试图使用PECL安装APC和Memcache等额外模块。我用的是这样的:

pecl install apc

然而,我得到提示,要求我确认一些事情。

如何使用pecl命令来接受默认值?我在一个留言板上看到这样的东西:printf "yes'n" | pecl install pecl_http。然而,在APC的情况下,对于默认为no的事情,这将回答yes(我认为)。

下面的代码似乎可以正常工作:

printf "'n" | pecl install apc

您也可以用任何其他PECL包替换apc。

欢呼。

"yes"命令可以做的不仅仅是键入"yes";它可以一遍又一遍地输入你想要的任何东西。包括一个空行,这是接受默认值的好方法。

我只是自己需要这个,所以这是我的工作很好:

yes '' | pecl install -f apc

如果您不想对每个提示("是", "否"或")给出相同的答案,您可以使用--configureoptions为每个选项设置特定的值(参见PECL手册)。

你需要找到你的包的package.xml文件,看看哪些选项是可配置的。例如,对于memcached包,您可以在这里执行:

https://github.com/php-memcached-dev/php-memcached/blob/master/package.xml

搜索<configureoption>标签,在本例中为:

<configureoption name="with-libmemcached-dir"     prompt="libmemcached directory"     default="no"/>
<configureoption name="with-zlib-dir"             prompt="zlib directory"             default="no"/>
<configureoption name="with-system-fastlz"        prompt="use system fastlz"          default="no"/>
<configureoption name="enable-memcached-igbinary" prompt="enable igbinary serializer" default="no"/>
<configureoption name="enable-memcached-msgpack"  prompt="enable msgpack serializer"  default="no"/>
<configureoption name="enable-memcached-json"     prompt="enable json serializer"     default="no"/>
<configureoption name="enable-memcached-protocol" prompt="enable server protocol"     default="no"/>
<configureoption name="enable-memcached-sasl"     prompt="enable sasl"                default="yes"/>
<configureoption name="enable-memcached-session"  prompt="enable sessions"            default="yes"/>

你可以把这些选项传递给install命令,像这样:

pecl install --configureoptions 'with-libmemcached-dir="no" with-zlib-dir="no" with-system-fastlz="no" enable-memcached-igbinary="yes" enable-memcached-msgpack="no" enable-memcached-json="no" enable-memcached-protocol="no" enable-memcached-sasl="yes" enable-memcached-session="yes"' memcached

Obinwanne's Hill的答案很适合我,所以我在这里没有提供任何新的东西,但下面的答案似乎是绝对最短的,而且没有任何花哨的工具。

echo '' | pecl install apc