unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Sharing .emacs.d between different hosts: issues with shared elpa folder
@ 2015-01-23  9:33 Karl Voit
  2015-01-25 13:18 ` Alexis
  0 siblings, 1 reply; 3+ messages in thread
From: Karl Voit @ 2015-01-23  9:33 UTC (permalink / raw)
  To: help-gnu-emacs

Hi!

I sync my .emacs.d folder between Windows, OS X, and GNU/Linux.[1]

So far, this worked pretty well. In recent time, I got some issues
on Windows when I installed or updated packages via GNU/Linux Emacs.
For example, this one happened today:

| Debugger entered--Lisp error: (invalid-function "python")
|   "python"("virtualenv" "tools")
|   byte-code("\300\301\302\303\304\305\306\307\310\311\312\"\207" [define-package "pyvenv" "20150110.421" "Python virtual environment interface" nil :url "http://github.com/jorgenschaefer/pyvenv" :keywords "python" "virtualenv" "tools"] 11)
|   load("c:/Users/karl.voit/AppData/Roaming/.emacs.d/elpa/pyvenv-20150110.421/pyvenv-pkg" nil t)
|   package-load-descriptor("~/.emacs.d/elpa" "pyvenv-20150110.421")
|   package-maybe-load-descriptor("pyvenv" "20150110.421" "~/.emacs.d/elpa")
|   package-load-all-descriptors()
|   package-initialize()
|   eval-buffer(#<buffer  *load*-245402> nil "c:/Users/karl.voit/.emacs.d/main.el" nil t)  ; Reading at buffer position 1666
|   load-with-code-conversion("c:/Users/karl.voit/.emacs.d/main.el" "c:/Users/karl.voit/.emacs.d/main.el" nil nil)
|   load("C:/Users/karl.voit/.emacs.d/main.el")
|   eval-buffer(#<buffer  *load*> nil "c:/Users/karl.voit/AppData/Roaming/.emacs.d/init.el" nil t)  ; Reading at buffer position 469
|   load-with-code-conversion("c:/Users/karl.voit/AppData/Roaming/.emacs.d/init.el" "c:/Users/karl.voit/AppData/Roaming/.emacs.d/init.el" t t)
|   load("c:/Users/karl.voit/AppData/Roaming/.emacs.d/init" t t)
|   #[0 \205\262

So far, I resolved it by deleting the elpa/$PACKAGE folder. Some
times, re-installing via Windows/Emacs helped.

I read that sharing the elpa folder is not recommended and I guess
this results in issues like the one above.

I don't want to manage different sets of packages per host. So: how
do I accomplish working sharing of packages/dot-emacs?

Thanks!

[1] https://github.com/novoid/dot-emacs

-- 
All in all, one of the most disturbing things today is the definitive
fact that the NSA, GCHQ, and many more government organizations are
massively terrorizing the freedom of us and the next generations.
                                                  http://Karl-Voit.at




^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Sharing .emacs.d between different hosts: issues with shared elpa folder
  2015-01-23  9:33 Sharing .emacs.d between different hosts: issues with shared elpa folder Karl Voit
@ 2015-01-25 13:18 ` Alexis
  2015-01-25 14:06   ` Rasmus
  0 siblings, 1 reply; 3+ messages in thread
From: Alexis @ 2015-01-25 13:18 UTC (permalink / raw)
  To: help-gnu-emacs


Karl Voit writes:

> I read that sharing the elpa folder is not recommended and I guess
> this results in issues like the one above.
>
> I don't want to manage different sets of packages per host. So: how
> do I accomplish working sharing of packages/dot-emacs?

In terms of package management, you could perhaps use Pallet:

https://github.com/rdallasgray/pallet

to create a Cask file which you sync between your various systems, and
then do `pallet-install` and `pallet-update` as required.


Alexis.



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Sharing .emacs.d between different hosts: issues with shared elpa folder
  2015-01-25 13:18 ` Alexis
@ 2015-01-25 14:06   ` Rasmus
  0 siblings, 0 replies; 3+ messages in thread
From: Rasmus @ 2015-01-25 14:06 UTC (permalink / raw)
  To: help-gnu-emacs

Alexis <flexibeast@gmail.com> writes:

> Karl Voit writes:
>
>> I read that sharing the elpa folder is not recommended and I guess
>> this results in issues like the one above.
>>
>> I don't want to manage different sets of packages per host. So: how
>> do I accomplish working sharing of packages/dot-emacs?
>
> In terms of package management, you could perhaps use Pallet:
>
> https://github.com/rdallasgray/pallet
>
> to create a Cask file which you sync between your various systems, and
> then do `pallet-install` and `pallet-update` as required.

Here's what I do

    ;;* PACKAGES
    ;; Start by loading package

    (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                             ("melpa" . "http://melpa.org/packages/")
                             ("marmalade" . "http://marmalade-repo.org/packages/")))

    (package-initialize)

    (defcustom rasmus/packages '(async auctex darkroom)
      "Packages to install.")

    (defun install-packages (pkgs)
      (let (updated)
        (mapc
         (lambda (pkg) (unless (package-installed-p pkg)
                         (unless updated
                           (package-refresh-contents)
                           (setq updated t))
                         (package-install pkg)))
         pkgs)))
      (install-packages rasmus/packages)

    (defun update-packages ()
      "Upgrade all installed packages."
      (interactive)
      (list-packages)
      (package-menu-mark-upgrades)
      (package-menu-mark-obsolete-for-deletion)
      (cl-letf (((symbol-function 'yes-or-no-p) (lambda (&optional arg) t))
                ((symbol-function 'y-or-n-p) (lambda (&optional arg) t)))
        ;; don't ask questions...  This may be risky.
        (package-menu-execute))
      (quit-window))

This file is part of ~/annex/conf.annex/.emacs.d  From ~/annex I do 

     stow -r conf.annex

My emacs.d look something like this:

    elpa
    abbrev_defs
    ac-comphist.dat
    bookmarks -> ../annex/conf.annex/.emacs.d/bookmarks
    init.el -> ../annex/conf.annex/.emacs.d/init.el
    init-org-async.el -> ../annex/conf.annex/.emacs.d/init-org-async.el
    lisp -> ../annex/conf.annex/.emacs.d/lisp
    network-security.data
    org-caldav-8b63d83.el -> ../annex/conf.annex/.emacs.d/org-caldav-8b63d83.el
    retired.el -> ../annex/conf.annex/.emacs.d/retired.el
    tramp

Thus, ~/.emacs.d/elpa/ is local to each computer, but controlled (partly)
via init.el which is under version-control.  I can install additional
packages on each computer as desired.

—Rasmus

-- 
Enough with the bla bla!




^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2015-01-25 14:06 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-01-23  9:33 Sharing .emacs.d between different hosts: issues with shared elpa folder Karl Voit
2015-01-25 13:18 ` Alexis
2015-01-25 14:06   ` Rasmus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).