emacsはそのパッケージをどのように管理しますか?


9

Ubuntuのソフトウェアセンターからauctexをインストールしてから、emacsから新しいバージョンのauctexをインストールしました。

次に、Ubuntuのソフトウェアセンターによってインストールされたauctexをアンインストールしました。emacsからインストールしたものをアンインストールしないことがわかりました。

emacsはそのパッケージをどのように管理しますか?

emacsパッケージのインストールとアンインストールの管理において、emacsとUbuntuの間に干渉はありませんか?

私が正しければ、数年前、emacs内にパッケージをインストールする方法がありませんでしたか?

ありがとう。


2
IMO、この質問はSE Q&Aに広すぎます。Emacsのドキュメントを読んでから、パッケージ管理の特定の部分について明確でない質問をここに投稿してください。ここではEmacsのドキュメントを複製するべきではありません。Emacsのドキュメントに欠けている重要なものがある場合は、バグレポート/機能拡張リクエストを提出する必要がありますM-x report-emacs-bug。情報が欠落している場合、ここでそのような質問に答える人々は、Emacsのドキュメントに貢献したほうがよいでしょう。私見では。
ドリュー

3
Tim:混乱が生じた場合に備えて、Emacsの「パッケージ」とUbuntu / Debianの「パッケージ」はまったく無関係です。任意のEmacs関連のDebianパッケージは、Emacs 24に組み込まれてpackage.elパッケージマネージャに一切関係ありません
PHILS

1
@ティム、答えを受け入れることを忘れないでください、または答えが満足のいくものでない場合はお知らせください。
Malabarba 2014年

1
@Drew問題は、UbuntuとEmacsパッケージの間の相互作用についてですが、Emacsのドキュメントでは取り上げられません。回答には、ドキュメントがカバーしていないサードパーティのパッケージも含まれているので、これはおそらくそのようなことを尋ねるのに最適な場所です。
Brian Burns

回答:


11

パプリカが言ったように、Emacsはload-path利用可能なelispファイルのリストを検索するために使用します(.elc.el

load-pathそれが要求されている場合、最初に一致したパッケージを検索します。パッケージの複数のコピーがインストールされている場合、最初のものが読み込まれます。

package-install1つはシステム全体であり、もう1つはユーザー固有であるため、ディストリビューションパッケージマネージャーは、同じソースにインストールできません。

パッケージソース

組み込みおよびディストリビューション固有

ディストリビューションパッケージマネージャー

ディストリビューションパッケージマネージャーは、インストール可能なemacsパッケージの選択を提供します。私の経験では、これらはしばしばより人気のある/広く使用されているパッケージの1つです。これが開発される前は、パッケージを入手する最も簡単な方法package.elでした。(バージョン管理や直接ダウンロードを使用するのではなく、実行するだけで最も簡単です。apt-get install <package>

ディストリビューションパッケージマネージャーを介してインストールされたパッケージ/usr/local/share/emacs/site-lisp/は、のデフォルトでインストールさload-pathれ、ユーザー固有のload-path追加によって非表示になります。

Package.el

package.elは最初にに含まれていましたEmacs 24このバージョンはと互換性Emacs 23がありますが、手動でインストールする必要があります。取得したパッケージはと互換性がある場合とない場合がありますEmacs 23

package.elEmacs用のパッケージの参照可能なリポジトリを提供します。デフォルトでは、唯一のElpaリポジトリが設定されていますが、アクセスMELPAマーマレードを追加することができます。

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

これにより、はるかに大きなパッケージのプールにアクセスできます。

デフォルトでpackage.elは、パッケージはにインストールされ~/.emacs.d/elpa(package-initialize)呼び出されると、このディレクトリはの前面に配置されload-pathます。その結果、これらのパッケージは、配布パッケージマネージャーによってインストールされるパッケージよりも優先されます。

Git / Bzr / hg / ... + EmacsWiki

バージョン管理されたパッケージは、複製によってリポジトリから手動で取得できます。直接ダウンロードできるパッケージリリースを提供するものもあります。

EmacsWiki Elispファイルもダウンロードできますが、通常はディレクトリではなく単一のファイルです。

パッケージが取得されたら、宛先フォルダーがにload-pathあり、使用できることを確認します。

サードパーティのパッケージ管理

これらのツールは、パッケージ管理を一元化するために、上記のラッパーまたは追加機能を提供します。すべてのマシンで同じパッケージを使用できるように、共有構成を考慮して設計されています。

エルゲット

エルは-getは、それが使用してパッケージを取得できるようにするレシピのリストを維持しpackage.elgitemacswiki情報源として(特に)。また、パッケージが最新であることを確認し、読み込みを(遅延または即時に)管理し、パッケージ固有のカスタマイズを、パッケージがのときに自動的に読み込まれるファイルに保存する機能も提供しますrequired

キャスク

Caskは、Emacsのプロジェクト管理用に設計されています。これは、使用するcaskパッケージを使用するために必要な依存関係(他のパッケージ)のリストを維持するためのファイルを、そして成功したすべての負荷を確実にするために不足しているパッケージをダウンロードします。

~/.emacs.dプロジェクトとして扱い、(cask-initialize)起動時に呼び出すことで、ローカルパッケージ構成の管理に使用できます。

straight.el

straight.elパッケージにローカルな変更を加えたい人のために設計されています。MELPAGNU ELPA、およびEmacsMirrorからレシピを取得するか、独自のレシピを指定できます。また、他の多くの機能の中で、再現性を最大にするためのリビジョンロックファイルの書き込みもサポートしています。

使用パッケージ

Use-Packageは、主にemacs構成管理ツールとして設計されています。必要なpackage.elパッケージをダウンロードしますが、他のソースにアクセスするための組み込みメカニズムはありません。パッケージの遅延ロードとカスタマイズの遅延を可能にします。これにより、パッケージの初期使用が遅くなる一方で、emacsの初期化が改善されます(ただし、特定のセッションでそれらを使用しない場合は、純利益しか得られません)。


elpakitも利用できます。これは、caskと同様のジョブを実行しますが、non-elispビットはありません。
nicフェリア2014年

@nicferrierパッケージ管理にそれを使用する方法を詳しく説明していただけませんか?(私は既存のパッケージでそれを使用する方法を見ることができますが、Caskはそれを正しく読んだら任意のソースを追加することもできます)
Jonathan Leech-Pepin

elpakitでは、主に2つのことを実行できます。ディスクとしてリポジトリをパッケージとして構築し(それらのコレクションからパッケージアーカイブを作成します)、他のパッケージに自動的に依存するパッケージを作成します。Mx elpakit-package-list-bufは、選択したelpaパッケージに依存する別のパッケージを作成するために使用できるelpaパッケージのリストを含むバッファーを作成します。
nicフェリア2014年

私はパッケージがディストリビューションにパッケージマネージャを、外出先からインストールだと思い/usr/share/emacs/site-lispません、/usr/local/share...以降localのdirsが非ディストリビューションのインストールのためのものです。
JeanPierre 2017

10

Emacsは、load-path本質的にLispファイルを検索するディレクトリのリストであるを使用します。パッケージが利用可能であるならばload-path、それがされてインストール

Debian / UbuntuパッケージマネージャーとEmacsパッケージマネージャー(package.el)の間にインターフェイスはありません。前者はシステム全体(コンピューターのすべてのユーザーが利用可能)でEmacsパッケージをインストールし、後者はデフォルトでホームディレクトリの下にパッケージをインストールします。理論的には、両方のソースを使用してパッケージをインストールできます。ただし、この方法はお勧めしません。両方のソースから同じパッケージをインストールすると、いくつかの問題が発生する可能性があります。

Debian / Ubuntuパッケージマネージャーを介してインストールできるEmacsパッケージのリストは、ELPA / MELPA / ...と比較すると、各パッケージをDebian / Ubuntu用に特別に準備する必要があるため、はるかに制限されています。つまり、ELPAのパッケージ!= Debianのパッケージです。


彼が数年前に尋ねたとき、私は彼がエルパについて話していたと思います
マラバルバ2014

@Malabarba:確かに、私は誤解しました。関係のない文は削除しました。
パプリカ2014

1
この回答は、yumを(Fedoraの)、パックマン(アーチ)などだけでなく、他のディストリビューションのパッケージマネージャのために真である
Vamsi

また、リストからmarmalade-repoが欠落しています。オリジナルの非GNUリポジトリ。
nicフェリア2014年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.