Instalar módulos PECL sin las indicaciones

3 minutos de lectura

avatar de usuario
ObiHill

Acabo de instalar PHP en Ubuntu Natty desde la fuente.

Estoy tratando de usar PECL para instalar módulos adicionales como APC y Memcache. Estoy usando algo como esto:

pecl install apc

Sin embargo, recibo mensajes que me piden que confirme cosas.

¿Cómo puedo usar el comando pecl para aceptar los valores predeterminados? Vi algo como esto en un tablero de mensajes: printf "yes\n" | pecl install pecl_http. Sin embargo, en el caso de APC, esto respondería sí para cosas donde el valor predeterminado es no (creo).

Gracias por adelantado.

  • @Gordon: Lo intenté pero no parece haber un identificador para lo que necesito.

    – Obi Hill

    15 de noviembre de 2011 a las 19:37

  • Para el caso en que los valores predeterminados sean aceptables, en el modo no interactivo, no se requiere el indicador PECL. Por ejemplo, si agrega a un Dokefile RUN pecl install apcen el momento de la compilación, obtendrá los valores predeterminados seleccionados automáticamente.

    – Dereckson

    21 de abril de 2015 a las 22:08


El siguiente código parece funcionar bien:

printf "\n" | pecl install apc

También puede reemplazar apc con cualquier otro paquete PECL.

Salud.

  • También estoy viendo el éxito con yes | pecl install memcache — aunque supongo que su solución funciona mejor para paquetes donde el valor predeterminado es algo distinto a “sí”

    – Frank Granjero

    9 oct 2013 a las 16:41


  • Gracias amigo, esto incluso funcionó con CírculoCI

    – Jujhar Singh

    13 de agosto de 2014 a las 15:46

avatar de usuario
tom boutel

El comando “sí” puede hacer más que simplemente escribir “sí”; puede escribir lo que quieras, una y otra vez. Incluir una línea vacía, que es una buena manera de aceptar los valores predeterminados.

Solo necesitaba esto yo mismo, así que esto es lo que funcionó bien para mí:

yes '' | pecl install -f apc

  • Gracias por el aporte, Tomás. ¿Tu código estaba destinado a ser "yes\n" | pecl install -f apc?!

    – Obi Hill

    12 de febrero de 2014 a las 7:39

  • @ObinwanneHill: Tom se refería a la yes dominio. El beneficio de esto sobre printf es que genera resultados repetidamente, lo que lo hace más portátil en caso de que el instalador de pecl solicite preguntas adicionales a las del script printf esperado.

    – jmikola

    9 de abril de 2014 a las 6:53

  • @jmikola Oh, ya veo, no estaba familiarizado con ese comando. Gracias

    – Obi Hill

    9 de abril de 2014 a las 7:03


La respuesta de Obinwanne’s Hill me clavó, por lo que no estoy proporcionando nada nuevo aquí, pero lo siguiente parece ser el más corto absoluto también sin herramientas sofisticadas.

echo '' | pecl install apc

  • Una alternativa más corta para lograr el mismo resultado es: pecl install apc <<<''

    – Guss

    16 de mayo de 2017 a las 7:57

  • Puedes ir aún más corto echo | pecl install apc, sin el ”. ¡¡Salud!!

    – Juan Siú

    1 de febrero a las 6:12

Si no desea dar la misma respuesta para cada solicitud (“sí”, “no” o “”), puede usar --configureoptions para establecer valores específicos para cada opción (consulte la Manual PECL).

Querrá encontrar el archivo package.xml de su paquete para ver qué opciones se pueden configurar. Como ejemplo, para el memcached paquete, irías aquí:

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

Busca el <configureoption> etiquetas, que en este caso son:

<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"/>

Luego puede pasar estas opciones junto con el comando de instalación de la siguiente manera:

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

¿Ha sido útil esta solución?