回答:
GNU ELPAは、公式のGNU Emacsパッケージリポジトリです。デフォルトで有効になっているのはこれだけです。つまり、リーチが最大になります。同時に、パッケージの提出には少し手間がかかり、FSFの著作権の割り当てが必要です。つまり、パッケージの選択が比較的限られています。
MELPAとMarmaladeは、どちらもサードパーティのパッケージリポジトリです。それらはGNUによって公式にサポートされているわけではありませんが、パッケージの選択肢がはるかに多くなっています。パッケージの品質はもう少し変動しますが、探しているものを見つける可能性が高くなります(特にそれが少しあいまいな場合)。
マーマレードとMELPAには、パッケージアップローダー用のわずかに異なるモデルがあります。私の理解では、MELPAはバージョン管理リポジトリを直接(つまり、GitHubを介して)追跡し、パッケージ作成者はブランチにコミットをプッシュするだけでパッケージを更新できます。一方、マーマレードでは、パッケージをリポジトリに明示的にアップロードします。
実際には、MELPAとMarmaladeの間に大きな違いは見ていません。インストール可能なパッケージの両方を可能な限り多く選択できるようにすることには、多くのマイナス面はありません。私はしばらくの間(もちろんGNU ELPAも)使用していますが、大きな問題はありません。
両方のリポジトリを有効にした場合(自分には実行していませんが)考えられる懸念の1つは、異なるバージョンの両方からパッケージを入手できることです。デフォルトでは、パッケージマネージャー(package.el
)にはこのような競合を解決する方法はありません。ただし、melpa
パッケージをインストールすることでこれを解決できます。パッケージをインストールすると、どのパッケージを提供するか、どのリポジトリから除外するかをカスタマイズできます。詳細については、ここまたはmelpa
パッケージのドキュメントを参照してください。
@Malabarbaが有益に指摘したように、この問題はEmacs 24.4で解決されました。
セキュリティが本当に心配な場合は、MELPAとMarmaladeの両方を避けることをお勧めします。これは、だれもがパッケージをアップロードできるようにするためであり、私の知る限り、積極的なセキュリティの取り決めはありません。一方、GNU ELPAリポジトリはFSFによって管理されており、役立つパッケージに署名しています。もちろん、セキュリティが本当に重要な場合は、パッケージマネージャーを使用する代わりに、elispパッケージを手動で確認してインストールすることをお勧めします。
私の考えでは、一部のリポジトリは他のリポジトリよりもパッケージの送信に伴うオーバーヘッドが大きくなります。オーバーヘッドが大きいリポジトリでは、パッケージが少なくなる傾向があります。オーバーヘッドを最大から最小の順に:
個人的には、ほとんどのユーザーにとってMELPA StableまたはMarmaladeのいずれかが長期的には勝つと思われます。MELPA自体は非常に不安定で、ELPAは制限が多すぎて多くのパッケージに拡張できません。しかし、それは単なる意見です。
いくつかのパッケージリポジトリが利用可能です。
公式
GNU ELPAは公式のパッケージリポジトリです。それは小さく、それに貢献するにはFSFへの(パッケージのすべての作者の)著作権の割り当てが必要です。
GNU ELPAのパッケージは実際には単なるgitレポです。ここでホストされる利点は、Emacs自体が機能を追加または廃止する場合、コアチームがパッケージを更新しようとすることです。
ソースから構築
MELPAは、最大かつ最も急速に成長しているパッケージリポジトリです。新しいバージョンがレポジトリにプッシュされるか、EmacsWikiページが更新されるたびに、新しいバージョンがリリースされます。
それは最先端ですが、実際には非常にうまく機能します。MELPAは、パッケージの重複を回避し、パッケージの正規のホームが(ランダムフォークではなく)記録されることを保証するためにキュレーションされます。
MELPAには、バージョンが単なるタイムスタンプであるという問題がありますmy-package-20131231.2359
。これは、my-packageに依存している場合:
;; Package-Requires: ((my-package "1.2.3"))
EmacsはMELPAのどのバージョンでも十分に新しいと考えます。
MELPA StableはMELPAと同じですが、日付スタンプバージョンを使用するのではなく、gitタグのバージョンを使用します。これにより、より良い依存関係の解決が可能になりますが、wikiパッケージへの依存に問題があります。
ユーザーのアップロード
マーマレードは、他のプログラミング言語の従来のリポジトリによく似ています。パッケージ開発者は、リリース時にパッケージをマーマレードにアップロードします。
原則として、これはパッケージに適切なリリースプロセスを提供し(MarmaladeはMELPA安定以前)、自動生成されたバージョン番号の問題も回避します。ただし、本人確認はありません。パッケージを作成していなくても、誰でもパッケージをアップロードできます。メンテナがmy-package
他の誰かがアップロードmy-package
したものを見つけ、その後新しいバージョンをアップロードできない場合、これは難しくなります。
Marmaladeはかつてnode.jsアプリでしたが、現在はelispで記述されています。どちらのバージョンにも、時々アップタイムの問題があります。
プロジェクト固有
ORG-モードELPAはレポホストだけであるorg
とorg-plus-contrib
。Org-modeはEmacsコアの一部ですが、外部で開発されており、コードは定期的にEmacsトランクとのみ同期されます。このレポを使用すると、最先端の組織モードを使用できます。
User42 ELPAは、さまざまなEmacsパッケージをリリースした単一のパッケージ開発者向けのリポジトリです。彼のパッケージが気に入ったら、このリポジトリを追加できます。
Sunrise Commander ELPAは、Sunrise Commander(真夜中の司令官に触発されたファイルブラウジング用のEmacsパッケージ)の拡張機能のリポジトリです。
引退した
TromeyのELPAは最初に設定されたレポでした。公式にはGNU ELPAに置き換えられましたが、同じ著作権の割り当て要件はありませんでした。2010年の時点では、更新されていません。
Elpyパッケージアーカイブには、Jorgen Schaeferが「 Elmac 、Emacs Python開発環境」のために開発したさまざまなパッケージが含まれていましたが、それはMELPA Stableに移行しました。
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
:私はこれらの懸念は、それがだと今消えます確信しているマイクロソフトのGitHub ;-)
ここで他の回答を補足する追加情報。
MELPAおよびMELPAの「安定」に関する情報-
見て開始し、このかわいい、かなり重複して質問質問自体のコメントも含め、StackOverflowのから、。特に、ドナルド・カーティス(MELPAおよびMELPA安定版の保守者)とメールを交換した後、私が投稿したこのコメント:
彼の観点から(ドナルドカーティスの、そして私が彼とのコミュニケーションを理解しているように)、「安定した」MELPAサイトはメンテナンスモードのみです。そして、私のようなコードが存在しない唯一の理由は、誰も「安定した」サイトのためにwiki [Emacs Wiki] からのアップロードを実装していないからです。また、パッケージの安定性や危険性などを判断するためのフィルタリングは行われません。パッケージの開発バージョンと古い(「安定した」バージョンを区別したい一部のパッケージ開発者が、 ")バージョン。
要するに、本質的に「安定MELPA」の内容について、「安定」であるものはありません。バージョン番号とフィード方法は異なる場合があります。それで全部です。また、特定のパッケージメンテナが「安定」バージョンと「開発」バージョンを区別し、2つの異なるサイトにアップロードすることでそれを行いたい場合、それがそのパッケージの効果です。
MELPAとMarmalade(およびGNU ELPA)の1つの違いは、MELPAに貢献したコードをgitリポジトリから入手する必要がないことです。特に、Emacs WikiのElisp Areaから自動的に取得できます。
それは、一部の人が言ったように、誰でも何でもアップロードでき、コードが実際に主張された著者などによるものであるかどうかを知る方法がないことを意味しますか?はいといいえ。一般に、はい:誰でもElispコードをEmacs Wikiに無料でアップロードできます。Elisp-Areaページのトップが言うように:
これはEmacsWikiのelispエリアで、EmacsLispファイルを収集します。ログイン不要、バージョン管理不要、ftp不要、パスワード不要。wiki自体と同じくらい簡単です。また、だれでもこれらのEmacsLispファイルに悪意のあるコードを配置できることを意味します。疑わしい場合は、使用しないでください。
ただし、ご存知のように、私はwikiの管理者であり、wiki Elisp Areaにある自分のLispライブラリはロックされたページです。つまり、Wiki管理者のみがそれらをアップロードできます。そのため、この場合、MELPAまたはEmacs Wikiからダウンロードした私のライブラリが私によってアップロードされたと確信できます。ただし、インターネット上のすべてのものと同様に、コード自体に保証がないのと同様に、確固たる保証はありません。すべてのGPLライブラリのGPLの宣伝文句にあるように:
このプログラムは、役に立つことを期待して配布されていますが、いかなる保証もありません。商品性や特定の目的への適合性の暗黙の保証さえありません。詳細については、GNU General Public Licenseを参照してください。
HTH。ハッピーハッキング。