Ошибка установки 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