Voici une solution de contournement étape par étape pour Google Drive v49 (peut ne pas fonctionner dans les futures versions) :
- Quittez Google Drive (cliquez sur l'icône Google Drive dans la barre de menu, puis sur la roue dentée, et enfin sur Quitter).
- Sauvez ce fichier quelque part comme
change_gdrive_smb_port.py
(ex : curl -LO https://gist.githubusercontent.com/emersonford/85cc74f7f90c81d1b75c3c246124591d/raw/442834222e2aaa2be61badb6e84f53183ee10624/change_gdrive_smb_port.py
).
- Lisez vous-même le script pour vous assurer qu'il peut être exécuté en toute sécurité.
- Exécuter ce script avec
python3 change_gdrive_smb_port.py
. Il vous donnera quelques indications lorsqu'il aura trouvé un compte et sur quel port modifier le port SMB de ce compte. Ces ports doivent être des ports inutilisés sur votre système.
- Relancez Google Drive.
- Exécuter le
mdutil -i on
la commande script crache.
- Laissez à Spotlight le temps de tout indexer dans Google Drive. Il devrait maintenant rester activé !
Si mon script casse Google Drive ou si vous souhaitez réinitialiser cette modification, il vous suffit de supprimer core_feature_config
de ~/Library/Application Support/Google/DriveFS/<ACCOUNT_NUM>
et redémarrez Google Drive.
EDIT : Ce n'est pas aussi permanent que je le pensais. Il semble que Google puisse pousser à distance des changements dans le fichier "feature_config", ce qu'ils ont fait une fois par jour d'après ce qu'ils ont vu. Quand ils poussent des changements, ils finissent par écraser les changements que mon script a fait à core_feature_config
...
Au minimum, vous pouvez toujours réexécuter le script et redémarrer Google Drive (enchaînez-le avec pkill "Google Drive" && sleep 5 && echo "yes\n[PORT_NUM]" | python3 change_gdrive_smb_port.py && open /Applications/Google\ Drive.app
). Ce n'est pas génial, mais cela préserve la base de données de l'index Spotlight, de sorte que vous n'avez pas à attendre / gaspiller des cycles CPU pour réindexer à chaque fois.
Je mettrai à nouveau à jour cette page si je trouve une solution de contournement !
Explication technique
Google Drive avait l'habitude d'utiliser un FUSE appelé DriveFS sur MacOS, qui semble avoir intégré la prise en charge de l'indexation Spotlight. Il semble -- et ce n'est qu'une spéculation de ma part car je ne suis pas un employé de Google -- qu'ils ont eu beaucoup de mal à l'intégrer aux nouveaux Macs M1, d'après ce qui suit article . Même sans cela, les implémentations de FUSE ont tendance à être vraiment difficiles à maintenir, donc je ne les blâmerais pas de vouloir s'en éloigner.
Je suppose que dans le cadre du déploiement de Google Drive pour tout le monde, ils voulaient s'assurer que tout le monde pouvait utiliser Google Drive sans avoir à se soucier des extensions du noyau. Ils semblent donc avoir migré le système de fichiers de Google Drive vers une implémentation de serveur Samba, puis monté ce dernier avec le client Samba intégré de MacOS (d'où la raison pour laquelle vous voyez maintenant 'localhost' monté dans Network). C'est plutôt malin si vous voulez mon avis !
Le problème de Spotlight est double. Premièrement, Apple désactive par défaut Spotlight sur les lecteurs réseau (probablement à juste titre), ce qui signifie que vous devez maintenant activer manuellement Spotlight sur Google Drive.
Deuxièmement, Google Drive définit la liaison du port du serveur Samba sur -1, ce qui signifie que le système d'exploitation choisit un port disponible aléatoire pour vous. Je ne sais pas quand cela a changé, mais Spotlight ne place plus son index dans le dossier Root avec le nom Spotlight-V100
. Tous les index de Spotlight sont maintenant stockés dans /var/db/Spotlight-V100
; de plus, pour les lecteurs réseau, cet index est nommé de la manière suivante smb%3A%2F%2FDRIVE@localhost%3A59999%2FGoogle%2520Drive
. Si vous regardez bien, le numéro de port du lecteur réseau fait partie du nom de l'index Spotlight. C'est pourquoi l'indexation Spotlight semble se désactiver d'elle-même après un certain temps. Lorsque Google Drive remonte le FS (parfois de manière aléatoire, parfois lors de déconnexions du réseau), il est probable que le système d'exploitation lui a attribué un nouveau port auquel se lier. Ainsi, pour Spotlight, cela ressemble à un lecteur réseau entièrement différent sur lequel vous n'avez pas activé l'indexation Spotlight, donc vous devez non seulement réactiver l'indexation, mais aussi attendre que Spotlight indexe tout à nouveau.
J'ai fouillé dans les journaux (dans ~/Library/Application Support/Google/DriveFS/Logs
) et j'ai remarqué ceci dans la section de démarrage :
2021-07-22T18:12:33.759ZI [6139763:CrBrowserMain] global_features_manager.cc:266:CompositeAll Composited global features *WITHOUT* overrides: drive_dot: true
...
mac_smb_port: -1
...
Il semble donc que le changement du port SMB en port statique soit une préférence, il faut juste trouver où. Il m'a fallu un peu de temps pour le trouver, car il ne semble pas s'agir d'un paramètre plist, mais en utilisant la commande strings
j'ai pu en déduire que c'était en core_feature_config
dont j'ai découvert qu'il s'agissait d'un fichier binaire dans le fichier protobuf format. Il suffisait donc de trouver le bon champ et de remplacer le mac_smb_port
avec ce que je voulais (avec le bon encodage protobuf). Une fois que j'ai compris cela avec le bon script, Spotlight a été stable pour moi depuis !
Je ne pense pas que ce sera un problème pendant longtemps, donc si vous n'êtes pas à l'aise en utilisant mon script et que vous êtes prêt à attendre, je pense que vous pouvez rester tranquille. Soit les gens de Google Drive ajouteront un numéro de port statique (ou un paramètre) pour résoudre ce problème, soit ils migreront vers l'utilisation de la fonction intégrée Fournisseur de fichiers (que j'ai découvert que vous pouvez activer dès maintenant en changeant un autre drapeau dans le fichier core_feature_config
), qui aura probablement une meilleure prise en charge de Spotlight intégrée.