2015-10-01 4 views
0

Я пытаюсь создать RPM для простого развертывания модуля geoip php на машинах AWS. RPM, наряду с другими, будет размещаться на частном репо, доступном только для этих машин. Это требование программного обеспечения, которое я использую, поэтому давайте оставим его на Мне это нужно.Не удается найти .so при попытке построить rpm для модуля расширения php pecl (geoip)

Моя первая попытка была

$ pecl makerpm geoip 
WARNING: "pear makerpm" is no longer available; an improved version is available via "pear make-rpm-spec", which is available by installing PEAR_Command_Packaging 

Справедливо, давайте установим этот PEAR_Command_Packaging сделку и продолжить ...

$ pecl install PEAR_Command_Packaging 
No releases available for package "pecl.php.net/PEAR_Command_Packaging" 
install failed 

Хорошо, я мог бы поклясться, мне сказали, чтобы установить это, но давайте попробуем pear:

$ pear install PEAR_Command_Packaging 
Failed to download pear/PEAR_Command_Packaging within preferred state "stable", latest release is version 0.3.0, stability "alpha", use "channel://pear.php.net/PEAR_Command_Packaging-0.3.0" to install 
install failed 

Стабильность alpha Хмм ... хорошо, посмотрим, насколько они активны! По данным their site проект не активирован, и последняя активность была в апрель 2012 ... это не будет сделано.

С этой аллеей закрыт, я смотрю на самом pecl команды, которая, кажется, предлагает скачать, сборки и установить. Я не хочу install, потому что я только что делает RPM здесь, но download и build уверен выглядеть удобно:

$ pecl download geoip-1.0.8 
downloading geoip-1.0.8.tgz ... 
Starting to download geoip-1.0.8.tgz (10,061 bytes) 
.....done: 10,061 bytes 
File /home/user/workspace/geoip-rpm-spec/geoip-1.0.8.tgz downloaded 

Prep его для создания ...

$ pecl bundle geoip 
downloading geoip-1.0.8.tgz ... 
Starting to download geoip-1.0.8.tgz (10,061 bytes) 
.....done: 10,061 bytes 
Package ready at '/home/user/workspace/geoip-rpm-spec/geoip' 

Теперь мы строим!

$ pecl build geoip/package.xml 
running: phpize 
Configuring for: 
PHP Api Version:   20131106 
Zend Module Api No:  20131226 
Zend Extension Api No: 220131226 
building in /var/tmp/pear-build-userttUJNa/geoip-1.0.8 
... <snip/> 
running: find "/var/tmp/pear-build-userttUJNa/install-geoip-1.0.8" | xargs ls -dils 
264791 4 drwxrwxr-x 3 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8 
265361 4 drwxrwxr-x 3 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr 
265362 4 drwxrwxr-x 3 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64 
265363 4 drwxrwxr-x 3 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64/php 
265409 4 drwxrwxr-x 3 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64/php/5.6 
265444 4 drwxrwxr-x 2 user user 4096 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64/php/5.6/modules 
265358 68 -rwxr-xr-x 1 user user 67772 Oct 1 18:33 /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64/php/5.6/modules/geoip.so 

Итак, я должен быть в состоянии найти мой geoip.so в /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8/usr/lib64/php/5.6/modules/geoip.so, верно?

$ ls -al /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8 
ls: cannot access /var/tmp/pear-build-userttUJNa/install-geoip-1.0.8: No such file or directory 
$ ls -al /var/tmp/pear-build-userttUJNa 
ls: cannot access /var/tmp/pear-build-userttUJNa: No such file or directory 

WRONG!

Где находится .so, что претензия build требует создать? На этом компьютере нет файла. Единственный способ, которым я смог получить проклятый .so, был запущен командой install, но этот не является машиной, которая нуждается в модуле.

Я делаю что-то неправильно здесь?

ответ

0

Update: Чуть более Googling оказался с ответом. Я использую здесь geoip, потому что это то, с чем я работаю, но вы можете использовать его для любого расширения с незначительной модификацией.

  1. pecl download geoip-1.0.8, чтобы загрузить исходный код (или другое расширение, или другой вариант)
  2. pecl bundle geoip извлечь код расширения
  3. cd geoip && phpize переключатель к исходному директории и создать AUTOCONF скрипты
  4. ./configure --prefix=/home/user/rpmbuild/blah --exec-prefix=/home/user/rpmbuild/bleh настроить
  5. make.so находится в каталоге modules
  6. Прибыль!

Это старый, Hacky метод:

Что, кажется, работает (на данный момент), чтобы запустить шаг сборки, так что загруженный модуль заполняется configure скрипт, переключитесь каталога модулей и запустите configure --prefix=some_local_dir, а затем запустите make. Теперь я могу увидеть файл geoip.so, но это похоже на трюк/обходной путь, чем фактическое решение.

Смежные вопросы