28 votes

Restaurer l'accès au système de fichiers pour Emacs sur MacOS Catalina

J'ai effectué une mise à jour vers MacOS Catalina et je constate que les applications doivent désormais être autorisées à accéder au système de fichiers, même le shell exécuté dans Terminal.

Je travaille beaucoup avec Emacs qui semble avoir perdu l'accès au système de fichiers. Contrairement à d'autres applications, aucune fenêtre popup n'apparaît pour permettre l'accès à Emacs.

Comment puis-je restaurer l'accès au système de fichiers pour Emacs ?

53voto

wsaleem Points 861

J'ai résolu le problème en accordant Accès au disque complet a /usr/bin/ruby comme suggéré aquí . Citation de la réponse,

Emacs.app se lance en fait en utilisant un script ruby. Par conséquent, MacOS Catalina utilise les autorisations définies pour ruby, et non celles d'Emacs.app.

Accordez l'accès comme suit.

  • Allez dans "Préférences système -> Sécurité et confidentialité -> Confidentialité".
  • Sélectionnez Accès au disque complet dans le menu de gauche. Il se trouve à peu près à mi-chemin dans le menu. Une liste d'applications apparaît dans la partie principale de la fenêtre.
  • Cliquez sur le cadenas en bas à gauche et authentifiez-vous afin de pouvoir effectuer des modifications.
  • Cliquez sur le bouton + sous la liste des logiciels et sélectionnez /usr/bin/ruby .
    • /usr est généralement un dossier caché et peut ne pas apparaître par défaut. Si c'est le cas, appuyez sur shift + cmd + . (le dernier est un point) dans le répertoire racine pour le faire apparaître.

Emacs.app devrait maintenant être capable d'accéder au système de fichiers sans aucun obstacle !

5voto

Jose Chavez Points 645

Cela est dû aux fonctions de confidentialité introduites avec MacOS Mojava et étendues avec MacOS Catalina. Essentiellement, les applications sont mises en bac à sable et ne sont pas autorisées à accéder au disque complet, sauf si vous leur en donnez l'autorisation.

Vous pouvez donner à une application l'accès au disque complet comme ceci :

  • Ouvrir les préférences du système
  • Cliquez sur Confidentialité et sécurité
  • Choisissez l'onglet Confidentialité
  • Sélectionnez Full Disk Access dans l'ascenseur à gauche.
  • Cliquez sur le verrou dans le coin inférieur gauche pour déverrouiller.
  • Faites glisser l'application dans la liste de droite

La prochaine fois que vous lancerez l'application, elle aura accès au disque complet.

L'emacs standard fourni avec le système est exécuté par Terminal.app. Si vous utilisez emacs de cette manière (avec le système fourni ou par exemple une installation à partir de HomeBrew ou MacPorts), vous devez faire glisser Terminal.app sur la liste pour lui donner accès.

Si vous utilisez un Emacs tiers basé sur une interface graphique, vous devrez faire glisser le fichier .app de ce programme dans la liste.

Notez que certaines "distributions" Emacs regroupent dans un seul dossier un certain nombre de binaires Emacs pour différentes versions de MacOS, et choisissent dynamiquement au moment de l'exécution celui qui convient à votre système. Cela signifie que l'icône sur laquelle vous cliquez pour lancer le programme est en réalité un "espace réservé" qui n'est pas Emacs lui-même, mais qui ne fait que lancer Emacs. Ce "placeholder" prend souvent la forme d'un script en Ruby. Si c'est le cas, vous devrez faire glisser le programme Ruby sur la liste.

Ruby est livré par défaut avec MacOS. Vous pouvez trouver le programme en ouvrant le Finder, puis dans le menu "Go", choisissez "Go to Folder". Entrez "/usr/bin" et vous obtiendrez ce dossier ouvert dans le Finder. Dans ce dossier, vous trouverez le programme ruby que vous pouvez faire glisser dans la liste d'accès complet au disque.

3voto

gokul Points 21

Emacs.app se lance en fait en utilisant un ruby script. Par conséquent, MacOS Catalina utilise les autorisations définies pour ruby, et non celles d'Emacs.app. Accorder à /usr/bin/ruby un accès complet au disque dans "General Settings -> Security & Privacy -> Privacy" devrait résoudre votre problème.

/usr est caché par défaut sous MacOS mais vous pouvez le rendre visible dans le Finder en utilisant Shift+Command+Period.

1voto

David Ongaro Points 142

Le problème de permission du système de fichiers n'est qu'un des problèmes qui se produisent en raison de l'exécution indirecte du binaire Emacs via un ruby script. La meilleure solution que j'ai trouvée a été de simplement remplacer le script de démarrage par le bon binaire pour Catalina comme décrit dans https://spin.atomicobject.com/2019/12/12/fixing-emacs-MacOS-catalina/ . En gros, tout ce que vous avez à faire est

cd /Applications/Emacs.app/Contents/MacOS
mv Emacs-x86_64-10_14 Emacs
rm -rf ../_CodeSignature

En plus de résoudre le problème du système de fichiers, cela permet de s'assurer que la fenêtre Emacs sera correctement mise en avant lorsqu'elle est activée par le biais du spotlight et également de s'assurer qu'une seule instance d'Emacs sera lancée si vous ouvrez un fichier associé via le Finder.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X