Come menzionato allo how to automatically install emacs packages by specifying a list of package names?, sarebbe meglio registrare anche la versione del pacchetto di cui avete bisogno. Per fare ciò, è possibile utilizzare la seguente funzione:
(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))
che vi darà una lista di (NAME VERSION)
coppie. Sfortunatamente, non sono stato in grado di trovare un modo per installare una versione specifica di un pacchetto. Sembra che package.el
afferri sempre l'ultimo disponibile. Quello che sto facendo ora è:
(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)))
ho scritto una funzione più tempo per installare i pacchetti che corrispondono l'esatto numero di versione, ma non riesce a causa package.el
di default recupera solo le ultime versioni disponibili per ogni pacchetto. gist
Oh questo è favoloso. – uchuugaka
Vale la pena notare che l'elenco attivato dal pacchetto non viene aggiornato rimuovendo i pacchetti, ma sembra solo al riavvio. – uchuugaka