In che modo emacs gestisce i suoi pacchetti?


9

Ho installato auctex dal centro software di Ubuntu, quindi ho installato una versione più recente di auctex da emacs.

Ho quindi disinstallato l'auctex installato dal centro software di Ubuntu. Ho scoperto che non ha disinstallato quello che ho installato da Emacs.

In che modo emacs gestisce i suoi pacchetti?

Non ci sono interferenze tra emacs e Ubuntu nella gestione dell'installazione e della disinstallazione dei pacchetti emacs?

Se ho ragione, qualche anno fa, non c'era modo di installare pacchetti all'interno di emacs?

Grazie.


2
IMO, questa domanda è troppo ampia per le domande e risposte SE. Meglio leggere il documento Emacs e quindi pubblicare qui una domanda specifica su una parte specifica della gestione dei pacchetti che non ti è chiara. Non dovremmo riprodurre qui il documento Emacs. E se c'è qualcosa di importante che manca dal documento Emacs allora si dovrebbe presentare una richiesta di report / valorizzazione di bug: M-x report-emacs-bug. Le persone che rispondono a una domanda del genere qui farebbero meglio a contribuire ai documenti di Emacs, se mancano le informazioni. A PARER MIO.
Drew

3
Tim: Nel caso in cui ci sia confusione, un "pacchetto" Emacs e un "pacchetto" Ubuntu / Debian sono cose completamente indipendenti. Qualsiasi pacchetto Debian relativo a Emacs non ha alcuna connessione con il gestore di pacchetti package.el integrato in Emacs 24.
phils,

1
@Tim, non dimenticare di accettare una risposta o facci sapere se le risposte non sono soddisfacenti.
Malabarba,

1
@Drew La domanda riguarda più l'interazione tra i pacchetti Ubuntu ed Emacs, quindi non verrebbe trattata nei documenti di Emacs. E le risposte parlano anche di pacchetti di terze parti che i documenti non trattano, quindi questo è probabilmente il posto migliore per chiedere tali cose.
Brian Burns,

Risposte:


11

Come diceva paprika, Emacs usa load-pathper cercare l'elenco dei elispfile disponibili ( .elc, .el)

La load-pathviene ricercato il primo pacchetto corrispondente quando viene richiesto. Se sono installate più copie di un pacchetto, verrà caricato il primo.

Il gestore pacchetti distro non può installare sulla stessa fonte package-install, poiché uno è a livello di sistema e l'altro è specifico dell'utente.

Fonti del pacchetto

Integrato e specifico per Distro

Distro Package Manager

I gestori pacchetti Distro offrono una selezione di pacchetti emacs che possono essere installati. Nella mia esperienza questi sono spesso tra i pacchetti più popolari / ampiamente utilizzati. Prima dello sviluppo di package.elquesto era il modo più semplice per ottenere i pacchetti. (Più semplice grazie alla sola esecuzione apt-get install <package>anziché all'utilizzo del controllo versione o al download diretto.

I pacchetti installati tramite il gestore pacchetti di distribuzione sono installati per /usr/local/share/emacs/site-lisp/impostazione predefinita in load-pathe verranno nascosti da load-pathaggiunte specifiche dell'utente .

Package.el

package.elè stato incluso per la prima volta in Emacs 24. Questa versione è compatibile con, Emacs 23ma deve essere installata manualmente, i pacchetti recuperati potrebbero essere o meno compatibili Emacs 23.

package.elfornisce un repository sfogliabile di pacchetti per Emacs. Per impostazione predefinita Elpaè configurato solo il repository, ma è possibile aggiungere l' accesso a MELPA e Marmelade :

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

Ciò fornisce l'accesso a un pool di pacchetti molto più ampio.

Per impostazione predefinita package.elinstalla i pacchetti su ~/.emacs.d/elpae quando (package-initialize)viene chiamata questa directory verrà posizionata più vicino alla parte anteriore di load-path, facendo sì che questi pacchetti abbiano la precedenza su quelli installati dal gestore dei pacchetti di distribuzione.

Git / Bzr / hg / ... + EmacsWiki

I pacchetti a controllo di versione possono essere recuperati manualmente dal loro repository tramite la clonazione. Alcuni forniscono anche versioni in pacchetto che possono essere scaricate direttamente.

I file Elisp di EmacsWiki possono anche essere scaricati, sebbene siano in genere file singoli piuttosto che directory.

Una volta recuperato il pacchetto, assicurarsi che la cartella di destinazione sia sul proprio load-pathe che sarà disponibile per l'uso.

Gestione dei pacchetti di terze parti

Questi strumenti forniscono wrapper o funzionalità aggiuntive rispetto a quanto sopra per centralizzare la gestione dei pacchetti. Sono progettati pensando alla configurazione condivisa per garantire che tutte le macchine dispongano degli stessi pacchetti disponibili.

El-Get

El-Get mantiene una lista di ricette che permettono di scaricare i pacchetti utilizzando package.el, git, emacswikicome fonti (tra gli altri). Fornisce inoltre funzioni per garantire che i pacchetti siano aggiornati, gestire il caricamento (posticipato o immediato) e archiviare la personalizzazione specifica del pacchetto in file che vengono caricati automaticamente quando il pacchetto è required.

Botte

Cask è progettato per la gestione dei progetti in / per Emacs. Utilizza un caskfile per mantenere un elenco di dipendenze (altri pacchetti) necessarie per utilizzare il pacchetto e scaricherà i pacchetti mancanti per garantire che tutto venga caricato correttamente.

Può essere utilizzato per gestire le configurazioni dei pacchetti locali trattando il proprio ~/.emacs.dprogetto e chiamando (cask-initialize)all'avvio.

straight.el

straight.elè progettato per le persone che desiderano apportare modifiche locali ai loro pacchetti e possibilmente contribuire a tali modifiche a monte. Estrae le ricette da MELPA , GNU ELPA ed EmacsMirror o consente di specificare le proprie. Supporta anche la scrittura di un file di blocco di revisione per la massima riproducibilità, tra molte altre funzionalità.

Usa-Package

Use-Package è progettato principalmente come strumento di gestione della configurazione di emacs. Scaricherà i package.elpacchetti necessari ma non ha meccanismi integrati per accedere ad altre fonti. Consente il caricamento differito dei pacchetti e la personalizzazione differita. Ciò migliora l'inizializzazione di emacs mentre rallenta l'uso iniziale dei pacchetti (ma se non li si utilizza in una determinata sessione si ottiene solo un guadagno netto).


elpakit è anche disponibile, svolge un lavoro simile a botte ma senza i bit non elisp.
Nic Ferrier,

@nicferrier Potresti elaborare come usarlo per la gestione dei pacchetti? (Posso vedere come usarlo per i pacchetti esistenti, ma Cask permette anche di aggiungere fonti arbitrarie se l'ho letto correttamente)
Jonathan Leech-Pepin,

bene elpakit ti consente principalmente di fare due cose: creare repository sul tuo disco come pacchetti (crea anche archivi di pacchetti da raccolte di questi) e creare pacchetti che dipendono automaticamente da altri pacchetti. Mx elpakit-package-list-buf crea un buffer con un elenco dei pacchetti elpa in esso che è possibile utilizzare per creare un altro pacchetto che dipende dai pacchetti elpa selezionati.
Nic Ferrier,

Penso che i pacchetti installati tramite il gestore pacchetti distro vadano dentro /usr/share/emacs/site-lisp, non /usr/local/share...dal momento che i localdir sono pensati per installazioni non distro.
JeanPierre,

10

Emacs usa il load-path, che è essenzialmente un elenco di directory che dovrebbe cercare i file Lisp. Se un pacchetto è disponibile in load-pathallora è installato .

Non esiste un'interfaccia tra il gestore pacchetti Debian / Ubuntu e il gestore pacchetti Emacs (package.el). Il primo installa i pacchetti Emacs a livello di sistema (disponibile per tutti gli utenti del computer) mentre il secondo installa un pacchetto per impostazione predefinita nella directory home. Teoricamente puoi usare entrambe le fonti per installare i pacchetti. Tuttavia, vorrei sconsigliare questa pratica: potresti riscontrare alcuni problemi quando installi lo stesso pacchetto da entrambe le fonti.

L'elenco dei pacchetti Emacs che è possibile installare tramite il gestore pacchetti Debian / Ubuntu è molto più limitato rispetto a ELPA / MELPA / ..., poiché ogni pacchetto deve essere preparato specificamente per Debian / Ubuntu. In altre parole: pacchetto su ELPA! = Pacchetto in Debian.


Quando gli è stato chiesto qualche anno fa, penso che stesse parlando di Elpa
Malabarba il

@Malabarba: Anzi, ho capito male. Ho rimosso la frase irrilevante.
paprika,

1
Questa risposta è vera per altri gestori di pacchetti di distro come yum (Fedora), pacman (Arch) ecc.
Vamsi,

E ti manca il repo marmellata dalla lista. Il repository originale non GNU.
Nic Ferrier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.