Ich verwende derzeit GNU Emacs 23.0.93.1 in Windows Vista SP1. In meiner .emacs-Datei rufe ich an (server-start)
und dies verursacht einen Fehler mit der Meldung. Das Verzeichnis ~ / .emacs.d / server ist unsicher . Hat jemand dies gesehen und kennt eine Lösung oder Problemumgehung? ... außer den Server ausgeschaltet zu lassen;)
Hier ist die Stapelverfolgung:
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)
svn
Client ~ / .emacs.d / server auf 0755 pro meiner Umask setze. Anstattsvn
ein Shell-Skript einzuschließen, das den Zweck zunichte macht, alles, was ich zum Anpassen von Emacs benötige, in Subversion zu haben, muss Emacs beim Start nur die richtigen Berechtigungen erzwingen, indem es Folgendes hinzufügt~/.emacs.d/init.el
:(set-file-modes (expand-file-name "~/.emacs.d/server") #o700)
Antworten:
Ich habe diese Lösung in EmacsWiki gefunden:
"Das Problem ist der Besitz des Verzeichnisses ~ / .emacs.d / server, wenn Sie auch über Administratorrechte für Ihr Konto verfügen. Erstellen Sie das Verzeichnis ~ / .emacs.d / server und setzen Sie den Eigentümer dieses Verzeichnisses auf Ihr Login Name und das Problem ist weg. Da ich eine "niederländische" Version von Windows 7 habe, kenne ich die englischen Begriffe nicht genau, aber hier ist die Vorgehensweise:
Klicken Sie mit der R-Maus auf ~ / .emacs.d / server und wählen Sie "Eigenschaften" (letzter Menüpunkt). Wählen Sie unter Eigenschaften die Registerkarte "Sicherheit" und dann die Schaltfläche "Erweitert". Wählen Sie dann die Registerkarte "Eigentümer" und ändern Sie den Eigentümer von
Administrators (<your-pc-name>\Administrators)
in<your-login-name> (<your-pc-name>\<your-login-name>
. Jetzt akzeptiert der Servercode dieses Verzeichnis als sicher, da Sie der Eigentümer sind.Hoffe das hilft euch allen, es hat das Problem trotzdem für mich gelöst.
WKR Reutefleut "
Es funktioniert definitiv unter Vista mit Emacs 23.2.1.
quelle
Ich beantworte gerne Larsreed, vervollständige aber den gebrauchsfertigen Code:
Ich habe dieses Problem in meinem Blog-Artikel http://brain-break.blogspot.com/2009/08/when-moving-from-gnu-emacs-22.html behoben
Beachten Sie auch, dass in 2009-09-19 der Fehler Nr. 4197 über Server-Enhant-Safe-Dir behoben wurde, sodass diese Problemumgehung in eingehenden Emacs 23.2 nicht erforderlich ist.
Unter kürzlich veröffentlichten Emacs 23.2 habe ich eine solche Warnung:
Warnung (Server):
~/.emacs.d/server
Zum Speichern von Emacs-Server-Authentifizierungsdateien. Verzeichnisse auf FAT32-Dateisystemen sind NICHT manipulationssicher. Siehe Variableserver-auth-dir
für Details.Um dies als Warnung zu beheben, können Sie das Server-Auth-Verzeichnis auf die NTFS-Partition verweisen (
%APPDATA%
normalerweise Windows%SYSTEMDRIVE%
und Benutzer formatieren das Systemlaufwerk normalerweise als NTFS-Partition):quelle
(>= emacs-major-version 23)
. Vielen Dank +1Dies ist ein bekannter Emacs-Fehler unter Windows. Eine Problemumgehung besteht darin, diese Zeile in server-sure-safe-dir in server.el zu kommentieren. Dies gilt für die Byte-Neukompilierung nach der Änderung:
quelle
Um ein Hacken im lisp-Verzeichnis zu vermeiden, können Sie Ihren .emacs einfach Folgendes hinzufügen:
(require 'server) (and (>= emacs-major-version 23) (defun server-ensure-safe-dir (dir) "Noop" t))
quelle
(require 'server)
über dem CodeAußerdem soll der Server nicht im Batch-Modus gestartet werden. In meinen .emacs verwende ich daher
und dann
Trotzdem ist die Serverfunktion launisch: Wird ausgelöst,
server-start
wenn das Verzeichnis % HOME% /. Emacs.d / server nicht vorhanden ist. Nacheinander startet Emacs nicht wieder! Die naheliegende Lösung besteht darin, das fehlende Verzeichnis zu erstellen und es erneut zu versuchen. Ich habe die Lösung irgendwo im Internet gefunden, kann mich aber wirklich nicht erinnern, wo. Der folgende Code wird seit Jahren erfolgreich auf mehreren meiner Windows-Computer ausgeführt:Dieser Code funktioniert auch, wenn Emacs von einem Stick ausgeführt wird.
Hoffe das hilft.
quelle
(if (not noninteractive) (progn (require 'server) (server-start)))
--batch-mode
als verfeinern(defconst --batch-mode (or noninteractive (member "--batch-mode" command-line-args)))
. Ich behebe es oben.Hat bei mir in Windows 7 nicht funktioniert.
Ich las stattdessen die Kommentare in server-sure-safe-dir und übernahm den Besitz für% APPDATA% forlder und Unterordner. Sie gehörten lokalen Administratoren, nicht mir.
Das hat geholfen!
quelle
Sehr hilfreiche Antwort von Gavenkoa. Ich habe dieses Problem unter Emacs 24.1, Windows 2003.
Leider hat das Überschreiben des Servers "Sicherstellen des sicheren Verzeichnisses", um ein Noop zu werden, wie in Ihrem ersten Snippet vorgeschlagen, nicht in allen Situationen für mich funktioniert. Insbesondere funktionierte es nicht, wenn es angewendet wurde, bevor (Server-Start) mindestens einmal ausgeführt wurde, da bei der ersten Ausführung auch das Verzeichnis erstellt wurde , wenn es nicht vorhanden wäre. Mit der Noop-Version würde das Verzeichnis überhaupt nicht erstellt.
Die Problemumgehung, die für mich in dem Sinne funktioniert hat, dass die Fehlermeldung beseitigt wurde, während das Verzeichnis noch ordnungsgemäß erstellt wurde, war der folgende Code, der zuvor (Serverstart) in meine Emacs-Initialisierungsdatei eingefügt wurde. Es enthält Hinweise zum Server-Gewährleistungs-Sicherheits-Verzeichnis, um alle von dort aus aufgetretenen Fehler zu ignorieren. Löst nicht die Grundursache des Problems, aber gut genug für mich.
quelle
Der folgende Schritt funktioniert für mich: 1. Führen Sie den folgenden Code als .reg-Datei aus. Die Emacs Win-Version behandelt alle Werte in der Registrierung als Env Var.
Durch die obigen Schritte funktioniert der Servermodus für mich korrekt und perfekt.
quelle
Falls dies gelegentlich Menschen trifft, hat meine Workstation gerade eine "Domänenmigration" durchlaufen, bei der jeder Datei auf der Box eine weitere Berechtigung hinzugefügt wurde. Dann wurde dieser Fehler angezeigt. Nachdem ich den Ausdruck zum Dummy-out "server-sure-safe-dir" hinzugefügt hatte, schlug dies fehl.
(Wenn Sie sich fragen, erfolgt die Migration in 2-3 Schritten. Der erste fügt die Berechtigung für mich in der Zieldomäne hinzu, dann werde ich in die Zieldomäne verschoben, dann möglicherweise (ich bin mir nicht sicher ) Entfernen Sie die Berechtigung für die alte Domain. Es ist ein großes Unternehmen und viele Benutzer, daher tun sie dies in separaten Schritten.)
quelle
Als ich es das letzte Mal versuchte, erledigte die Shell-Erweiterung "Take Ownership" den Job
quelle
Wenn RealityMonster das Problem mit dem Besitz des Serverordners festgestellt hat, können Sie es an der Windows-Eingabeaufforderung ausführen, um es zu beheben:
quelle