mu4e-error: [mu4e] Please set ‘mu4e-mu-binary’

723 views
Skip to first unread message

Joerg

unread,
Oct 29, 2016, 6:09:00 PM10/29/16
to mu-discuss
After updating to Emacs to 25.1.1 on MacOS Sierra I also updated offlineimap (to 7.0.9) and mu (to 0.9.16.
I adjusted the loadpath: (setq load-path (cons "~/elisp/mu-master/mu-0.9.16/mu4e" load-path))
"mu index" on the command line works.

But when opening mu4e in emacs, I get "mu4e-error: [mu4e] Please set ‘mu4e-mu-binary’ to the full path to the mu binary." (see debug-on-error output below).

Thanks for your help, Joerg Hagmann

M-x toggle-debug-on-error gives:
------------------------------------------------------------------------
Debugger entered--Lisp error: (error #("[mu4e] Please set `mu4e-mu-binary' to the full path to the mu
    binary." 1 5 (face mu4e-title-face)))
  signal(error (#("[mu4e] Please set `mu4e-mu-binary' to the full path to the mu\n    binary." 1 5 (face mu4e-title-face))))
  error("%s" #("[mu4e] Please set `mu4e-mu-binary' to the full path to the mu\n    binary." 1 5 (face mu4e-title-face)))
  mu4e-error("Please set `mu4e-mu-binary' to the full path to the mu\n    binary.")
  (if (and mu4e-mu-binary (file-executable-p mu4e-mu-binary)) nil (mu4e-error "Please set `mu4e-mu-binary' to the full path to the mu\n    binary."))
  mu4e~check-requirements()
  (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function (lambda (G0 props) (setq mu4e~server-props props) (let ... ... ... ... ...)))) (list (quote quote) --cl-func--) (quote --cl-rest--)))))
  (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function (lambda ... ... ...))) (list (quote quote) --cl-func--) (quote --cl-rest--))))))
  (progn (mu4e~context-autoswitch nil mu4e-context-policy) (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function ...)) (list (quote quote) --cl-func--) (quote --cl-rest--)))))) (mu4e~proc-ping) (mu4e~request-contacts) (add-hook (quote mu4e-index-updated-hook) (quote mu4e~request-contacts)))
  (if (mu4e-running-p) (if func (progn (funcall func))) (progn (mu4e~context-autoswitch nil mu4e-context-policy) (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list ... ...) (list ... --cl-func--) (quote --cl-rest--)))))) (mu4e~proc-ping) (mu4e~request-contacts) (add-hook (quote mu4e-index-updated-hook) (quote mu4e~request-contacts))))
  mu4e~start(mu4e~main-view)
  mu4e(nil)
  funcall-interactively(mu4e nil)
  call-interactively(mu4e record nil)
  command-execute(mu4e record)
  execute-extended-command(nil "mu4e" "mu4e")
  funcall-interactively(execute-extended-command nil "mu4e" "mu4e")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)
------------------------------------------------------------------------

Dirk-Jan C. Binnema

unread,
Oct 30, 2016, 8:19:27 AM10/30/16
to mu-di...@googlegroups.com

On Saturday Oct 29 2016, Joerg wrote:

> After updating to Emacs to 25.1.1 on MacOS Sierra I also updated
> offlineimap (to 7.0.9) and mu (to 0.9.16.
> I adjusted the loadpath: (setq load-path (cons
> "~/elisp/mu-master/mu-0.9.16/mu4e" load-path))
> "mu index" on the command line works.
>
> But when opening mu4e in emacs, I get "mu4e-error: [mu4e] Please set
> ‘mu4e-mu-binary’ to the full path to the mu binary." (see debug-on-error
> output below).

So, you have the mu binary; but you should init `mu4e-mu-binary` with
its path in your configuration. I.e.
(setq mu4e-mu-binary "<path>")
where <path> should be the full path to mu; 'which mu' should give you
that path.

Kind regards,
Dirk.

--
Dirk-Jan C. Binnema Helsinki, Finland
e:dj...@djcbsoftware.nl w:www.djcbsoftware.nl
pgp: D09C E664 897D 7D39 5047 A178 E96A C7A1 017D DA3C

Joerg

unread,
Oct 30, 2016, 9:59:39 AM10/30/16
to mu-discuss

Ah, thank you. I didn't have that in my previous version which worked.

Unfortunately, it turns out that was only a first step towards a working setup. It now complains that the mu version should be 0.9.16, but is 0.9.15. It is, but I don't know why. I compiled from the mu-0.9.16 download and did a "make clean" before "make".

I appreciate your help - it would be a disaster if after years of mu4e I would have to revert to one of the common mail programmes.
Joerg

------------------------------------------
Debugger entered--Lisp error: (error #("[mu4e] mu server has version 0.9.15, but we need 0.9.16" 1 5 (face mu4e-title-face)))
  signal(error (#("[mu4e] mu server has version 0.9.15, but we need 0.9.16" 1 5 (face mu4e-title-face))))
  error("%s" #("[mu4e] mu server has version 0.9.15, but we need 0.9.16" 1 5 (face mu4e-title-face)))
  mu4e-error("mu server has version %s, but we need %s" "0.9.15" "0.9.16")
  (if (string= version mu4e-mu-version) nil (mu4e-error "mu server has version %s, but we need %s" version mu4e-mu-version))
  (let ((version (plist-get mu4e~server-props :version))) (if (string= version mu4e-mu-version) nil (mu4e-error "mu server has version %s, but we need %s" version mu4e-mu-version)))
  (progn (let ((version (plist-get mu4e~server-props :version))) (if (string= version mu4e-mu-version) nil (mu4e-error "mu server has version %s, but we need %s" version mu4e-mu-version))))
  (if mu4e~server-props (progn (let ((version (plist-get mu4e~server-props :version))) (if (string= version mu4e-mu-version) nil (mu4e-error "mu server has version %s, but we need %s" version mu4e-mu-version)))))

  mu4e~check-requirements()
  (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function (lambda (G0 props) (setq mu4e~server-props props) (let ... ... ... ... ...)))) (list (quote quote) --cl-func--) (quote --cl-rest--)))))
  (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function (lambda ... ... ...))) (list (quote quote) --cl-func--) (quote --cl-rest--))))))
  (progn (mu4e~context-autoswitch nil mu4e-context-policy) (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list (quote quote) (function ...)) (list (quote quote) --cl-func--) (quote --cl-rest--)))))) (mu4e~proc-ping) (mu4e~request-contacts) (add-hook (quote mu4e-index-updated-hook) (quote mu4e~request-contacts)))
  (if (mu4e-running-p) (if func (progn (funcall func))) (progn (mu4e~context-autoswitch nil mu4e-context-policy) (let ((--cl-func-- (make-symbol "--func--"))) (let* ((v --cl-func--)) (set v func)) (progn (mu4e~check-requirements) (setq mu4e-pong-func (list (quote lambda) (quote (&rest --cl-rest--)) (list (quote apply) (list ... ...) (list ... --cl-func--) (quote --cl-rest--)))))) (mu4e~proc-ping) (mu4e~request-contacts) (add-hook (quote mu4e-index-updated-hook) (quote mu4e~request-contacts))))
  mu4e~start(mu4e~main-view)
  mu4e(nil)
  funcall-interactively(mu4e nil)
  call-interactively(mu4e record nil)
  command-execute(mu4e record)
  execute-extended-command(nil "mu4e" "mu4e")
  funcall-interactively(execute-extended-command nil "mu4e" "mu4e")
  call-interactively(execute-extended-command nil nil)
  command-execute(execute-extended-command)
----------------------------------------------------------------------------------------

Dirk-Jan C. Binnema

unread,
Oct 30, 2016, 2:44:54 PM10/30/16
to mu-di...@googlegroups.com

On Sunday Oct 30 2016, Joerg wrote:

> Ah, thank you. I didn't have that in my previous version which worked.
>
> Unfortunately, it turns out that was only a first step towards a working
> setup. It now complains that the mu version should be 0.9.16, but is
> 0.9.15. It is, but I don't know why. I compiled from the mu-0.9.16 download
> and did a "make clean" before "make".

If you don't set the mu binary path, mu4e picks it up using PATH
(`executable-find`).

> I appreciate your help - it would be a disaster if after years of mu4e I
> would have to revert to one of the common mail programmes.

Well, you are lucky, the error messages tell you exactly what's wrong :)
Seems you're trying to use an older mu binary with a newer mu4e. You
probably haven an older version of mu lying around; and the fix is to
set mu4e-mu-binary to the new mu, not the old one.

Joerg

unread,
Oct 31, 2016, 5:41:09 AM10/31/16
to mu-discuss
I'm getting it. But one thing confuses me:

Whereas before, programmes in a recognised path such as "offlineimap" (here in /usr/local/bin/), html2markdown.sh etc worked without a path (e.g. (setq  mu4e-get-mail-command "offlineimap"), I now have to specify that path. If I interpret you correctly

If you don't set the mu binary path, mu4e picks it up using PATH
(`executable-find`).

 that shouldn't be necessary?

Mind you, I don't care as long as it works - and it now does, thank you very much! It's just that other users might have similar problems.

Cheers, Joerg
Reply all
Reply to author
Forward
0 new messages