Giter Club home page Giter Club logo

elpa-mirror's Introduction

elpa-mirror

https://github.com/redguardtoo/elpa-mirror/actions/workflows/test.yml/badge.svg http://melpa.org/packages/elpa-mirror-badge.svg http://stable.melpa.org/packages/elpa-mirror-badge.svg

Create local Emacs package repository from installed packages so package upgrade never breaks.

Why

  • Package installation is fast. It takes only 15 seconds to install 115 packages
  • The package repository could be hosted on USB/Dropbox/GitHub
  • Tested with Emacs 27, 28, 29 on OSX/Cygwin/Windows10/Linux

Install

CLI program “tar” is required. It’s already installed on Windows10/Linux/macOS.

  • Download elpa-mirror.el to somewhere (say ~/.emacs.d/site-lisp/elpa-mirror/)
  • Add below code into “~/.emacs”,
(add-to-list 'load-path "~/.emacs.d/site-lisp/elpa-mirror")
(require 'elpa-mirror)

Usage

M-x elpamr-create-mirror-for-installed to create local repository.

To update existing local repository, run M-x elpamr-create-mirror-for-installed again.

BTW, elpa-mirror.el can run as an independent script,

mkdir -p ~/myelpa && emacs --batch -l ~/.emacs.d/init.el -l ~/any-directory-you-prefer/elpa-mirror.el --eval='(setq elpamr-default-output-directory "~/myelpa")' --eval='(elpamr-create-mirror-for-installed)'

To use the local repository ~/myelpa/, insert below code into ~/.emacs,

;; myelpa is the ONLY repository now, dont forget trailing slash in the directory
(setq package-archives '(("myelpa" . "~/myelpa/")))

Repository on Dropbox

Insert below code into ~/.emacs:

;; add-to-list will not override default elpa.
;; So now you have two repositories.
;; One is GNU elpa. Another is myelpa
(add-to-list 'package-archives
             '("myelpa" . "https://dl.dropboxusercontent.com/u/858862/myelpa/"))

Repository on GitHub

My repository is https://github.com/redguardtoo/myelpa.

Insert below code into .emacs:

;; add-to-list will not override default elpa.
;; So now you have two repositories.
;; One is GNU elpa. Another is myelpa
(add-to-list 'package-archives
             '("myelpa" . "https://raw.githubusercontent.com/redguardtoo/myelpa/master/"))

Tips

Exclude packages

See elpamr-exclude-packages.

Exclude files/directories in package directory

See elpamr-tar-command-exclude-patterns.

elpamr-exclude-patterns-filter-function lets users define a filter function to exclude files and directories per package. The function returns the result to replace elpamr-tar-command-exclude-patterns.

Below setup adds directory “bin/” into package “vagrant-tramp”.

(setq elpamr-exclude-patterns-filter-function
      (lambda (package-dir)
        (let ((patterns elpamr-tar-command-exclude-patterns))
          (when (string-match "vagrant-tramp" package-dir)
            (setq patterns (remove "*/bin" patterns)))
          patterns)))

Change output directory,

(setq elpamr-default-output-directory "~/myelpa")

Report a Bug

Reproduce the bug, report it at https://github.com/redguardtoo/elpa-mirror, and attach the contents of the buffer *elpa-mirror log*.

elpa-mirror's People

Contributors

brontitall avatar hasimir avatar justintime50 avatar pkkm avatar redguardtoo avatar tenthousandfailures avatar tumashu avatar txgvnn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

elpa-mirror's Issues

Directory name format recognition problem

image

If the letter string is inserted into the number string behind the plug-in package, the tar file generation is unsuccessful.
exp:
evil-unimpaired-0.1pre0.20210412.213818 would not be packed as tar file, yet evil-unimpaired-20210412.213818 is ok.

Creating TAR Error

Hi,

Could you please help check this issue?
thanks.

  • Detected tar variant: GNU
  • Converted to full path: "/Users/zzh/" "ace-window-20200606.1259" -> "/Users/zzh/ace-window-20200606.1259"
  • Running tar: "tar" ("cf" "/Users/zzh/ace-window-20200606.1259.tar" "--anchored" "--exclude=.elc" "--exclude=~" "--exclude=.so" "--exclude=.dylib" "--exclude=.dll" "--exclude=/bin" "--exclude=*/pycache" "--format=gnu" "--sort=name" "--owner=root:0" "--group=root:0" "--mtime=1970-01-01 00:00:00 UTC" "-C" "/Users/zzh/.emacs.d/elpa" "--" "ace-window-20200606.1259")
    tar: Failed to set default locale
    tar: Option --anchored is not supported
    Usage:
    List: tar -tf
    Extract: tar -xf
    Create: tar -cf [filenames...]
    Help: tar --help
  • Program tar exited with non-zero status 1, see the elpa-mirror log buffer for details

wrong BEGIN_SRC block in README.org

Hi,
The first block source of the section 'usage' is :

#+BEGIN_SRC sh
# myelpa is the ONLY repository now, dont forget trailing slash in the directory
(setq package-archives '(("myelpa" . "~/myelpa/")))
#+END_SRC

It should be

#+BEGIN_SRC emacs-lisp
;; myelpa is the ONLY repository now, dont forget trailing slash in the directory
(setq package-archives '(("myelpa" . "~/myelpa/")))
#+END_SRC

have a nice day.

[feature request] support emacs official package 'pacakge-vc.el'

你好, emacs 30 支持 package-vc.el 了, 希望对次支持
package-vc.el 支持可以从 git repo 安装包
package-vc.el 下载安装的包会在 .emacs.d/elpa/ 文件夹下, 与 package.el 包路径相同
例如:
使用 package-vc.el 安装了一个包命为 test-package, 那么包含 .emacs.d/elpa/test-package/*.el
执行 elpamr-create-mirror-for-installed 后, 假如: .emacs.d/elpa-local/ 为我备份路径
那么 .emacs.d/elpa-local/test-package.tar 里面的内容为空, 没有任何文件
package.el 下载的包备份成功

/usr/bin/tar: root\:0: Invalid owner

Output for elpamr-create-mirror-for-installed:

* Running tar: "tar" ("cf" "../../myelpa/ace-window-20200606.1259.tar" "--anchored" "--exclude=*.elc" "--exclude=*~" "--exclude=*.so" "--exclude=*.dylib" "--exclude=*.dll" "--exclude=*/bin" "--exclude=*/__pycache__" "--format=gnu" "--owner=root:0" "--group=root:0" "--mtime=1970-01-01 00:00:00 UTC" "--" "ace-window-20200606.1259")
/usr/bin/tar: root\:0: Invalid owner
/usr/bin/tar: Error is not recoverable: exiting now
* Program tar exited with non-zero status 2, see the *elpa-mirror log* buffer for details

For me, removing ":0" from line 259 & 260 in elpa-mirror.el fixed it:

(unless is-bsd-tar
    '("--owner=root"
      "--group=root"
      "--mtime=1970-01-01 00:00:00 UTC"))

emacs --version: GNU Emacs 28.0.50
tar --version: tar (GNU tar) 1.26

Setting default output directory

Hi Chen Bin,

Thanks for all the great emacs packages you post on github.

Recently during the melpa outages, to get stuff up and running reliably, I installed elpa-mirror .

Now ideally, I'd like to set it up in my .emacs.d such that I can

  1. Have the default directory name be pre-selected.
  2. Have the elpamr-create-mirror-for-installed command be run once a day, probably at some certain time interval.

In my emacs.d, I have the following code set, but when I run elpamr-create-mirror-for-installed it does not default to ~/myelpa . I still have to indicate the directory at the prompt.

(require 'elpa-mirror)
(setq elpamr-default-output-directory "~/myelpa")

Any ideas on what's going wrong?

P.s. If you have any idea on how to setup a "cron (type) job" in elisp for emacs to run that elpamr-create-mirror-for-installed once a day, say at noon or at 3pm, I'd greatly appreciate the advice.

vagrant-tramp package produces a broken mirror.

Package vagrant-tramp invariably results in a broken mirror archive, because it includes a file bin/vagrant-tramp-ssh.

Notably, it's required for the package to even load properly, so it not being there causes a lot of interesting issues.

I'm not sure how could one rewrite elpamr-tar-command-exclude-patterns to prevent this for specific packages...

执行elpamr-create-mirror-for-installed后导出库不完整,缺少tar文件

您好,执行elpamr-create-mirror-for-installed后导出了el文件、html文件、js文件和archive-contents文件,但是没有tar文件。
我是按照https://github.com/redguardtoo/emacs.d/issues/148中的描述进行的:
in your case, all you need to do is use melpa at least once, then use elpa-mirror to create the mirror. if you still have problem, give me details at elpa-mirror project bug tracker.
但是没有导出tar文件,从输出的Messages中发现似乎zsh执行shell命令有些问题,我使用的是zsh(SHELL=/usr/bin/zsh),是不是这里出现的问题:
zsh:1: no matches found: --exclude=*.elc

完整的Shell command buffer中的内容:
zsh:1: no matches found: --exclude=*.elc

完整的Messages buffer的内容如下:
("emacs")
Loading 00debian-vars...done
Loading /etc/emacs/site-start.d/50autoconf.el (source)...done
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...done
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Error while loading 50dictionaries-common: Symbol's value as variable is void: debian-aspell-only-dictionary-alist
Loading /etc/emacs/site-start.d/50global.el (source)...done
Loading /etc/emacs/site-start.d/50haskell-mode.el (source)...
Loading /usr/share/emacs24/site-lisp/haskell-mode/haskell-mode-autoloads.el (source)...done
Loading /etc/emacs/site-start.d/50haskell-mode.el (source)...done
Loading /etc/emacs/site-start.d/51ghc-mod.el (source)...done
Loading /home/houzy/.emacs.d/defuns/buffer-defuns.el (source)...done
Real cl-lib shadowed by compatibility cl-lib? (/home/houzy/.emacs.d/cl-lib.el)
cl-letf already defined, not rebinding
Removing local package.el from load-path to avoid shadowing bundled version
Loading /home/houzy/.recentf...done
Cleaning up the recentf list...
File /home/houzy/myelpa/index.html removed from the recentf list
File /home/houzy/myelpa/archive-contents removed from the recentf list
File /home/houzy/myelpa/elpa-mirror.js removed from the recentf list
Cleaning up the recentf list...done (3 removed)
[yas] Prepared just-in-time loading for /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets
[yas] Prepared just-in-time loading for ~/.emacs.d/snippets
[yas] Reloaded everything (snippets will load just-in-time)....
Emacs startup time: 2 seconds.
Loading /home/houzy/.emacs.d/.session...done
No desktop file.
[yas] Loading for emacs-lisp-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/emacs-lisp-mode (quote emacs-lisp-mode) (quote (text-mode)))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/emacs-lisp-mode [yas] Loading foremacs-lisp-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/emacs-lisp-mode (quote emacs-lisp-mode) (quote nil))!
[yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/emacs-lisp-mode
[yas] Loading for lisp-interaction-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/lisp-interaction-mode (quote lisp-interaction-mode) (quote nil))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/lisp-interaction-mode [yas] Loading fortext-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/text-mode (quote text-mode) (quote nil))!
[yas] Loading compiled snippets from /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/text-mode
Starting new Ispell process [aspell::default] ...
Package assoc is obsolete!
For information about GNU Emacs and the GNU system, type C-h C-a.
(Shell command succeeded with no output)
Creating .tar and *.el ... 0%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 1%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 2%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 3%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 4%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 5%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 6%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 7%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 8%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 9%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 10%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 11%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 11%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 12%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 13%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 14%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 15%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 16%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 17%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 18%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 19%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 20%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 21%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 22%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 22%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 23%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 24%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 25%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 26%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 27%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 28%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 29%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 30%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 31%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 32%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 33%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 33%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 34%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 35%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 36%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 37%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 38%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 39%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 40%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 41%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 42%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 43%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 44%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 44%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 45%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 46%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 47%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 48%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 49%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 50%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 51%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 52%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 53%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 54%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 55%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 55%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 56%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 57%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 58%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 59%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 60%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 61%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 62%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 63%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 64%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 65%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 66%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 66%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 67%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 68%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 69%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 70%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 71%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 72%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 73%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 74%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 75%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 76%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 77%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 77%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 78%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 79%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 80%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 81%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 82%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 83%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 84%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 85%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 86%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 87%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 88%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 88%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 89%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 90%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 91%
zsh:1: no matches found: --exclude=
.elc
Creating .tar and *.el ... 92%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 93%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 94%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 95%
(Shell command succeeded with no output)
Creating *.tar and *.el ... 96%
zsh:1: no matches found: --exclude=
.elc
Creating *.tar and *.el ... 97%
Saving file /home/houzy/myelpa/archive-contents...
Wrote /home/houzy/myelpa/archive-contents
[yas] Loading for web-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/web-mode (quote web-mode) (quote (js-mode rhtml-mode jsp-mode html-mode)))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/web-mode [yas] Loading forjsp-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/jsp-mode (quote jsp-mode) (quote nil))!
[yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/jsp-mode
[yas] Loading for html-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/html-mode (quote html-mode) (quote (text-mode)))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/html-mode [yas] Loading forhtml-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/html-mode (quote html-mode) (quote (js-mode rhtml-mode)))!
[yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/html-mode
[yas] Loading for js-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/js-mode (quote js-mode) (quote (text-mode)))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/elpa/yasnippet-0.8.0/snippets/js-mode [yas] Loading forjs-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/js-mode (quote js-mode) (quote nil))!
[yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/js-mode
[yas] Loading for rhtml-mode', just-in-time: (yas--load-directory-1 /home/houzy/.emacs.d/snippets/rhtml-mode (quote rhtml-mode) (quote nil))! [yas] Loading compiled snippets from /home/houzy/.emacs.d/snippets/rhtml-mode Here is not Git/Mercurial work tree moz-custom-setup called Saving file /home/houzy/myelpa/index.html... Wrote /home/houzy/myelpa/index.html Saving file /home/houzy/myelpa/elpa-mirror.js... Wrote /home/houzy/myelpa/elpa-mirror.js DONE! Output into /home/houzy/myelpa/ Beginning idle-require idle-require: require init-lisp idle-require: require init-eim Loading /home/houzy/.emacs.d/site-lisp/eim/eim-py.el (source)...done ibuffer-vc: groups set Formats have changed, recompiling...done Updating buffer list...done Beginning idle-require idle-require: require init-keyfreq idle-require: require init-move-window-buffer Beginning idle-require idle-require: require init-elnode idle-require: require init-doxygen idle-require: require init-pomodoro idle-require: require init-emacspeak idle-require: require init-artbollocks-mode idle-require: require init-emacs-w3m idle-require: require init-semantic idle-require finished progn: Beginning of buffer [8 times] Searching forMessages.txt'....

version conflicts when I create mirror from two locations

so late created mirror will contain older packages in archive-contents and index.html.

So I need find a way to update index.html and archive-contents with latest packages which are in the same directory with archive-contents and index.html.

Extra Quotes Passed to archive-contents

I was using the Spacemacs Emacs project and dumping out the libraries it was using with elpa-mirror. I noticed that it had a problem with one package called "persp-mode".

The description string for "persp-mode" must have an extra or escaped quote in it - below.

Below is the "archive-contents" file with the bad quoting in it and my manual fix. After the manual fix I was able to use the elpa-mirror created elpa-mirror dump successfully and everything was fine.

Proposed simple fix is to remove all quotes from the description field when writing archive-contents.

elpa-mirror is a great package!

Double Quoting file "archive-contents" breaks emacs package

 (persp-mode . [(20151120 2338) nil ""perspectives" shared among frames + save/load - bugs." single])

Fixed Double Quoting by Removing Extra Quotes - Worked

 (persp-mode . [(20151120 2338) nil "perspectives shared among frames + save/load - bugs." single])

Error from Emacs Loading with Spacemacs - can't load perps-mode because it had a bad config line in "archive-contents"

Importing package-keyring.gpg...done
(Spacemacs) --> installing spacemacs-layouts:persp-mode... [1/1]
Could not load persp-mode

windows7下执行elpamr-create-mirror-for-installed命令后,只是在myelpa文件生成了archive-contents文件,没有包的tar文件,

在windows7下使用elpa-mirror,
按照教程新建~/myelpa文件夹后,下载了tar并加入path,在emacs执行shell可以查询到tar,
c:\Users\mike\AppData\Local\emacs-29\bin>tar.exe --version
tar.exe --version
tar (GNU tar) 1.13

执行elpamr-create-mirror-for-installed命令后,只是在myelpa文件生成了archive-contents文件,没有包的tar文件
c:/Users/mike/AppData/Local/emacs-29/bin $ cd ~/myelpa/
~/myelpa $ pwd
c:/Users/mike/AppData/Roaming/myelpa
~/myelpa $ ls -la
total 17
drwxrwxrwx 1 mike None 4096 2023-02-07 07:11 .
drwxrwxrwx 1 mike None 4096 2023-02-07 05:54 ..
-rw-rw-rw- 1 mike None 8986 2023-02-07 07:11 archive-contents

Mirror not Showing up in Emacs under Archives

I followed the instructions found in the README and built a mirror of my installed packages just fine; however, when adding the mirror to emacs, it's not pulling any of the packages in at all:

My archive: https://github.com/Justintime50/myelpa

What I added to ~/.emacs:

(add-to-list 'package-archives '("myelpa" . "https://raw.githubusercontent.com/Justintime50/myelpa/main/"))

I've tried running package-refresh-contents and it says it pulls from raw.githubusercontent.com fine but none of the packages appear in list-packages. I'm running Emacs v27.2 on macOS. Does the README need to be updated or have I done something wrong?

How can this be used with spacemacs?

There are very limited access to melpa.org in China. I'd like to know if this mirror config is compatible with spacemacs? Would you mind writing a tutorial wiki?

per package ignores is maybe needed

as an example various tree sitter mode downloads loadable modules in when activated so when I tried to install the elpa mirror package on my macbook I made on my desktop I got linux amd64 libraries which it could not load so I had to delete them so they could be downloaded again. For these specific modes I would like to exclude .so and .dynlib files so that the archive stays os independent.

emacs-24.4 wrong type argument

emacs-24.3 works fine with elpa-mirror.
emacs-24.4 (release candidate) has the following error below. Possibly an argument change in the newest version.

elpamr-create-mirror-for-installed: Wrong type argument: arrayp, ([cl-struct-package-desc zenburn-theme (20140811 754) "A low contrast color theme for Emacs." nil single "elpa-stable" nil nil nil])

Thanks for creating such a great package - was exactly what I needed.

Creating pipe Too many open files on windows 10

image

Creating pip Too many open files errors are eported on windows 10, I think it were because read elpa mirror is too fast and too many elisp files were being compiled at the same time.

All packages would be installed by restaring emacs for a second time.

All the packages:
ac-ispell-20151101.226
ace-jump-helm-line-20160918.1836
ace-link-20191118.935
ace-window-0.9.0
adaptive-wrap-0.7
ag-20190726.9
aggressive-indent-1.8.3
alert-20190816.2205
anzu-20190303.1701
archives
async-20200809.501
auto-compile-20191020.1040
auto-complete-20170125.245
auto-highlight-symbol-20130313.943
auto-yasnippet-20191015.942
avy-0.5.0
bind-key-20191110.416
bind-map-20161207.1511
clean-aindent-mode-20171017.2043
column-enforce-mode-20171030.1900
company-20191114.1356
company-statistics-20170210.1933
company-web-20180402.1155
dash-20200803.1520
deferred-20170901.1330
define-word-20191031.1736
diff-hl-20200701.2141
diminish-20170419.1736
dumb-jump-20191113.503
elisp-slime-nav-20160128.1909
elpa-mirror-20210325.1219
emmet-mode-20180613.341
epl-20180205.2049
eval-sexp-fu-20190109.809
evil-20191121.752
evil-anzu-20170124.718
evil-args-20180908.2157
evil-ediff-20170724.1923
evil-escape-20180910.1234
evil-exchange-20191105.255
evil-iedit-state-20180607.558
evil-indent-plus-20151109.1906
evil-lisp-state-20160404.248
evil-magit-20200604.110
evil-matchit-20191023.2322
evil-mc-20190916.348
evil-nerd-commenter-20191028.115
evil-numbers-20140606.1251
evil-search-highlight-persist-20170523.334
evil-surround-20191013.1656
evil-tutor-20150103.650
evil-unimpaired-0.1pre0.20210412.174325
evil-visual-mark-mode-20190116.1557
evil-visualstar-20160223.48
exec-path-from-shell-20190426.2227
expand-region-20190416.538
eyebrowse-20190928.1458
f-20191110.1357
fancy-battery-20150101.1204
fill-column-indicator-20191109.10
find-file-in-project-20201111.407
flx-20191115.659
flx-ido-20180117.1519
fringe-helper-20140620.2109
fuzzy-20150730.337
git-commit-20200828.1753
git-gutter+-20151204.1723
git-gutter-20201026.850
git-gutter-fringe+-20140729.1103
git-gutter-fringe-20200323.2249
git-link-20200827.2326
git-messenger-20200321.2337
git-timemachine-20200603.701
gitattributes-mode-20180318.1956
gitconfig-mode-20180318.1956
gitignore-mode-20180318.1956
gntp-20141025.250
gnuplot-20141231.2137
golden-ratio-20191028.1732
google-translate-20190620.1416
goto-chg-20190110.2114
haml-mode-20190219.2102
helm-20191122.1454
helm-ag-20170209.1545
helm-c-yasnippet-20170128.1542
helm-company-20190812.1429
helm-core-20191121.2004
helm-css-scss-20140627.25
helm-descbinds-20190501.935
helm-flx-20180103.516
helm-gitignore-20170211.8
helm-make-20190729.1221
helm-mode-manager-20151124.938
helm-projectile-20190731.1538
helm-swoop-20191028.1402
helm-themes-20160918.545
highlight-20190710.1527
highlight-indentation-20181204.839
highlight-numbers-20181013.1744
highlight-parentheses-20180704.1102
hl-todo-20191105.2239
htmlize-20191111.2130
hungry-delete-20170412.102
hydra-20191121.936
iedit-20190419.803
indent-guide-20191106.240
ivy-20201214.2049
link-hint-20190721.1844
linum-relative-20180124.1047
log4e-20170401.1304
lorem-ipsum-20190819.2042
lv-20191106.1238
macrostep-20161120.2106
magit-20201028.1912
magit-gitflow-20170929.824
magit-popup-20200719.1015
monokai-theme-20190801.1701
move-text-20170909.330
neotree-20181121.2026
open-junk-file-20161210.1114
org-bullets-20190802.927
org-category-capture-20180601.242
org-download-20191118.934
org-mime-20191106.1140
org-plus-contrib-20190909
org-pomodoro-20190530.1445
org-present-20180303.2330
org-projectile-20190130.1439
orgit-20200714.1943
packed-20180318.1729
paradox-20191011.1111
parent-mode-20150824.2300
pcre2el-20161120.2103
persp-mode-20190511.1402
pkg-info-20150517.1143
popup-20160709.1429
popwin-20150315.1300
powerline-20190323.213
powershell-20201005.1642
projectile-20191024.721
pug-mode-20180513.2126
rainbow-delimiters-20191018.1233
request-20191122.1416
restart-emacs-20180601.1031
s-20180406.808
sass-mode-20190502.53
scss-mode-20180123.1708
slim-mode-20170728.1348
smartparens-20191015.1754
smeargle-20200323.533
sound-wav-20181126.1726
spaceline-20181223.2024
spinner-1.7.3
tagedit-20161121.855
toc-org-20190902.1055
transient-20201020.1707
undo-tree-0.6.5
use-package-20191110.416
uuidgen-20140918.2301
vi-tilde-fringe-20141028.242
volatile-highlights-20160612.155
web-completion-data-20160318.848
web-mode-20191104.1859
which-key-20191111.1951
winum-20190911.1607
with-editor-20201026.2027
ws-butler-20170111.2334
yasnippet-20191030.1331

[question] works for melpa?

Hi @redguardtoo and thanks for this.

I'm looking for a way to download the whole MELPA repo to a local folder. Is there a way to do this with your solution?

thanks in advance.

Tar File Archive Export Missing in 1.1.4

I was able to get the export of packages to work in 1.1.4 - thanks by the way!

I did notice that the code doesn't copy the .tar archives to the folder. Although in the "archive-contents" file exported the .tar packages are listed in 1.1.4.

Maybe just a copy of the tar files isn't going right?

Exported 24.4 elpa-mirror 1.1.4                                                                                                                                                                                                                                
/prod/htdocs/emacs/elpa/dev:                                                                                                                                                                                                                                   
  -rw-rw-r--   1687 Oct 24 21:30 archive-contents                                                                                                                                                                                                              
  -rw-rw-r--  73506 Oct 24 21:30 dash-20141008.712.el                                                                                                                                                                                                          
  -rw-rw-r--    779 Oct 24 21:30 elpa-mirror.js                                                                                                                                                                                                                
  -rw-rw-r--  23765 Oct 24 21:30 epl-20140823.609.el                                                                                                                                                                                                           
  -rw-rw-r--  25332 Oct 24 21:30 git-commit-mode-20141014.1634.el                                                                                                                                                                                              
  -rw-rw-r--  13185 Oct 24 21:30 git-rebase-mode-20140928.1547.el                                                                                                                                                                                              
  -rw-rw-r--  21519 Oct 24 21:30 helm-projectile-20141023.47.el                                                                                                                                                                                                
  -rw-rw-r--  78428 Oct 24 21:30 htmlize-20130207.1202.el                                                                                                                                                                                                      
  -rw-rw-r--   7474 Oct 24 21:30 index.html                                                                                                                                                                                                                    
  -rw-rw-r--  10223 Oct 24 21:30 pkg-info-20140610.630.el                                                                                                                                                                                                      
  -rw-rw-r-- 108931 Oct 24 21:30 projectile-20141023.47.el                                                                                                                                                                                                     
  -rw-rw-r--   9749 Oct 24 21:30 rich-minority-20140821.2020.el                                                                                                                                                                                                
  -rw-rw-r--  18998 Oct 24 21:30 s-20140910.334.el                                                                                                                                                                                                             
  -rw-rw-r--  59608 Oct 24 21:30 zenburn-theme-20140811.754.el                                                                                                                                                                                                 

Exported 24.3 elpa-mirror 1.1.3xported 24.4 elpa-mirror 1.1.4                                                                                                                                                                                                  
/prod/htdocs/emacs/elpa/dev:                                                                                                                                                                                                                                   
  -rw-rw-r--   1687 Oct 24 21:30 archive-contents                                                                                                                                                                                                             $
/prod/htdocs/emacs/elpa/stable:                                                                                                                                                                                                                                
  -rw-rw-r--    1691 Oct 19 22:04 archive-contents                                                                                                                                                                                                             
  -rw-rw-r--   40960 Oct 19 22:04 async-20141001.151.tar                                                                                                                                                                                                       
  -rw-rw-r--   73506 Oct 19 22:04 dash-20141008.712.el                                                                                                                                                                                                         
  -rw-rw-r--   30720 Oct 19 22:04 elpa-mirror-20140902.37.tar                                                                                                                                                                                                  
  -rw-rw-r--     779 Oct 19 22:04 elpa-mirror.js                                                                                                                                                                                                               
  -rw-rw-r--   23765 Oct 19 22:04 epl-20140823.609.el                                                                                                                                                                                                          
  -rw-rw-r--   25332 Oct 19 22:04 git-commit-mode-20141014.1634.el                                                                                                                                                                                             
  -rw-rw-r--   13185 Oct 19 22:04 git-rebase-mode-20140928.1547.el                                                                                                                                                                                             
  -rw-rw-r-- 1105920 Oct 19 22:04 helm-20141016.2217.tar                                                                                                                                                                                                       
  -rw-rw-r--   21648 Oct 19 22:04 helm-projectile-20141018.1003.el                                                                                                                                                                                             
  -rw-rw-r--   78428 Oct 19 22:04 htmlize-20130207.1202.el                                                                                                                                                                                                     
  -rw-rw-r--    7492 Oct 19 22:04 index.html                                                                                                                                                                                                                   
  -rw-rw-r--  481280 Oct 19 22:04 magit-20141016.1055.tar                                                                                                                                                                                                      
  -rw-rw-r--  102400 Oct 19 22:04 multiple-cursors-20141003.551.tar                                                                                                                                                                                            
  -rw-rw-r--   10223 Oct 19 22:04 pkg-info-20140610.630.el                                                                                                                                                                                                     
  -rw-rw-r--  108908 Oct 19 22:04 projectile-20141018.1003.el                                                                                                                                                                                                  
  -rw-rw-r--    9749 Oct 19 22:04 rich-minority-20140821.2020.el                                                                                                                                                                                               
  -rw-rw-r--   18998 Oct 19 22:04 s-20140910.334.el                                                                                                                                                                                                            
  -rw-rw-r--   92160 Oct 19 22:04 smart-mode-line-20140904.1144.tar                                                                                                                                                                                            
  -rw-rw-r--   59608 Oct 19 22:04 zenburn-theme-20140811.754.el                

M-x package-install error

MacOS Emacs 28.3

配置好本地镜像,安装包时,有的包会出现如下错误,个别包不会出错如use-package

Parsing tar file...done
package-untar-buffer: Package does not untar cleanly into directory terminal-focus-reporting-20180830.1519/

M-x tar-untar-buffer
cl--assertion-failed: Assertion failed: (not enable-multibyte-characters)

Error when creating mirror

After updating emacs to version 26.0.90, I got an error when calling elpamr-create-mirror-for-installed

It fails on the first installed package (anzu) with a long backtrace and the final error message:

condition-case: Wrong type argument: sequencep, #s(package-desc anzu (20161017 907) "Show number of matches in mode-line while searching" ((emacs (24 3))) single "melpa" nil ((:commit . "e6c56ca8b23ac433f7be58b6f3f50801dd4164e4") (:url . "https://github.com/syohex/emacs-anzu")) nil)

Not work on win10

elpa-mirror log:

* Detected tar variant: BSD
* Running cygpath: "cygpath" ("-u" "--" "d:/Code/ELisp/myelpa/ace-window-20200606.1259")
* Converted to full path: "d:/Code/ELisp/myelpa/" "ace-window-20200606.1259" -> "/cygdrive/d/Code/ELisp/myelpa/ace-window-20200606.1259"
* Running tar: "tar" ("cf" "/cygdrive/d/Code/ELisp/myelpa/ace-window-20200606.1259.tar" "--exclude=^*.elc" "--exclude=^*~" "--exclude=^*.so" "--exclude=^*.dylib" "--exclude=^*.dll" "--exclude=^*/bin" "--exclude=^*/__pycache__" "-C" "c:/Users/xhcoding/.emacs.d/elpa" "--" "ace-window-20200606.1259")
tar.exe: Failed to open '/cygdrive/d/Code/ELisp/myelpa/ace-window-20200606.1259.tar'
* Program tar exited with non-zero status 1, see the *elpa-mirror log* buffer for details

tar version

bsdtar 3.3.2 - libarchive 3.3.2 zlib/1.2.5.f-ipp

[feature request] straight.el support, please

Dear @redguardtoo!

Thanks a lot for this awesome package! Love it so much!
I use this together with use-package and straight.el, and I am just aware that it seems the packages installed with straight.el are not mirrored.

Can you please kindly teach me how to mirror those packages managed by straight.el?
Or is it possible to support straight.el in the future?

Thanks and regards,
Jason

missing org packages

Hi @redguardtoo, @ninrod here. When trying to use your package, my org packages become missing.

I've set up a github repo using your tips section: https://github.com/ninrod/thin-elpa-mirror

What I find is that my org packages that come from the org mode site are not taken into account.

Here is my rsynced melpa mirror, using the "fat" approach.

Do you have any ideas on how could I use your package to create a thin melpa/elpa mirror for myself?

thanks in advance.

tar: unrecognized option '--sort=name'

Hi,

--sort was introduced in 1.28 according: https://www.gnu.org/software/tar/

The tar version on my SuSE 12 is 1.27.1
Do you have plan to support the old tar version?

Below is the full elpa-mirror log:

  • Detected tar variant: GNU
  • Converted to full path: "~/.elpa-mirror/" "ace-window-20200606.1259" -> "/home/baolong/.elpa-mirror/ace-window-20200606.1259"
  • Running tar: "tar" ("cf" "/home/baolong/.elpa-mirror/ace-window-20200606.1259.tar" "--anchored" "--exclude=.elc" "--exclude=~" "--exclude=.so" "--exclude=.dylib" "--exclude=.dll" "--exclude=/bin" "--exclude=*/pycache" "--format=gnu" "--sort=name" "--owner=root:0" "--group=root:0" "--mtime=1970-01-01 00:00:00 UTC" "-C" "/local/users/baolong/workspace/emacs.d/elpa" "--" "ace-window-20200606.1259")
    /bin/tar: unrecognized option '--sort=name'
    Try 'tar --help' or 'tar --usage' for more information.
  • Program tar exited with non-zero status 64, see the elpa-mirror log buffer for details

not working for doom-emacs develop branch

used to work great for doom-emacs master branch, but since I switch to use the develop branch of doom emacs (https://github.com/hlissner/doom-emacs), this package stops working.

It's as if it couldn't detect any package installed, so nothing happens after running command elpamr-create-mirror-for-installed.

my environment:
GNU Emacs 26.1 (build 1, x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F2511)) of 2018-05-30

macOS Mojave 10.14.2 (18C54)

PAXHeader cause the package installation failed

The tar which I used is:
tar (GNU tar) 1.27.1

It use the --format=posix(pax) by default, it will cause error:
"Package does not untar cleanly into directory %s/"

Patch like blow solve the error:

          (setq tar-cmd (concat (if (elpamr--is-mac) "COPYFILE_DISABLE=\"\" " "")
                                (elpamr--executable-find "tar")
                                " cf "
                                (elpamr--fullpath output-directory dir)
                                ".tar --exclude=\"*.elc\" --exclude=\"*~\" "
+                                " --format=gnu "
                                " -C "
                                package-user-dir
                                " "
                                dir))

No tar files created

When I run the elpamr-create-mirror-for-installed command, no tar file is created into the destination dir, I only see the archive-contants. But I see the tar program operating in the minibuffer.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.