Emacs - Erreur lors de l'appel (serveur de démarrage)
Je suis actuellement en utilisant GNU Emacs 23.0.93.1 dans Windows Vista SP1. Dans mon .emacs fichier je fais un appel à (server-start)
et qui est à l'origine d'une erreur avec le message Le répertoire ~/.emacs.d/serveur est dangereux. Quelqu'un a vu cela et savoir un correctif ou une solution de contournement? ... autre que de laisser le serveur hors tension 😉
Ici est la trace de la pile:
Debugger entered--Lisp error: (error "The directory ~/.emacs.d/server is unsafe")
signal(error ("The directory ~/.emacs.d/server is unsafe"))
error("The directory %s is unsafe" "~/.emacs.d/server")
server-ensure-safe-dir("~\\.emacs.d\\server\\")
server-start(nil)
call-interactively(server-start t nil)
execute-extended-command(nil)
call-interactively(execute-extended-command nil nil)
- J'ai eu une erreur similaire à lancer Emacs sur une machine Unix; ceci s'est avéré être parce que j'ai garder mon ~/.emacs.d dans la Subversion, et lors de la finalisation de la
svn
client ~/.emacs.d/serveur 0755 par mon umask. Au lieu de l'emballagesvn
dans un script shell, qui défait le but d'avoir tout ce dont j'ai besoin pour personnaliser Emacs vivre dans la Subversion, j'ai juste Emacs force les autorisations correctes lorsqu'il démarre, par adjonction, à~/.emacs.d/init.el
:(set-file-modes (expand-file-name "~/.emacs.d/server") #o700)
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé cette solution sur EmacsWiki:
"Le problème est la propriété du répertoire ~/.emacs.d/serveur lorsque vous avez également des “Administrateurs” les droits sur votre compte. Créer le répertoire ~/.emacs.d/serveur et définissez le propriétaire de ce répertoire à votre nom de connexion et le problème a disparu. Comme j'ai un “hollandais” de la version de Windows 7 je ne sais pas les termes anglais exactement, mais voici la procédure:
Cliquez sur la R de la souris sur ~/.emacs.d/serveur et sélectionnez “Propriétés” (dernier item dans le menu). À partir des Propriétés, sélectionnez l'Onglet “Sécurité” puis cliquez sur le bouton “Avancé”. Puis sélectionnez l'Onglet “Propriétaire” et de changer le propriétaire de
Administrators (<your-pc-name>\Administrators)
en<your-login-name> (<your-pc-name>\<your-login-name>
. Maintenant que le serveur de code d'accepter ce répertoire sécurisé car vous êtes le propriétaire.Espère que cette aide pour vous tous les gars, il a résolu le problème pour moi en tout cas.
W. K. R. Reutefleut"
Cela fonctionne bien sur Vista, avec Emacs 23.2.1.
J'aime à anwer de larsreed, mais complite code prêt à l'emploi:
Je discass cette question dans mon article de blog http://brain-break.blogspot.com/2009/08/when-moving-from-gnu-emacs-22.html
Aussi noter que dans le 2009-09-19 fixe le bogue n ° 4197 sur serveur-assurer-coffre-fort-dir donc, en entrant Emacs 23.2 cette solution de contournement n'est pas nécessaire.
En vertu de l'récemment publié Emacs 23.2 j'ai un tel avertissement:
Avertissement (serveur): à l'Aide de
~/.emacs.d/server
pour stocker Emacs-l'authentification du serveur de fichiers.Répertoires des systèmes de fichiers FAT32 ne sont PAS protégés contre la falsification.
Voir la variable
server-auth-dir
pour plus de détails.Pour corriger ce que disent d'avertissement vous pouvez serveur de point-auth-dir sur une partition NTFS (
%APPDATA%
généralement situé Windows%SYSTEMDRIVE%
et utilisateur généralement système de format du disque en NTFS partition):(>= emacs-major-version 23)
. Merci +1takeown /f %USERPROFILE%\.emacs.d\server /r /d y
C'est un Emacs bug sur Windows. Une solution de contournement consiste à commenter cette ligne
serveur-assurer-coffre-fort-dir dans le serveur.el la vous aurez envie de byte recompiler après le changement:
Pour éviter le piratage dans le lisp répertoire, vous pouvez simplement ajouter la ligne suivante à votre .emacs:
(require 'server)
(and (>= emacs-major-version 23)
(defun server-ensure-safe-dir (dir) "Noop" t))
(require 'server)
au-dessus du codeEn outre, vous ne voulez pas que le serveur doit être démarré en mode batch.
Dans mon .emacs j'ai donc utiliser
et puis
Encore la fonctionnalité de serveur est capricieux:
server-start
déclenche lorsque le %HOME%/.emacs.d/serveur répertoire n'existe pas. Dans la succession Emacs de ne pas démarrer de nouveau! La solution évidente est de créer le répertoire manquant et essayez à nouveau; j'ai trouvé la solution quelque part sur le net, mais on ne peut vraiment pas se rappeler où. Le code suivant s'exécute avec succès depuis des années sur plusieurs de mes machines Windows:Ce code fonctionne également lors de l'exécution d'Emacs à partir d'un bâton.
Espère que cette aide.
(if (not noninteractive) (progn (require 'server) (server-start)))
--batch-mode
comme(defconst --batch-mode (or noninteractive (member "--batch-mode" command-line-args)))
. J'ai corrigé ci-dessus.N'a pas fonctionné pour moi sous Windows 7.
Je au lieu de lire les commentaires en serveur-assurer-coffre-fort-dir et a procédé à la prise de la propriété de %APPDATA% forlder et sous-dossiers. Ils étaient détenues par des Administrateurs locaux, pas par moi.
Que contribué à!
Très utile réponse de gavenkoa. Je vais avoir ce problème sur Emacs 24.1, Windows 2003.
Malheureusement, remplaçant serveur-assurer-coffre-fort-dir de devenir un noop, comme suggéré dans votre premier extrait, n'a pas fonctionné pour moi dans toutes les situations. Plus précisément, il ne fonctionne pas lorsqu'il est appliqué avant (serveur de démarrage) a exécuté au moins une fois, parce que les exécution initiale serait également créer le répertoire, si elle n'existe pas. Avec le noop version, le répertoire ne serait pas créé à tous les.
La solution qui a fonctionné pour moi dans le sens où il a éliminé le message d'erreur, tout en créant le répertoire correctement, a été le code suivant, mis de l'avant (serveur de démarrage) dans mon Emacs fichier d'initialisation. Elle met en cause les conseils de serveur-assurer-coffre-fort-dir ignorer les erreurs soulevées à partir de là. Ne résout pas la cause racine du problème, mais assez bon pour moi.
Dans le cas où cette occasion frappe les gens, mon poste de travail juste allé à travers un "domaine de la migration", qui a ajouté une autre autorisation pour chaque fichier de la boîte, puis j'ai commencé à faire cette erreur. Après j'ai ajouté l'expression de mannequin de "serveur-assurer-coffre-fort-dir" cet arrêté faute de.
(Si vous vous demandez, de la migration en 2 ou 3 étapes. Le premier ajoute la permission pour moi dans le domaine cible, puis-je obtenir déplacé vers le domaine cible, alors qu'ils pourraient (je ne suis pas sûr à ce sujet) supprimer l'autorisation de l'ancien domaine. C'est une grande entreprise, et de nombreux utilisateurs, afin qu'ils le font en étapes distinctes.)
dernière fois que j'ai essayé, de le "Prendre en charge" extension de shell a fait le travail
Ci-dessous, étape qui fonctionne pour moi:
1. Exécuter le code ci-dessous comme .le fichier reg. Emacs gagner version permettra de traiter toutes les valeurs de registre Env Var.
Par les étapes ci-dessus en mode serveur fonctionne pour moi correctement et parfait.
Si c'est le dossier du serveur question de la propriété que RealityMonster identifié, alors vous pouvez exécuter ce à l'invite de commande windows pour résoudre ce problème: