在没有提示的情况下安装PECL模块

Obi*_*ill 81 php pecl

我刚刚从源代码上在Ubuntu Natty上安装了PHP.

我正在尝试使用PECL来安装其他模块,如APC和Memcache.我正在使用这样的东西:

pecl install apc
Run Code Online (Sandbox Code Playgroud)

但是,我得到提示,要求我确认一下.

如何使用pecl命令只接受默认值?我在留言板上看到这样的东西:printf "yes\n" | pecl install pecl_http.但是,在APC的情况下,对于默认为否的事情(我认为),这将回答是.

提前致谢.

Obi*_*ill 78

以下代码似乎工作正常:

printf "\n" | pecl install apc
Run Code Online (Sandbox Code Playgroud)

您也可以将apc替换为任何其他PECL包.

干杯.

  • 我也看到了"是"的成功 pecl install memcache` - 虽然我认为你的解决方案适用于默认为"是"以外的其他软件包 (6认同)

Tom*_*ell 68

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

我自己就是需要这个,所以这里对我有用:

yes '' | pecl install -f apc
Run Code Online (Sandbox Code Playgroud)

  • @ObinwanneHill:Tom指的是[`yes`](http://linux.die.net/man/1/yes)命令.这比"printf"的好处是它会反复生成输出,如果pecl安装程序提示其他问题而不是脚本化的'printf`,那么它会更容易移植. (3认同)

Ben*_*n Y 20

如果您不想对每个提示给出相同的答案(“是”、“否”或“”),您可以--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"/>
Run Code Online (Sandbox Code Playgroud)

然后,您可以将这些选项传递给安装命令,如下所示:

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
Run Code Online (Sandbox Code Playgroud)


Ian*_*hek 6

Obinwanne的Hill答案为我确定了答案,因此我在这里没有提供任何新内容,但是以下内容似乎绝对是最短的,也没有任何花哨的工具。

echo '' | pecl install apc
Run Code Online (Sandbox Code Playgroud)

  • 为了达到相同的结果,一个较短的替代方法是:`pecl install apc &lt;&lt;&lt;''` (4认同)