Comment emacs gère-t-il ses packages?

9

J'ai installé auctex à partir du centre de logiciels d'Ubuntu, puis j'ai installé une version plus récente d'auctex à partir d'emacs.

J'ai ensuite désinstallé l'auctex installé par le centre logiciel d'Ubuntu. J'ai trouvé qu'il n'avait pas désinstallé celui que j'avais installé à partir d'emacs.

Comment emacs gère-t-il ses packages?

N'y a-t-il pas d'interférence entre emacs et Ubuntu dans la gestion de l'installation et de la désinstallation des packages emacs?

Si j'ai raison, il y a quelques années, il n'y avait aucun moyen d'installer des packages dans emacs?

Merci.

Tim
la source
2
OMI, cette question est trop large pour SE Q&A. Mieux vaut lire le document Emacs, puis poster ici une question spécifique sur une partie spécifique de la gestion des packages qui n'est pas claire pour vous. Nous ne devrions pas reproduire le document Emacs ici. Et s'il y a quelque chose d' important qui manque de la doc Emacs, vous devez déposer un rapport de bogue / demande d'amélioration: M-x report-emacs-bug. Les personnes qui répondent à une telle question ici feraient mieux de contribuer aux documents Emacs, si les informations sont manquantes. A MON HUMBLE AVIS.
Drew
3
Tim: Juste au cas où il y aurait de la confusion, un "paquet" Emacs et un "paquet" Ubuntu / Debian sont des choses totalement indépendantes. Tout paquet Debian lié à Emacs n'a aucune connexion avec le gestionnaire de paquets package.el intégré à Emacs 24.
phils
1
@Tim, n'oubliez pas d'accepter une réponse, ou faites-nous savoir si les réponses ne sont pas satisfaisantes.
Malabarba
1
@Drew La question concerne plus l'interaction entre les paquets Ubuntu et Emacs, donc ne serait pas traitée dans les documents Emacs. Et les réponses traitent également des packages tiers que les documents ne couvrent pas, c'est donc probablement le meilleur endroit pour poser de telles choses.
Brian Burns

Réponses:

11

Comme l'a dit paprika, Emacs utilise load-pathpour rechercher la liste des elispfichiers disponibles ( .elc, .el)

On load-pathrecherche le premier package correspondant lorsqu'il est requis. Si plusieurs copies d'un package sont installées, la première sera chargée.

Le gestionnaire de packages distro ne peut pas installer sur la même source que lui package-install, car l'un est à l'échelle du système et l'autre est spécifique à l'utilisateur.

Sources de package

Intégré et spécifique à la distribution

Distro Package Manager

Les gestionnaires de packages Distro fournissent une sélection de packages emacs qui peuvent être installés. D'après mon expérience, ce sont souvent parmi les packages les plus populaires / largement utilisés. Avant le développement de package.elcela, c'était le moyen le plus simple d'obtenir les packages. (Plus facile en raison de la simple exécution apt-get install <package>au lieu d'utiliser le contrôle de version ou le téléchargement direct.

Les packages installés via le gestionnaire de packages distro sont installés, /usr/local/share/emacs/site-lisp/ce qui est une valeur par défaut dans le load-pathet seront masqués par des load-pathajouts spécifiques à l'utilisateur .

Package.el

package.ela d'abord été inclus avec Emacs 24. Cette version est compatible avec Emacs 23mais doit être installée manuellement, les paquets récupérés par elle peuvent ou non être compatibles avec Emacs 23.

package.elfournit un référentiel navigable de packages pour Emacs. Par défaut, seul le Elparéférentiel est configuré, mais l'accès à MELPA et Marmelade peut être ajouté:

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

Cela donne accès à un pool beaucoup plus important de packages.

Par défaut, package.elinstalle les packages sur ~/.emacs.d/elpaet quand (package-initialize)est appelé, ce répertoire sera placé plus près de l'avant de load-path, ce qui fera que ces packages auront la priorité sur ceux installés par le gestionnaire de packages de distribution.

Git / Bzr / hg / ... + EmacsWiki

Les packages contrôlés par version peuvent être récupérés manuellement de leur référentiel via le clonage. Certains proposent également des versions packagées qui peuvent être téléchargées directement.

Les fichiers EmacsWiki Elisp peuvent également être téléchargés, bien qu'il s'agisse généralement de fichiers uniques plutôt que de répertoires.

Une fois le package récupéré, assurez-vous que le dossier de destination se trouve sur votre ordinateur load-pathet qu'il sera disponible à l'utilisation.

Gestion de packages tiers

Ces outils fournissent des wrappers ou des fonctionnalités supplémentaires par rapport à ce qui précède pour centraliser la gestion des packages. Ils sont conçus avec une configuration partagée à l'esprit pour garantir que toutes vos machines ont les mêmes packages disponibles.

El-Get

El-Get tient à jour une liste des recettes qui lui permettent de récupérer les paquets en utilisant package.el, git, en emacswikitant que sources (entre autres). Il fournit également des fonctions pour garantir que les packages sont à jour, gérer le chargement (différé ou immédiat) et stocker la personnalisation spécifique au package dans des fichiers qui sont chargés automatiquement lorsque le package l'est required.

Fût

Cask est conçu pour la gestion de projet dans / pour Emacs. Il utilise un caskfichier pour maintenir une liste des dépendances (autres packages) nécessaires pour utiliser le package, et téléchargera les packages manquants pour s'assurer que tout se charge correctement.

Il peut être utilisé pour gérer les configurations de packages locaux en le traitant ~/.emacs.dcomme un projet et en appelant (cask-initialize)au démarrage.

straight.el

straight.elest conçu pour les personnes qui souhaitent apporter des modifications locales à leurs packages et éventuellement apporter ces modifications en amont. Il tire des recettes de MELPA , GNU ELPA et EmacsMirror , ou vous permet de spécifier les vôtres. Il prend également en charge l'écriture d'un fichier de verrouillage de révision pour une reproductibilité maximale, parmi de nombreuses autres fonctionnalités.

Use-Package

Use-Package est principalement conçu comme un outil de gestion de configuration emacs. Il téléchargera les package.elpackages nécessaires mais ne dispose pas de mécanismes intégrés pour accéder à d'autres sources. Il permet un chargement différé des packages et une personnalisation différée. Cela améliore l'initialisation d'emacs tout en ralentissant l'utilisation initiale des packages (mais si vous ne les utilisez pas dans une session donnée, il n'y a qu'un gain net).

Jonathan Leech-Pepin
la source
elpakit est également disponible, il effectue un travail similaire à cask mais sans les bits non elisp.
nic ferrier
@nicferrier Pourriez-vous expliquer comment l'utiliser pour la gestion des packages? (Je peux voir comment l'utiliser pour les packages existants, mais Cask permet également d'ajouter des sources arbitraires si je le lis correctement)
Jonathan Leech-Pepin
bien elpakit vous permet principalement de faire deux choses: créer des référentiels sur votre disque sous forme de packages (il crée également des archives de packages à partir de collections de ceux-ci) et créer automatiquement des packages qui dépendent d'autres packages. Mx elpakit-package-list-buf crée un tampon contenant une liste de vos packages elpa que vous pouvez ensuite utiliser pour créer un autre package qui dépend des packages elpa sélectionnés.
nic ferrier
Je pense que les packages installés via le gestionnaire de packages distro entrent /usr/share/emacs/site-lisp, pas /usr/local/share...puisque les localrépertoires sont destinés aux installations non distro.
JeanPierre
10

Emacs utilise le load-path, qui est essentiellement une liste de répertoires qu'il doit rechercher pour les fichiers Lisp. Si un package est disponible dans le, load-pathil est installé .

Il n'y a pas d'interface entre le gestionnaire de paquets Debian / Ubuntu et le gestionnaire de paquets Emacs (package.el). Le premier installe les packages Emacs à l'échelle du système (accessible à tous les utilisateurs de l'ordinateur) tandis que le second installe un package par défaut sous votre répertoire personnel. Théoriquement, vous pouvez utiliser les deux sources pour installer des packages. Cependant, je déconseille cette pratique: vous pouvez rencontrer des problèmes lorsque vous installez le même package à partir des deux sources.

La liste des paquets Emacs que vous pouvez installer via le gestionnaire de paquets Debian / Ubuntu est beaucoup plus limitée par rapport à ELPA / MELPA / ..., car chaque paquet doit être préparé spécifiquement pour Debian / Ubuntu. En d'autres termes: package sur ELPA! = Package dans Debian.

paprika
la source
Quand il a posé la question il y a quelques années, je pense qu'il parlait d'Elpa
Malabarba
@Malabarba: En effet, j'ai mal compris. J'ai supprimé la phrase non pertinente.
paprika
1
Cette réponse est vraie pour les autres gestionnaires de packages de distribution tels que yum (Fedora), pacman (Arch) etc.
Vamsi
Et il vous manque marmelade-repo de la liste. Le référentiel non GNU d'origine.
nic ferrier