“Pecl install oci8” çalıştırmak için Bash betiği


3

Bir serseri vm'nin ilk hazırlığını yapacak bir kabuk betiği oluşturmaya çalışıyorum (çalışan Ubuntu 12.04). Her şey (php, apache, oracle instantclient, vb) yükleme, son adım hariç, iyi çalışıyor - php oci8 uzantısını yükleme:

pecl install oci8

Bu komutu manuel olarak çalıştırdığımda (sudo öneki ile) iyi çalışıyor. Ancak script bu komutu çalıştırdığında şöyle başarısız olur:

running: make
/bin/bash /tmp/pear/temp/pear-build-rootG74SsU/oci8-2.0.6/libtool --mode=compile cc  -I. -I/tmp/pear/temp/oci8 -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootG74SsU/oci8-2.0.6/include -I/tmp/pear/temp/pear-build-rootG74SsU/oci8-2.0.6/main -I/tmp/pear/temp/oci8 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64  -DHAVE_CONFIG_H  -g -O2   -c /tmp/pear/temp/oci8/oci8.c -o oci8.lo
libtool: compile:  cc -I. -I/tmp/pear/temp/oci8 -DPHP_ATOM_INC -I/tmp/pear/temp/pear-build-rootG74SsU/oci8-2.0.6/include -I/tmp/pear/temp/pear-build-rootG74SsU/oci8-2.0.6/main -I/tmp/pear/temp/oci8 -I/usr/include/php5 -I/usr/include/php5/main -I/usr/include/php5/TSRM -I/usr/include/php5/Zend -I/usr/include/php5/ext -I/usr/include/php5/ext/date/lib -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/temp/oci8/oci8.c  -fPIC -DPIC -o .libs/oci8.o
In file included from /tmp/pear/temp/oci8/oci8.c:48:0:
/tmp/pear/temp/oci8/php_oci8_int.h:60:17: fatal error: oci.h: No such file or directory
compilation terminated.
make: *** [oci8.lo] Error 1
ERROR: `make' failed

peclKomut kurulum başında bir yolu sorar, ben de sorunu olduğunu düşünüyorum budur:

Please provide the path to the ORACLE_HOME directory. Use 'instantclient,/path/to/instant/client/lib' if you're compiling with Oracle Instant Client [autodetect] :

Kurulumun devam etmesi için ORACLE_HOME dizinini sağlamanız veya tuşuna basın Enter. Başka bir yerde önerilen aşağıdakileri denedim, ancak işe yaramadı - çıktıda satır sonu yok ( peclkomutu el ile çalıştırdığınızda karşılaştırıldığında ) bu nedenle Entertuşa uygun şekilde öykünmüyor :

printf "\n" | pecl install oci8

Bunun düzgün çalışmasını nasıl sağlayabilirim?


Deneyebilir echo autodetect | pecl install oci8misin
GnP

@gnp Bunu denedim ve ayrıca printf "autodetect"yardım etmedim.
Samuel Lindblom

Yanıtlar:


2

Benim çözümüm şu komutu çalıştırmaktı:

export C_INCLUDE_PATH=/usr/include/oracle/11.2/client

ve yeniden başlatın:

pecl insatlla oci8

2

Genellikle bu tür bir kurulum için, ayarlamak istediğiniz parametrelere eko yapabilirsiniz. Sudo izinleriyle çalıştırılabilmesi için tüm ifadeyi tamamladım.

sudo sh -c "echo 'instantclient,/opt/oracle/instantclient' | pecl install oci8"

1

Bu soruna gerçekten genel bir amaç bulamadım. Özel senaryomda (Vagrant aracılığıyla tedarik) çalışmak, Shell tedarikçisinden sonra Vagrant konfigürasyonunda belirtmeniz gerektiğinden kolay olan bu özel tedarik adımı için bir Kukla bildirimi kullanıyordu:

"pecl-install-oci8":
    command => "pecl install oci8",
    user => root,
    timeout => 0,
    tries   => 5,
    unless => "/usr/bin/php -m | grep -c oci8";

Bazı nedenlerle henüz çözemedim, kukla oci8'i sorunsuz bir şekilde kuruyor.

Ve bunu yaptığımda, bütün senaryoyu bir Kukla tezahürüne aktardım, ama bu konu dışı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.