Aujourd’hui, je mets à jour un de mes plugins WordPress sur le dépôt officiel, et Subversion décide soudainement de ne plus répondre sous macOS.
La commande habituelle :
svn stat
renvoie simplement :
-bash: svn: command not found
Ou, selon la version de macOS et l’état de Homebrew, on peut tomber sur une erreur plus spectaculaire :
dyld: Symbol not found: _apr_crypto_block_cleanup
Referenced from: /usr/local/Cellar/subversion/1.14.x/lib/libsvn_subr-1.0.dylib
Expected in: /usr/lib/libaprutil-1.0.dylib
Abort trap: 6Code language: JavaScript (javascript)
Ah tiens, il y avait longtemps. Entre macOS, Xcode, les Command Line Tools et Homebrew, la chaîne d’outils développeur a parfois le sens du timing. Généralement, le problème vient d’une mise à jour qui a supprimé ou cassé le binaire svn, ou d’une dépendance Homebrew mal liée.
Voici comment remettre Subversion en état sur macOS, proprement, sans perdre une heure à insulter son terminal. Même si, soyons honnêtes, il l’a un peu cherché.
Pourquoi SVN disparaît sous macOS ?
Pendant longtemps, macOS et Xcode fournissaient plusieurs outils de développement en ligne de commande, dont Subversion. Ce n’est plus forcément le cas aujourd’hui.
Apple a retiré le support des outils Subversion fournis avec certaines versions des Command Line Tools. On trouve encore des rapports d’utilisateurs indiquant que la commande svn n’est plus fournie après mise à jour de Xcode ou des Command Line Tools. Voir cette discussion sur la disparition de SVN dans les Command Line Tools.
Résultat : si vous utilisez SVN pour publier un plugin WordPress sur WordPress.org, pour maintenir un vieux dépôt, ou pour interagir avec une base de code historique, il faut installer Subversion séparément.
La méthode la plus simple sur macOS consiste à passer par Homebrew.
Vérifier si svn est installé
Commencez par vérifier si la commande svn existe :
command -v svn
Puis vérifiez la version :
svn --version
Si le terminal répond :
svn: command not foundCode language: HTTP (http)
ou :
-bash: svn: command not found
alors Subversion n’est pas disponible dans votre PATH, ou il n’est tout simplement pas installé.
Installer Subversion avec Homebrew
Si Homebrew est installé, la commande est simple :
brew install subversion
Le dépôt Homebrew fournit une formule subversion, ce qui en fait aujourd’hui l’une des méthodes les plus pratiques pour récupérer svn sous macOS. Voir la formule Homebrew Subversion.
Besoin d'un coup de main ?
Ce bug qui traîne depuis des semaines, ce plugin qui casse votre mise en page, cette fonctionnalité que personne n'arrive à implémenter proprement — c'est exactement ce que je règle au quotidien depuis 20 ans.
Parlons de votre problème →Une fois l’installation terminée, ouvrez un nouveau terminal ou rechargez votre shell, puis testez :
svn --version
svn stat
Si vous êtes dans une copie de travail SVN, svn stat doit afficher les fichiers modifiés, ajoutés ou supprimés. Si rien n’est modifié, la commande peut ne rien afficher. C’est bon signe. Oui, parfois l’absence de réponse est une réponse civilisée.
Vérifier le PATH Homebrew
Si brew install subversion réussit mais que svn reste introuvable, le problème vient probablement du PATH.
Vérifiez où Homebrew installe ses binaires :
brew --prefix
brew --prefix subversion
brew list subversionCode language: PHP (php)
Sur Mac Intel, Homebrew utilise souvent :
/usr/local/bin
Sur Apple Silicon, Homebrew utilise généralement :
/opt/homebrew/bin
Vérifiez votre PATH :
echo "$PATH"Code language: PHP (php)
Si /opt/homebrew/bin ou /usr/local/bin n’apparaît pas, ajoutez Homebrew à votre shell.
Pour Apple Silicon avec Zsh :
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"Code language: PHP (php)
Pour Mac Intel avec Zsh :
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"Code language: PHP (php)
Puis relancez :
command -v svn
svn --version
Corriger l’erreur dyld “Symbol not found: _apr_crypto_block_cleanup”
Après installation, il peut arriver que svn soit trouvé, mais plante immédiatement avec une erreur dyld :
dyld[62247]: Symbol not found: _apr_crypto_block_cleanup
Referenced from: /usr/local/Cellar/subversion/1.14.2/lib/libsvn_subr-1.0.dylib
Expected in: /usr/lib/libaprutil-1.0.dylib
Abort trap: 6Code language: JavaScript (javascript)
Cette erreur indique un conflit ou une mauvaise liaison autour d’APR/APR-util, une dépendance utilisée par Subversion. On retrouve ce problème dans plusieurs rapports Homebrew et discussions techniques autour de Subversion sur macOS. Voir une discussion Homebrew sur l’erreur _apr_crypto_block_cleanup.
La correction la plus simple consiste à réinstaller apr-util, puis éventuellement Subversion :
brew reinstall apr-util
brew reinstall subversion
Ensuite, vérifiez :
svn --version
Si tout va bien, svn doit afficher sa version et les modules disponibles.
Mettre Homebrew à jour avant de réinstaller
Si l’erreur persiste, commencez par mettre Homebrew à jour et vérifier l’état de l’installation :
brew update
brew doctor
Puis relancez une réinstallation complète des dépendances utiles :
brew reinstall apr
brew reinstall apr-util
brew reinstall subversion
Si Homebrew signale des problèmes de permissions, de préfixe ou de liens cassés, corrigez-les avant d’insister. Sinon, vous risquez de refaire trois fois la même installation en espérant un résultat différent. Le terminal adore ce genre d’optimisme.
Forcer le relink si nécessaire
Dans certains cas, les liens Homebrew peuvent être cassés. Vous pouvez tenter :
brew unlink subversion
brew link subversion
Si Homebrew refuse à cause de fichiers existants :
brew link --overwrite subversion
Vérifiez ensuite quel binaire est utilisé :
which svn
ls -l "$(which svn)"
svn --versionCode language: JavaScript (javascript)
Le chemin doit pointer vers Homebrew, par exemple /opt/homebrew/bin/svn ou /usr/local/bin/svn.
Réparer les Command Line Tools si macOS s’emmêle
Si vous obtenez un message du type :
svn: error: The subversion command line tools are no longer provided by XcodeCode language: HTTP (http)
ou si macOS semble utiliser un ancien wrapper Apple au lieu du binaire Homebrew, vérifiez les outils Xcode :
xcode-select -p
xcode-select --install
Ensuite, assurez-vous que le binaire Homebrew passe avant les chemins Apple dans votre PATH :
type -a svn
echo "$PATH"Code language: PHP (php)
Si /usr/bin/svn apparaît avant Homebrew, votre shell risque d’appeler le mauvais binaire ou un stub Apple obsolète. Corrigez l’ordre du PATH dans ~/.zprofile ou ~/.zshrc.
Solution rapide
Dans la majorité des cas, cette séquence suffit :
brew update
brew install subversion
brew reinstall apr-util
brew reinstall subversion
command -v svn
svn --version
Sur une machine Apple Silicon, si svn reste introuvable, ajoutez Homebrew au PATH :
echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"Code language: PHP (php)
Sur Mac Intel :
echo 'eval "$(/usr/local/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/usr/local/bin/brew shellenv)"Code language: PHP (php)
Tester SVN dans un dépôt WordPress.org
Une fois Subversion réparé, retournez dans votre copie de travail WordPress.org :
cd /chemin/vers/votre-plugin-svn
Puis testez :
svn stat
Exemple de retour attendu :
M trunk/better-comments.php
M trunk/changelog.txt
M trunk/composer.lock
M trunk/includes/options.php
M trunk/readme.txt
M trunk/vendor/composer/ClassLoader.php
Si vous voyez vos fichiers modifiés, SVN fonctionne à nouveau.
WordPress.org utilise toujours Subversion pour le dépôt officiel des plugins. La documentation officielle du Plugin Handbook explique le workflow SVN pour publier et maintenir une extension dans le répertoire WordPress.org. Voir la documentation WordPress.org sur Subversion.
Commandes SVN utiles pour un plugin WordPress
Pour mémoire, voici les commandes les plus utiles quand on maintient un plugin WordPress sur le dépôt officiel.
Voir l’état des fichiers :
svn stat
Ajouter de nouveaux fichiers :
svn add chemin/du/fichier.php
Supprimer un fichier suivi :
svn delete chemin/du/fichier.phpCode language: JavaScript (javascript)
Voir les différences :
svn diff
Envoyer les changements :
svn commit -m "Update plugin files"Code language: JavaScript (javascript)
Créer un tag de version :
svn cp trunk tags/1.2.3
svn commit -m "Tag version 1.2.3"Code language: JavaScript (javascript)
Plusieurs tutoriels récents sur le workflow WordPress.org rappellent encore ce passage obligé par SVN pour publier les plugins. Voir un exemple de workflow SVN pour plugin WordPress.
Nettoyer une installation Homebrew trop cassée
Si rien ne fonctionne, vérifiez d’abord ce que Homebrew raconte :
brew doctor
brew config
Sur certains systèmes, les problèmes viennent d’un préfixe Homebrew non standard, d’une migration Intel vers Apple Silicon, d’un vieux /usr/local conservé, ou d’un mélange entre Rosetta et ARM.
Homebrew a déjà signalé que certaines bouteilles binaires dépendent du préfixe attendu et que les installations avec un préfixe non standard peuvent provoquer des problèmes. Voir cette discussion Homebrew sur les préfixes non standards.
Sur Apple Silicon, évitez de mélanger sans raison un Homebrew Intel sous Rosetta dans /usr/local et un Homebrew ARM dans /opt/homebrew. Cela peut fonctionner, mais cela peut aussi transformer une simple commande svn en chasse au trésor dynamique.
Résumé rapide
Pour réparer SVN sur macOS :
- vérifiez si
svnexiste aveccommand -v svn; - installez Subversion avec
brew install subversion; - corrigez le
PATHsi le binaire reste introuvable ; - réinstallez
apr-utilsi vous avez l’erreur_apr_crypto_block_cleanup; - réinstallez Subversion si nécessaire ;
- vérifiez avec
svn --version; - retournez dans votre dépôt et lancez
svn stat.
La séquence courte :
brew update
brew install subversion
brew reinstall apr-util
brew reinstall subversion
svn --version
Conclusion
Si Subversion ne répond plus sous macOS, le problème vient généralement d’un binaire absent, d’un PATH incomplet ou d’une dépendance Homebrew cassée.
Pour une erreur svn: command not found, installez Subversion avec Homebrew et vérifiez que le chemin Homebrew est bien chargé par votre shell.
Pour l’erreur dyld: Symbol not found: _apr_crypto_block_cleanup, réinstallez apr-util, puis Subversion.
Une fois svn --version fonctionnel, votre workflow de publication WordPress.org peut reprendre normalement. Et avec un peu de chance, vous pourrez enfin faire ce que vous étiez venu faire au départ : publier votre plugin, pas débugger votre Mac.
Sources utiles
- Homebrew : formule Subversion
- Homebrew : site officiel
- Homebrew discussion : erreur _apr_crypto_block_cleanup avec Subversion
- Homebrew discussion : préfixe non standard et bouteilles binaires
- Stack Overflow : SVN retiré des Command Line Tools macOS
- WordPress Plugin Handbook : utiliser Subversion
- Workflow SVN récent pour publier un plugin WordPress
Un projet WordPress en tête ?
Vous avez une idée claire de ce que vous voulez, mais pas les ressources en interne pour le faire bien. Je développe des sites et extensions WordPress sur-mesure — sans délais à rallonge ni mauvaises surprises.
Décrivez-moi votre projet →