Exactement ce que Marc Wilson a dit . Je n'avais ni Xcode, ni le com.apple.pkg.CLTools_Executables
paquet :
$ pkgutil --pkg-info com.apple.pkg.CLTools_Executables
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
$ pkgutil --pkg-info com.apple.pkg.CLTools_Base
No receipt for 'com.apple.pkg.CLTools_Base' found at '/'.
$ ls /Applications/Xcode.app
ls: /Applications/Xcode.app: No such file or directory
$
Pourtant :
$ clang --version
Apple clang version 12.0.0 (clang-1200.0.32.28)
Target: x86_64-apple-darwin19.6.0
Thread model: posix
InstalledDir: /Library/Developer/CommandLineTools/usr/bin
$ git --version
git version 2.24.3 (Apple Git-128)
$
Confusément, Homebrew fonctionnait sans aucun problème et signalait une version pour Command Line Tools (CLT) lorsque j'ai exécuté brew config
ce qui signifie qu'il pense que les CLT sont installés.
En regardant dans le code Homebrew, j'ai compris que cette méthode détecte la version du CLT :
def detect_version
version = nil
[EXECUTABLE_PKG_ID, MAVERICKS_NEW_PKG_ID].each do |id|
next unless File.exist?("#{PKG_PATH}/usr/bin/clang")
version = MacOS.pkgutil_info(id)[/version: (.+)$/, 1]
return version if version
end
detect_version_from_clang_version
end
où :
-
EXECUTABLE_PKG_ID
est réglé sur com.apple.pkg.CLTools_Executables
-
MAVERICKS_NEW_PKG_ID
est réglé sur com.apple.pkg.CLTools_Base
dans le même fichier. C'est-à-dire qu'il vérifiait la présence de ces paquets, et si aucun n'était trouvé, il exécutait la commande detect_version_from_clang_version
pour détecter la version du CLT.
J'ai utilisé le Interface GitHub pour git blame
sur ce fichier et a compris que le detect_version_from_clang_version
a été ajoutée le cet engagement en remplaçant le detect_clang_version
ligne.
Pour comprendre quand, à son tour, detect_clang_version
a été ajoutée, j'ai commencé à regarder l'historique des livraisons du fichier à partir de cette livraison . En regardant l'historique des livraisons, j'ai remarqué ce message de livraison :
os/mac/xcode : repli sur la version de clang pour détecter CLT.
Pour une raison quelconque pkgutil --pkgs
ne mentionne plus le CLT après le mise à jour du supplément Catalina.
Corrections #6610
J'ai ouvert qui s'engagent et compris qu'en effet c'est l'engagement qui a introduit detect_clang_version
à la ligne detect_version
méthode.
En résumé, il est fort probable que des mises à jour logicielles entraînent la suppression de certains reçus de paquets, bien que ces derniers soient toujours présents.