Wie unter how to automatically install emacs packages by specifying a list of package names? erwähnt, wäre es besser, auch die Version des Pakets aufzunehmen, die Sie benötigen. Um dies zu tun, können Sie die folgende Funktion verwenden:
(defun list-packages-and-versions()
"Returns a list of all installed packages and their versions"
(mapcar
(lambda (pkg)
`(,pkg ,(package-desc-version
(cadr (assq pkg package-alist)))))
package-activated-list))
dass Sie eine Liste von (NAME VERSION)
Paare geben. Leider konnte ich keine Möglichkeit finden, eine bestimmte Version eines Pakets zu installieren. Es scheint, package.el
greift immer die neuesten verfügbaren. Was ich tue, ist jetzt:
(defun install-packages-with-specific-versions (package-version-list)
"Install the packages in the given list with specific versions.
PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists,
where NAME is a symbol identifying the package and VERSION is
the minimum version to install."
(package-download-transaction
(package-compute-transaction() package-version-list)))
Ich habe eine längere Funktion geschrieben Installieren von Paketen die genaue Versionsnummer übereinstimmt, aber es funktioniert nicht, weil package.el
standardmäßig nur die neuesten Versionen für jedes Paket abruft. gist
Oh das ist fabelhaft. – uchuugaka
Es ist erwähnenswert, die Paket-aktivierte Liste wird nicht durch Entfernen von Paketen aktualisiert, sondern scheint nur beim Neustart. – uchuugaka