Instale os módulos PECL sem os prompts

91

Acabei de instalar o PHP no Ubuntu Natty da fonte.

Estou tentando usar o PECL para instalar módulos adicionais como APC e Memcache. Estou usando algo assim:

pecl install apc

No entanto, recebo solicitações pedindo para confirmar as coisas.

Como posso usar o comando pecl apenas para aceitar os padrões? Eu vi algo assim em uma placa de mensagem: printf "yes\n" | pecl install pecl_http. Porém, no caso do APC, isso responderia sim para coisas em que o padrão é não (eu acho).

Desde já, obrigado.

Obinwanne Hill
fonte
1
@Gordon: Eu tentei isso, mas não parece haver um controle para o que preciso.
Obinwanne Hill de
1
Para o caso em que os valores padrão são aceitáveis, no modo não interativo, o prompt PECL não é necessário. Por exemplo, se você adicionar a um Dockefile RUN pecl install apc, no momento da construção, você obterá os valores padrão selecionados automaticamente.
Dereckson

Respostas:

83

O código a seguir parece funcionar bem:

printf "\n" | pecl install apc

Você também pode substituir o apc por qualquer outro pacote PECL.

Felicidades.

Obinwanne Hill
fonte
8
Também estou tendo sucesso com yes | pecl install memcache- embora eu suponha que sua solução funcione melhor para pacotes em que o padrão é algo diferente de "sim"
Frank Farmer,
1
Obrigado cara, isso até funcionou com CircleCI
Jujhar Singh
79

O comando "sim" pode fazer mais do que apenas digitar "sim"; ele pode digitar o que você quiser, indefinidamente. Incluindo uma linha vazia, que é uma boa maneira de aceitar padrões.

Eu só precisava disso, então aqui está o que funcionou bem para mim:

yes '' | pecl install -f apc
Tom Boutell
fonte
Obrigado pela contribuição, Tom. O seu código era para ser "yes\n" | pecl install -f apc?!
Obinwanne Hill
4
@ObinwanneHill: Tom estava se referindo ao yescomando. O benefício disso printfé que ele gera saída repetidamente, o que o torna mais portátil caso o instalador pecl solicite perguntas adicionais do que o seu script printfesperava.
jmikola
@jmikola Oh, entendo, não estava familiarizado com esse comando. Obrigado
Obinwanne Hill
8

A resposta da Colina de Obinwanne acertou em cheio para mim, então não estou fornecendo nada de novo aqui, mas o seguinte parece ser o mais curto absoluto, também sem nenhuma ferramenta sofisticada.

echo '' | pecl install apc
Ian Bytchek
fonte
6
Uma alternativa mais curta para obter o mesmo resultado é:pecl install apc <<<''
Guss