Trouver les applications 32 bits de son Mac
Vous le savez peut être, macOS Catalina, le successeur à Mojave, est disponible depuis aujourd'hui. En dehors de habituelles améliorations (ou régressions) promises par Apple, il y en a une qui affole un peu tout le monde en ce moment : l'optimisation du système pour le 64 bits.
Cette optimisation va permettre, selon Apple, de meilleures performances, en contrepartie, elle est met au rebut l'ensemble des applications 32 bits.
Avant de passer votre système vers Catalina, il est donc judicieux de vérifier si vous avez des applications 32 bits, et surtout si vous vous en servez fréquemment.
Comment faire pour trouver la liste de ses applications 32 bits ?
Vous pourriez lancer TOUTES vos applications, et attendre de voir si le message suivant apparait.
Heureusement, il existe une solution plus simple, et plus rapide.
A partir du menu Pomme :
- A propos de ce Mac
- Rapport Système
- Applications (dans la partie Logiciels)
- Laissez calculer, cela peut prendre du temps.
L'application Informations Système cherche sur l'ensemble de votre Mac, toutes les applications disponibles. Vous obtenez la liste des applications, avec leur nom, leur version, leur source, la date de modifications, et en dernière colonne, si l'application est 64 bits.
En cliquant sur l'en-tête de colonne "64 bits (Intel)", vous trierez les applications par cette valeur, pour grouper les applications qui seront compatibles, avec la valeur Oui, et celles que vous devrez abandonner avec la valeur Non.
Et avec le terminal ?
Parce qu'il est parfois plus facile de passer par le terminal, pour par exemple, vérifier les applications d'un Mac distant via SSH, voici la solution en ligne de commande. Je vais détailler les étapes pour aller de plus en plus précisément.
Pour trouver la liste des applications, il faut passer par la commande system_profiler, qui correspond à l'application Informations Système en ligne de commande. Et nous lui demandons la liste des applications, avec la paramètre SPApplicationsDataType.
system_profiler SPApplicationsDataType
Nous voici avec la longue liste des applications, ainsi que les informations relatives à chacune, identiques à celle de l'application Informations Système.
Pour obtenir la liste réduite des applications 32 bits, nous allons utiliser la commande grep en cherchant la valeur "64-Bit (Intel): No"
system_profiler SPApplicationsDataType | grep "64-Bit (Intel): No"
Nous allons dire que le résultat à cette commande, n'est pas très satisfaisant... Elle ne renvoit, en effet, que les lignes contenant le texte "64-Bit (Intel): No".
Dans les résultats que nous avions au dessus, le nom de l'application, se trouve quelques lignes au dessus, mais est aussi présent en dessous dans le chemin de l'application.
Heureusement pour nous, grep est capable de récupérer quelques lignes au dessus, 6 pour être exacte.
system_profiler SPApplicationsDataType | grep -B6 "64-Bit (Intel): No"
Nous avons bien ici, le résultat souhaité, mais toujours pollué par de nombreuses lignes identiques. Pour ne récupérer que le nom de l'application.
Pour cela nous utiliser une nouvelle fois la commande grep, par dessus la précédente commande grep, avec une expression régulière
system_profiler SPApplicationsDataType | grep -B6 "64-Bit (Intel): No" | grep -Eo "[^:]*:$"
Dans le détail, dans l'expression régulière, nous demandons de récupérer tous les caractères qui ne sont pas le caractère ":" et qui se trouvent devant le caractère ":" juste avant un saut de ligne.
Les paramètre -Eo de grep indique :
- E : utilisation d'une expression régulière
- o : ne retourne que le résultat trouvé dans l'expression régulière et pas la ligne complète
Ici le résultat est quasi parfait. Pour les pinailleurs, qui souhaiterait retirer le ":" final, il suffit de mettre un 3ème grep, en demande tous les caractères sauf le ":".
system_profiler SPApplicationsDataType | grep -B6 "64-Bit (Intel): No" | grep -Eo "[^:]*:$" | grep -Eo "[^:]*"
Je suis sur qu'il y a moyen de réduire la commande mais, pour l'instant, je ne sais pas comment faire.
Si l'on souhaite récupérer le nom du fichier de l'application, il faut passer via une autre solution, en allant chercher les informations une ligne en dessous. L'expression régulière est, du coup, différente. Une des solutions est de chercher tous les caractères accolés qui ne sont pas un "/", qui se fini par ".app" et un saut de ligne.
system_profiler SPApplicationsDataType | grep -A1 "64-Bit (Intel): No" | grep -Eo "[^/]*.app$"
Si vous n'êtes pas fatigué, et que vous souhaitez aller plus loin, cette solution à l'avantage de pouvoir chercher les applications par dossier. En effet, comme nous nous servons de la ligne qui dispose du chemin complet vers l'application, nous pouvons nous en servir.
Ainsi si je ne souhaite avoir que les applications qui se trouvent dans le dossier Applications partagé
system_profiler SPApplicationsDataType | grep -A1 "64-Bit (Intel): No" | grep -E "Location: /Applications/*" | grep -Eo "[^/]*.app$"
En espérant que cela vous serve un petit peu. Un article sur l'utilisation de grep est prévu de longue date, il arrivera peut être, un jour sur le site.