windows - Emacs-कॉल करते समय त्रुटि(सर्वर-स्टार्ट)




elisp dot-emacs (8)

Gavenkoa से बहुत उपयोगी जवाब। मुझे Emacs 24.1, Windows 2003 पर यह समस्या है।

दुर्भाग्य से, आपके पहले स्निपेट में सुझाए गए अनुसार, नोप बनने के लिए सर्वर-सुनिश्चित-सुरक्षित-डीआईआर ओवरराइड करना, सभी स्थितियों में मेरे लिए काम नहीं करता था। विशेष रूप से, यह कम से कम एक बार (सर्वर-स्टार्ट) निष्पादित किए जाने से पहले लागू नहीं हुआ था, क्योंकि प्रारंभिक निष्पादन निर्देशिका भी बनायेगा , अगर यह अस्तित्व में नहीं है। नोप संस्करण के साथ, निर्देशिका बिल्कुल नहीं बनाई जाएगी।

कामकाज जिसने मेरे लिए काम किया है, यह त्रुटि संदेश को समाप्त कर दिया है, जबकि अभी भी निर्देशिका को सही तरीके से बना रहा है, निम्न कोड था, मेरी Emacs प्रारंभिक फ़ाइल में पहले (सर्वर-स्टार्ट) डालें। यह वहां से उठाए गए किसी भी त्रुटि को अनदेखा करने के लिए सर्वर-सुनिश्चित-सुरक्षित-डीआईआर के आसपास एक सलाह देता है। समस्या के मूल कारण को हल नहीं करता है, लेकिन मेरे लिए काफी अच्छा है।

(defadvice server-ensure-safe-dir (around
                                   my-around-server-ensure-safe-dir
                                   activate)
  "Ignores any errors raised from server-ensure-safe-dir"
  (ignore-errors ad-do-it))

मैं वर्तमान में विंडोज विस्टा एसपी 1 में जीएनयू Emacs 23.0.93.1 का उपयोग कर रहा हूँ। मेरी .emacs फ़ाइल में मैं (server-start) कॉल करता हूं और संदेश के साथ त्रुटि उत्पन्न कर रहा है निर्देशिका ~ / .emacs.d / सर्वर असुरक्षित है । क्या किसी ने इसे देखा है और एक फिक्स या वर्कअराउंड पता है? ... सर्वर छोड़ने के अलावा बंद;)

यहां स्टैक ट्रेस है:

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)

इसके अतिरिक्त आप नहीं चाहते कि सर्वर बैच-मोड में शुरू किया जाए। इसलिए मेरे .emacs में मैं उपयोग करता हूं

(defconst --batch-mode 
  (or noninteractive (member "--batch-mode" command-line-args))
  "True when running in batch-mode (--batch-mode command-line switch set).")

और फिर

(unless --batch-mode
  (require 'server)
  (when (and (= emacs-major-version 23)
         (= emacs-minor-version 1)
         (equal window-system 'w32))
    ;; Suppress error "directory ~/.emacs.d/server is unsafe" on Windows.
    (defun server-ensure-safe-dir (dir) "Noop" t))
  (server-start))

फिर भी सर्वर सुविधा capricious है: server-start है जब % HOME% / emacs.d / सर्वर निर्देशिका मौजूद नहीं है। उत्तराधिकार में Emacs फिर से शुरू नहीं होगा! स्पष्ट समाधान लापता निर्देशिका बनाना और पुनः प्रयास करना है; मुझे नेट पर कहीं भी समाधान मिला लेकिन वास्तव में याद नहीं किया जा सकता है। निम्नलिखित कोड कई वर्षों से सफलतापूर्वक चलाता है मेरी कई विंडोज मशीनों पर:

(unless --batch-mode
  (require 'server)
  (when (and (= emacs-major-version 23)
         (= emacs-minor-version 1)
         (equal window-system 'w32))
    ;; Suppress error "directory ~/.emacs.d/server is unsafe" on Windows.
    (defun server-ensure-safe-dir (dir) "Noop" t))
  (condition-case nil
      (server-start)
    (error
     (let* ((server-dir (if server-use-tcp server-auth-dir server-socket-dir)))
       (when (and server-use-tcp
          (not (file-accessible-directory-p server-dir)))
     (display-warning
      'server (format "Creating %S" server-dir) :warning)
     (make-directory server-dir t)
     (server-start))))
    )
  )

एक छड़ी से Emacs चलाते समय यह कोड भी काम करता है।

उम्मीद है की यह मदद करेगा।


मुझे EmacsWiki पर यह समाधान मिला:

"समस्या निर्देशिका ~ / .emacs.d / सर्वर का स्वामित्व है जब आपके खाते पर" व्यवस्थापक "अधिकार भी हैं। निर्देशिका ~ / .emacs.d / सर्वर बनाएं और इस निर्देशिका के मालिक को अपने लॉगिन में सेट करें नाम और समस्या चली गई है। चूंकि मेरे पास विंडोज 7 का "डच" संस्करण है, इसलिए मुझे अंग्रेजी शब्द बिल्कुल नहीं पता लेकिन यहां प्रक्रिया है:

~ / .emacs.d / सर्वर पर आर-माउस पर क्लिक करें और "गुण" (मेनू में अंतिम आइटम) का चयन करें। गुणों से टैब "सुरक्षा" का चयन करें और फिर "उन्नत" बटन का चयन करें। फिर टैब "स्वामी" का चयन करें और स्वामी को <your-login-name> (<your-pc-name>\<your-login-name> Administrators (<your-pc-name>\Administrators) से बदलें। सर्वर कोड इस निर्देशिका को सुरक्षित के रूप में स्वीकार करेगा क्योंकि आप मालिक हैं।

उम्मीद है कि यह आपके सभी लोगों के लिए मदद करता है, यह वैसे भी मेरे लिए समस्या हल हो गया।

डब्ल्यूकेआर रीटफ्लूट "

यह निश्चित रूप से Vista पर काम करता है, Emacs 23.2.1 के साथ।


मेरे लिए चरण कार्य नीचे: 1. .reg फ़ाइल के रूप में नीचे कोड निष्पादित करें। Emacs win संस्करण Env Var के रूप में रजिस्ट्री में किसी भी मान का इलाज करेगा।

[HKEY_LOCAL_MACHINE\SOFTWARE\GNU\Emacs]
"HOME"="C:/<your_emacs_home>"
"EMACS_SERVER_FILE"="C:/<your_emacs_home>/server/main_server"
"ALTERNATE_EDITOR"="C:/<your_emacs_loc>/bin/runemacs.exe"
  1. नीचे दिए गए कोड को अपने .emacs / init.el में जोड़ें। यहां कुंजी "सर्वर-औथ-डीआईआर" होना चाहिए।
(require 'server)
(setq server-auth-dir "~/server")  ;;Server file location
(setq server-name "main_server")   ;;Server mutex file name
(server-start)

सर्वर मोड से ऊपर के चरणों से मेरे लिए सही और सही काम करता है।


यदि यह कभी-कभी लोगों को हिट करता है, तो मेरा वर्कस्टेशन सिर्फ "डोमेन माइग्रेशन" के माध्यम से चला गया, जिसने बॉक्स पर प्रत्येक फ़ाइल को एक और अनुमति दी, फिर मुझे यह त्रुटि मिलनी शुरू हुई। "सर्वर-सुनिश्चित-सुरक्षित-डीआईआर" में डमी को अभिव्यक्ति जोड़ने के बाद यह असफल रहा।

(यदि आप सोच रहे हैं, माइग्रेशन 2-3 चरणों में होगा। पहला व्यक्ति लक्ष्य डोमेन में मेरे लिए अनुमति जोड़ता है, तो मुझे लक्ष्य डोमेन में ले जाया जाता है, तो वे (मुझे इस बारे में निश्चित नहीं है ) पुराने डोमेन के लिए अनुमति हटा दें। यह एक बड़ी कंपनी है, और कई उपयोगकर्ता हैं, इसलिए वे इसे अलग-अलग चरणों में कर रहे हैं।)


यदि यह सर्वर फ़ोल्डर स्वामित्व समस्या है जो RealityMonster की पहचान की गई है, तो आप इसे ठीक करने के लिए Windows कमांड प्रॉम्प्ट पर चला सकते हैं:

takeown /f %USERPROFILE%\.emacs.d\server /r /d y

लिस्प निर्देशिका में हैकिंग से बचने के लिए, आप बस अपने .emacs में निम्नलिखित जोड़ सकते हैं:

(require 'server) (and (>= emacs-major-version 23) (defun server-ensure-safe-dir (dir) "Noop" t))


विंडोज 7 में मेरे लिए काम नहीं किया।

मैंने इसके बजाय सर्वर-स्वीकार्य-सुरक्षित-डीआईआर में टिप्पणियां पढ़ीं और% APPDATA% फोल्डर और उपफोल्डर के लिए स्वामित्व लेने के साथ आगे बढ़े। वे स्थानीय प्रशासकों के स्वामित्व में थे, मेरे द्वारा नहीं।

इससे मदद मिली!





server-mode