Невозможно открыть ошибку загрузки файла при извлечении файла.emacs.d из системы управления версиями с помощью ELPA.
Я искал ответ на все это, и я не могу понять это. Я установил auctex
с помощью package.el
(elpa
) в GNU Emacs 24.3.1. Я пытаюсь использовать Github для контроля версий, и я храню все свои настройки и настройки в своем .emacs.d/init.el
(не используется .emacs
совсем). Я пытаюсь синхронизировать все пакеты между несколькими машинами, просто вытягивая .emacs.d
каждый раз, когда я еду на новой машине, у меня все работает нормально.
Я передал весь свой.emacs.d используя git add -A
а затем фиксации и нажатия (из OS X). Затем я перетаскиваю хранилище на другой компьютер (компьютер с Windows 7). При загрузке я получаю следующую ошибку
Warning (initialization): An error occurred while loading `c:/Users/user/.emacs.d/init.el':
File error: Cannot open load file, c:/Users/user/.emacs.d/elpa/auctex-11.87.1/auctex-autoloads
Я попытался включить следующее в моем init.el
(setq package-enable-at-startup nil)
(package-initialize)
(require 'auctex)
но без удачи. Кто-нибудь знает, что может быть причиной проблемы?
РЕДАКТИРОВАТЬ: я только что понял, что, когда я делал коммит на GitHub, он не добавлял все файлы, которые я ожидал, включая не добавление auctex-autoloads.el. Я не уверен, почему это так, но я думаю, что это как-то связано с тем, как я добавляю файлы для фиксации в GitHub. Любая помощь будет оценена!
РЕДАКТИРОВАТЬ 2: я попытался добавить опцию --force
в git add -a --force
и теперь все работает как положено. Я все еще изучаю git, так что я думаю, что это была простая ошибка. Я все еще не совсем уверен, почему он автоматически исключает некоторые файлы, а не другие, но я постараюсь это выяснить.
Спасибо!
2 ответа
Git автоматически исключает определенные файлы из коммита при использовании git add -A
хотя я не уверен почему. Мне нужно было включить --force
вариант (т.е. git add -A --force
), а затем он правильно добавил все файлы в хранилище. Оказывается, мне не хватало auctex-autoloads.el
это было необходимо.
Кроме того, я затем добавил свой собственный.gitignore с несколькими каталогами, которые я не хотел добавлять в репозиторий, и похоже, что он переопределил любые правила игнорирования, заставляя его исключать файлы автозагрузки и файлы с расширением.elc, Итак, теперь мне нужно только git add -A
добавить все файлы в хранилище.
Спасибо всем за внимание!
Другой стратегией, которую вы могли бы рассмотреть, является сохранение ваших файлов инициализации в git и включение метода, который автоматически загружает ваши установленные пакеты из elpa на новую машину, когда это необходимо. Это избавляет от необходимости хранить все содержимое пакета в вашем хранилище, но требует, чтобы у каждой машины был доступ к сайту elpa.
Я храню конфигурацию пакета в отдельной конфигурации и загружаю ее из моего файла инициализации.
Вот метод, который я использую для перезагрузки отсутствующих пакетов:
;; emacs package manager.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/")
'("org" . "http://orgmode.org/elpa/"))
(package-initialize)
;; Create a list of the packages currently installed. You can use the
;; contents of the directory in which they are stored (usually
;; ~/.emacs.d/elpa). Ensure you only use the package name, and not any
;; version information.
;; a good way to get a formatted list of the packages loaded is with the
;; following shell command:
;; ls ~/.emacs.d/elpa | sed -e s/-[0-9.].*//
(defvar cm/packages nil
"A list of elpa packages that should be available on startup")
(setq cm/packages
'(
auto-complete
bm
browse-url-dwim
bs-ext
color-moccur
color-theme-sanityinc-solarized
csv-mode
dash
deferred
diminish
dired-hacks-utils
elisp-slime-nav
epl
esh-help
git-commit-mode
git-gutter+
git-rebase-mode
git-timemachine
hc-zenburn-theme
highlight-symbol
hl-sexp
ht
htmlize
igrep
js2-mode
list-utils
magit
markdown-mode
names
org
ox-pandoc
pandoc-mode
paredit
popup
projectile
request
request-deferred
s
smartparens
sqlplus
starter-kit-eshell
string-utils
w3m
windata
))
;; cycle through the package list and prompt to install any missing from
;; the list
(defvar missing-pkgs '())
(defun cm-package-refresh ()
(interactive)
(setf missing-pkgs nil)
(dolist (pkg cm/packages)
(if (not (package-installed-p pkg))
(progn
(add-to-list 'missing-pkgs pkg)
(setq cm-message "Done"))
(setq cm-message "Nothing missing")))
;; for any missing packages, ask to load them all
(if (and (> (length missing-pkgs) 0)
(y-or-n-p-with-timeout
(format "%s %s " "install missing packages:" missing-pkgs) 4 nil))
(dolist (mpkg missing-pkgs)
(package-install mpkg)))
(message "%s" cm-message))
;; now check for missing packages
(if (y-or-n-p-with-timeout "Check packages? " 4 nil)
(cm-package-refresh))
(provide 'emacs-package)