Ошибка установки PECL после обновления до OSX 10.8

Я только что обновил свою ОС до Mountain Lion, и PECL больше не работает (он на тестовом диске, так что ничего страшного, но я бы хотел, чтобы он работал, чтобы я мог обновить ОС и на своем новом SSD).

Я использую нативную установку PHP, без macports/homebrew или чего-то подобного.

Бег sudo pecl install uploadprogress (например) производит следующий вывод терминала:

downloading uploadprogress-1.0.3.1.tgz ...
Starting to download uploadprogress-1.0.3.1.tgz (9,040 bytes)
.....done: 9,040 bytes
4 source files, building
running: phpize
grep: /usr/include/php/main/php.h: No such file or directory
grep: /usr/include/php/Zend/zend_modules.h: No such file or directory
grep: /usr/include/php/Zend/zend_extensions.h: No such file or directory
Configuring for:
PHP Api Version:
Zend Module Api No:
Zend Extension Api No:
autom4te: need GNU m4 1.4 or later: /usr/bin/m4
ERROR: `phpize' failed

Я предполагаю, что проблема заключается в 3 grep линий. Я обнаружил несколько потоков, которые предполагают, что это вызвано тем, что XCode не устанавливается... но XCode установлен и обновлен до последней версии (4.4). Все соответствующие ссылки на /Developer/usr/bin/* также существуют как они должны.

M4 в настоящее время в версии: m4 (GNU M4) 1.4.13, так что, хотя вышеприведенный вывод содержит относящуюся к нему строку, я не думаю, что это может быть проблемой.

Я уверен, что это просто вопрос, у кого-нибудь есть какие-нибудь подсказки?

4 ответа

Решение

Оказалось что-то смехотворно простое.

m4 теперь находится в /usr/local/bin/m4, что-то (может быть, autom4te?) искал его в /usr/bin/m4. Быстрая символическая ссылка хорошо решила проблему.

Попробуйте установить следующую команду (измените ваш путь соответственно), например:

M4=/Developer/usr/bin/m4 pecl install uploadprogress

Оказывается, вам может понадобиться согласиться с условиями XCode для M4. Для этого запустите:

sudo m4 version

и если вы запускаете его впервые после обновления, вам будет предложено прочитать и принять условия и положения. После этого вы можете использовать его, повторно выполнив ранее желаемую команду.

Это заняло у меня много времени, но вот как я это решил:

  • Бежать:

    which autom4te
    
  • дает вам путь autom4te , В моем случае это было: /Applications/MAMP/Library/bin/autom4te

  • Идите по этому пути и посмотрите, есть ли программа m4

  • Если это так, это может быть повреждено. Так что переименуйте это:

    mv m4 m4_old
    
  • Теперь проверьте, где находится ваша новая версия m4. Итак, бегите:

     which m4
    

Это дает вам: /path/to/your/m4

  • Теперь найдите символическую ссылку в папке вашего autom4te к первоначальному пути m4 , так:

     ln -s /path/to/your/m4
    

Теперь должно работать, работает pecl

Другие вопросы по тегам