Sauf que cette fois, tout cela a échoué lamentablement, car la phase de configuration se terminait avec le message d’erreur suivant :
configure: error: Please reinstall libedit - I cannot find readline.h
En clair, il me manquait une dépendance, à savoir libedit
, pour pouvoir compiler PHP.
Or, cette dépendance est normalement livrée en standard avec OS X, et il n’y avait à priori aucune raison pour que la compilation échoue.
Sauf qu’Apple a modifié un certain nombre de choses dans les outils de développement de son système d’exploitation entre Lion, son avant-dernière version, et Mavericks, la dernière version en date que j’utilise.
En effet, depuis cette version, le répertoire /usr/include
qui contient normalement les liens symboliques nécessaires à la résolution des dépendances lors d’une compilation est vide par défaut !
Et pour le remplir, il faut exécuter la très intuitive et évidente commande xcode-select --install
dans un terminal car cette dernière déclenche l’installation des command line tools
qui prend en charge la création des liens symboliques manquants…
J’avoue avoir mis plus d’une heure à trouver cette solution, car je n’ai trouvé que très peu d’informations récentes relatives à mon problème et de plus aucune ne faisait le lien entre lui et le fait que les outils en ligne de commande pour les développeurs ne sont plus livrés en standard par Apple avec son système et j’ai donc beaucoup tâtonné avant de trouver cette solution.
C’est la raison pour laquelle j’ai écrit ce billet afin de faire gagner du temps à ceux qui se retrouveront avec le même problème, que ce soit en compilant PHP ou tout autre code source.
9 réactions
1 De Julien Breux - 04/12/2013, 14:22
En utilisant Boxen de GitHub pour la configuration globale du parc orientée dev.
Il faut également utiliser cette commande pour installer les "xcode-command-line-tools".
Apple devrait les mettre de base, nous gagnerions tous du temps.
2 De Pym - 05/12/2013, 17:11
Quel est l'intérêt de compiler PHP sur son système de nos jours ? (à part le polluer, je vois pas). Pourquoi ne pas plutôt virtualiser ton environnement de dév avec Vagrant ? Avec des outils comme https://puphpet.com/, faire une box clean ne prend que quelques minutes.
3 De mageekguy - 06/12/2013, 10:52
@Pym : Tout d'abord, quand tu fais ce qu'il faut, tu ne pollue rien, et ensuite, la virtualisation ne te permet pas d'avoir une version de PHP sur-mesure, ce qui est mon objectif avec la compilation.
À un moment ou un autre, à moins qu'un furieux n'est réalisée TOUTES les versions de PHP possible combinant toutes ses options de compilation et les ait rendu disponible au public, tu es forcé de compiler.
Alors ok, tu as moins de risque de polluer comme tu le dis ton système avec une machine virtuelle, mais quand tu te lances dans ce genre de chose, tu sais généralement ce que tu fais.
Et de plus, les ressources nécessaires au bon fonctionnement d'une machine virtuelle (espace disque, RAM, CPU) ne sont pas forcément disponibles.
4 De jeremyFreeAgent - 09/12/2013, 17:59
php -i | grep configure
plutôt que de chercher dans son historique
5 De mageekguy - 10/12/2013, 10:35
@jeremyFreeAgent : Apprends à lire
6 De bouks - 10/12/2013, 12:18
Je ne comprends pas.
L'extension filter est par défaut installée avec PHP. Quel est l'intérêt de l'avoir désactivée ?
Concernant la virtualisation, c'est à mon avis la meilleure solution, car elle permet (justement) d'avoir facilement plusieurs environnements. Maintenant je ne vois pas de quoi tu parles par "ressources nécessaires au bon fonctionnement d'une machine virtuelle". 1 à 2Go de ram suffisent largement pour une VM de dev. Quant à l'espace disque et les performances du CPU, soyons sérieux, ça m'étonnerait que tu n'aies pas assez d'espace ou que tu mettes ton pc à genou avec PHP...
7 De mageekguy - 10/12/2013, 16:55
@bouks : Ce n'est pas parce que tu ne comprends pas que cela ne sert à rien.
Supprimer de PHP les extensions inutilisées est un bon moyen de gagner à peu de frais en performance et en occupation mémoire, et en fonction de l'environnement d'exécution ou de l'objectif recherché pour le code, cela peut être très pertinent.
Et sur un MacBook Air avec 4Go de RAM et 128Go de disque, je peux t'assurer que les ressources peuvent être une denrée très rare, en fonction de l'utilisation que l'on en a, et que la virtualisation peut ne pas être une option.
Quand à mettre un PC a genoux avec PHP, cela n'a rien d'impossible et je suis parfaitement capable de saturer l'ensemble des cœurs d'un processeur moderne aussi bien avec PHP ou tout autre langage que je maîtrise un minimum.
Encore une fois, tout dépends de ce que l'on fait et de comment on peut ou veut le faire, et il ne faut surtout pas juger quelque chose à l'aune de ses propres besoins et contraintes, car nos problématiques ne sont probablement les mêmes que notre voisin, pour tout un tas de raisons.
Le faire, c'est donc courir le risque de se prendre une grosse baffe physique, verbale ou… écrite
8 De bouks - 10/12/2013, 18:53
Excuses-moi, mais je n'ai jamais dit que cela ne servait à rien. Je te demandais pourquoi.
Maintenant si tu interprètes à ta guise pour "casser" les gens qui pourrait ne pas être en accord avec toi...
Que tu sois capable de saturer un pc avec PHP, c'est bien et grand bien te fasse.
Et pour finir, quand tu auras les chevilles qui auront désenflé, fais-moi signe, on pourra peut-être discuter.
9 De mageekguy - 11/12/2013, 09:41
@bouks : Excuse-moi, mais tu as écrits :
Quand tu écrits ça, je comprends que tu penses que cela ne sert à rien de désactiver l'extension en question.
Et j'avoue ne pas trouver une autre interprétation, malgré mes efforts, d'autant que tu as ajoutés par la suite :
J'ajoute que ne pense pas t'avoir
, comme tu le dis, puisque je t'ai fourni l'explication que tu demandais, même si je l'ai certes agrémenté d'un conseil que tu sembles ne pas avoir apprécié.Je vais donc me permettre de conclure en te paraphrasant : pour finir, quand tu seras plus ouvert d'esprit, fais-moi signe, on pourra peut-être discuter.