さまざまなEmacsパッケージリポジトリの実際の違いは何ですか?


124

同じソフトウェアを含むことが多いリポジトリがいくつかあることに気付きました。私が好む理由:

  • GNU ELPA
  • マーマレード
  • メルパ

他のものよりも?1つのリポジトリに必要なすべてのパッケージが含まれていないため、これらのリポジトリを同時に有効にすることをお勧めしますか?

回答:


82

GNU ELPAは、公式のGNU Emacsパッケージリポジトリです。デフォルトで有効になっているのはこれだけです。つまり、リーチが最大になります。同時に、パッケージの提出には少し手間がかかり、FSFの著作権の割り当てが必要です。つまり、パッケージの選択が比較的限られています。

MELPAMarmaladeは、どちらもサードパーティのパッケージリポジトリです。それらはGNUによって公式にサポートされているわけではありませんが、パッケージの選択肢がはるかに多くなっています。パッケージの品質はもう少し変動しますが、探しているものを見つける可能性が高くなります(特にそれが少しあいまいな場合)。

マーマレードとMELPAには、パッケージアップローダー用のわずかに異なるモデルがあります。私の理解では、MELPAはバージョン管理リポジトリを直接(つまり、GitHubを介して)追跡し、パッケージ作成者はブランチにコミットをプッシュするだけでパッケージを更新できます。一方、マーマレードでは、パッケージをリポジトリに明示的にアップロードします。

実際には、MELPAとMarmaladeの間に大きな違いは見ていません。インストール可能なパッケージの両方を可能な限り多く選択できるようにすることには、多くのマイナス面はありません。私はしばらくの間(もちろんGNU ELPAも)使用していますが、大きな問題はありません。

両方のリポジトリを有効にした場合(自分には実行していませんが)考えられる懸念の1つは、異なるバージョンの両方からパッケージを入手できることです。デフォルトでは、パッケージマネージャー(package.el)にはこのような競合を解決する方法はありません。ただし、melpaパッケージをインストールすることでこれを解決できます。パッケージをインストールすると、どのパッケージを提供するか、どのリポジトリから除外するかをカスタマイズできます。詳細については、ここまたはmelpaパッケージのドキュメントを参照してください。

@Malabarbaが有益に指摘したように、この問題はEmacs 24.4で解決されました。

セキュリティが本当に心配な場合は、MELPAとMarmaladeの両方を避けることをお勧めします。これは、だれもがパッケージをアップロードできるようにするためであり、私の知る限り、積極的なセキュリティの取り決めはありません。一方、GNU ELPAリポジトリはFSFによって管理されており、役立つパッケージに署名しています。もちろん、セキュリティが本当に重要な場合は、パッケージマネージャーを使用する代わりに、elispパッケージを手動で確認してインストールすることをお勧めします。


13
emacs 24.4に含まれる新しいpackage.elは、バージョン番号の変更を適切に処理します。2つのリポジトリに異なるバージョンの同じパッケージがある場合、両方が提供され、更新中に一方が他方をオーバーライドすることはありません。
マラバルバ14

1
@Malabarba:うわー、それは聞いて素晴らしいです!
ティコンジェルビス14

14
これは良い答えですが、おそらくMELPA安定版(melpa-stable.milkbox.net)についても言及する必要があります。MELPAはレポのmasterブランチから最新のリビジョンを自動的に取得しますが、MELPA stableは最新のタグ付きリビジョンを取得します。
shosti 14

@shosti:すっごく、それについては知りませんでした。実際には、それを独自の答えとするのが良いかもしれません。
ティコンジェルビス14

7
marmaladeでは、誰もパッケージをアップロードできません。登録ユーザーのみ。私は今、すべてのアップローダーを知っています。したがって、ある種のピアレビューがあります。
nicフェリア14年

44

私の考えでは、一部のリポジトリは他のリポジトリよりもパッケージの送信に伴うオーバーヘッドが大きくなります。オーバーヘッドが大きいリポジトリでは、パッケージが少なくなる傾向があります。オーバーヘッドを最大から最小の順に:

  1. GNU ELPAでは、すべてのコードがGPLであり、FSFに著作権が割り当てられている必要があります。ELPAコードは本質的にコアEmacsチームによって「所有」されているため、他のリポジトリよりもはるかに少ないです。(org-modeには独自のリポジトリがありますが、同じ操作モードがあります。)
  2. Marmaladeでは、すべてのコードにGPL互換ライセンスが必要であり、すべてのパッケージを手動でアップロードします。所有権は少し不明確であり、所有権の変更には設定プロセスがありません。
  3. MELPA Stableは、Marmaladeと直接競合していますが、ライセンスの制限がなく、最新のタグ付きリビジョンを使用してgitリポジトリからパッケージを自動的にビルドします。所有権はMELPAリポジトリを通じて決定されます(所有権の変更はプルリクエストを通じて発生します)。
  4. MELPAはMELPA安定版に似ていますが、Gitリポジトリのmasterブランチの最新リビジョンから常に取得するが異なります。パッケージは「ブリーディングエッジ」になる傾向があり、安定性(長所と短所があります)の点で少し自由になります。

個人的には、ほとんどのユーザーにとってMELPA StableまたはMarmaladeのいずれかが長期的には勝つと思われます。MELPA自体は非常に不安定で、ELPAは制限が多すぎて多くのパッケージに拡張できません。しかし、それは単なる意見です。


6
marmaladeには、所有者をパッケージに追加するためのAPIがあります。
nicテリア14年

31

いくつかのパッケージリポジトリが利用可能です。

公式

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 StableMELPAと同じですが、日付スタンプバージョンを使用するのではなく、gitタグのバージョンを使用します。これにより、より良い依存関係の解決が可能になりますが、wikiパッケージへの依存に問題があります

ユーザーのアップロード

マーマレードは、他のプログラミング言語の従来のリポジトリによく似ています。パッケージ開発者は、リリース時にパッケージをマーマレードにアップロードします。

原則として、これはパッケージに適切なリリースプロセスを提供し(MarmaladeはMELPA安定以前)、自動生成されたバージョン番号の問題も回避します。ただし、本人確認はありません。パッケージを作成していなくても、誰でもパッケージをアップロードできます。メンテナがmy-package他の誰かがアップロードmy-packageしたものを見つけ、その後新しいバージョンをアップロードできない場合、これは難しくなります。

Marmaladeはかつてnode.jsアプリでしたが、現在はelispで記述されています。どちらのバージョンにも、時々アップタイムの問題があります。

プロジェクト固有

ORG-モードELPAはレポホストだけであるorgorg-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に移行しました。


4
マーマレードには間違いなくアップタイムの問題がありました... nic.ferrier.me.uk/blog/2014_08/deploying-blue-green-with-dockerでそれらを解決したと思います-githubの使用に伴うリスクについては誰も言及していません、バックエンドとしてのWebベースのソフトウェアの商用プロバイダー。それはリスクだと思います。マーマレードはフリーソフトウェアであり、構築されたものでさえ他の人がインストールできます。
nicテリア14年

no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend:私はこれらの懸念は、それがだと今消えます確信しているマイクロソフトのGitHub ;-)
TomRoche

13

ここで他の回答を補足する追加情報。

  1. MELPAおよびMELPAの「安定」に関する情報-

    見て開始し、このかわいい、かなり重複して質問質問自体のコメントも含め、StackOverflowのから、。特に、ドナルド・カーティス(MELPAおよびMELPA安定版の保守者)とメールを交換した後、私が投稿したこのコメント:

    彼の観点から(ドナルドカーティスの、そして私が彼とのコミュニケーションを理解しているように)、「安定した」MELPAサイトはメンテナンスモードのみです。そして、私のようなコードが存在しない唯一の理由は、誰も「安定した」サイトのためにwiki [Emacs Wiki] からのアップロードを実装していないからです。また、パッケージの安定性や危険性などを判断するためのフィルタリングは行われません。パッケージの開発バージョンと古い(「安定した」バージョンを区別したい一部のパッケージ開発者が、 ")バージョン。

    要するに、本質的に「安定MELPA」の内容について、「安定」であるものはありません。バージョン番号とフィード方法は異なる場合があります。それで全部です。また、特定のパッケージメンテナが「安定」バージョンと「開発」バージョンを区別し、2つの異なるサイトにアップロードすることでそれを行いたい場合、それがそのパッケージの効果です。

  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。ハッピーハッキング。


とても安心です。
nicフェリアー14年

1
MELPAの意見に反対させてください。パッケージ作成者は、MELPAに「リリース」しません。彼または彼女は自分のリポジトリにコミットするだけで、MELPAがそれを取得します。違いは、MELPAは何でも選択するのに対して、MELPA stableはタグ付きリリースを選択することです。これは実際には好みの問題です。一部の人々は、常に機能ブランチを作成し、トランクを神聖なものとして扱い、トランクにマージすることで変更の準備ができていることを知らせます。他の人はたまたまトランク上で開発しますが、明示的なタグ付けによってリリースをマークします。両方のアプローチは賢明です…
メック

1
…個人的に私はタグ付けの側にいます。それはいつ、なぜリリースするのかを明確にしてくれます(そしてトランクに予備バージョンを公開することを可能にし、小さなコード変更のために機能ブランチを作成する必要を回避し、変更の大きさを知らせ、人間に優しいバージョン番号を使用できるようにします)。結論:リリースにタグ付けすることを好む著者がいる限り、melpa stableにはメリットがあります。タグ付けによってリリースを管理する著者には何も悪いことはないと思います。解放されます。
メック
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.