`package.el`に対する代替パッケージマネージャのユースケースは何ですか?


14

バックグラウンド

私はemacsを毎日使用していますが、ほとんどは物事を成し遂げるためです。パッケージを追加するよりもカスタマイズするのはあまり好きではなく、トラブルシューティングも好きではありません。優れたOSのようにemacsをバックグラウンドにフェードインさせて、物事に取り掛かりたいです。少し前に el-get、必要なパッケージをインストールできるようになり、使用できないパッケージをインストールできるようになり、一時的な問題を引き起こす可能性のある最先端ではなく、Org-modeのブランチをpackage.el選択するなどの制御maintが可能になりました。今、私は私が使用すべきかどうかわからel-getない。

質問

el-getさまざまなリポジトリとemacsのハックに対する素晴らしい解決策のように思えました。それは単に可能ではなかった能力を提供しましたpackage.el。現在package.el、emacs(>=24.4)の新しいバージョンでは複数のリポジトリをサポートしていますが、el-getemacsの組み込みパッケージマネージャーのユースケースと同様の代替手段は何ですか?


2
参照:quelpaを。簡単な答えは次のとおりです。確かに、ELPA / MELPA / Marmaladeにないパッケージがまだあります。必要なものが見つかった場合でも、恐ろしいハッキングなどをせずに入手できますel-get
PythonNut

回答:


8

ELPAではまだ不可能なことがあります。ELPAの概念に適合しないため、ELPAでは常に不可能なことがあります。フォークからのハッシュによって特定のコミットをインストールすることはできません。リポジトリ。同様に、インストールする前にパッケージにカスタムローカルパッチを適用することはできません。これらの機能はELPAの範囲を超えているため、必要な場合は代替のパッケージマネージャーを使用する必要があります。

しかし、このel-getは最近のレガシーソリューションのようなものだと思います。ELPAがEmacsの事実上の標準パッケージマネージャーになったことを考えると、代替パッケージマネージャーはELPAとシームレスに統合する必要があります。ただし、el-getは独自のパッケージをELPAに公開しません。つまり、そのパッケージはELPAから完全に不可視であり、ELPAパッケージは依存関係管理に明らかな影響を与えることなく、el-getパッケージに依存できません。

ELPA以外の機能が必要な場合は、今日ではel-getではなくQUELPAを検討する必要があります。


「彼らがそうしなかったなら、誰もまだそれらを維持することを気にしません。」ただし、目的は開発者のエゴだけかもしれません。
T.バーロン

しかし、それは強力な自我であり、el-getがまだ持っているのと同じくらい大きなコミュニティを簡単に引き付けることができ、QUELPAはすぐに獲得しました:)
lunaryorn

もちろん、私は一般的にコメントしていました。;)手元のパッケージの詳細については、常識を超えた答えは、el-getとquelpaの目的を示すことによって、強力なポイントになります。
T.バーロン

@ T.Verronうん、要点。私はその声明を削除しました、それは言うべき愚かなことでした。ごめんなさい。
lunaryorn

@lunaryornとel-get, however, does not expose its own packages to ELPA, meaning that **its packages** are entirely invisible to ELPA and ELPA は、el-getによってインストールされるものを意味しますよね?
-toogley

6

Emacs用の新しいパッケージマネージャーを作成しましたstraight.el。これは、既存のすべてのパッケージ管理ソリューションの改善を試みます。ドキュメントには、他のパッケージマネージャーとの比較に関する広範なセクションがありますが、ここに非常に短い要約があります。straight.el

  • package.elパッケージの特定のバージョンを選択するオプションなしで、中央サーバーから不透明なtarballをダウンロードします。パッケージにローカルな変更を加えることはできません。上流での変更の貢献は不可能です。straight.el分散型の方法でGitリポジトリのクローンを作成します(ただし、必要に応じてMELPAGNU ELPA、およびEmacsMirrorからのレシピを自動的に使用します)。これは手動で行うことも、組み込みのバルクリポジトリ管理操作を使用することもできます。パッケージへの変更は自動的に検出され、手動での再構築は必要ありません。さらに、straight.el すべてのパッケージのGitハッシュを含むリビジョンロックファイルを作成できるため、Emacs設定の完全な再現性をサポートします。
  • QuelpaCaskはどちらもに基づいておりpackage.el、同じ欠点の多くを継承しています。たとえば、Caskには、パッケージの特定のバージョンをインストールするという概念はありません。Quelpaはサポートしていますが、Gitハッシュをinitファイルにハードコードする必要があります。すべてのコア機能をより多くのユースケースに合わせた統一された設計に置き換え、完全にstraight.el回避package.elします。
  • el-getには、どこからでもパッケージをインストールできるという利点があります(すべての既知のバージョン管理システム、任意のHTTP、システムパッケージマネージャー、EmacsWiki、go get!?)。ただし、非常に多くのソースをサポートしているため、el-getは、高度なパッケージ管理操作(リビジョンロックファイルによる再現性や対話型リポジトリ管理操作など)をstraight.el提供できません。straight.elほとんどのパッケージはGitを介して利用でき、EmacsMirrorを介して入手できないパッケージがあるため、Gitのみをサポートしています(できません!straight.elそれでも、必要に応じて、将来追加されるバージョン管理バックエンド(Mercurialなど)用の拡張可能なAPIが提供されることに注意してください。
  • ボルグの哲学は非常に似てstraight.elおり、多くの同じ利点があります。しかし、完全なパッケージマネージャになるように設計されていない、とのような他のツールと懸念して使用するように設計されてepkgauto-compileとMagit。それどころか、straight.el自己完結型であり、必要なものはすべて単独で提供され、追加の構成はほとんど必要ありません。また、BorgはGitサブモジュールを使用しますが、そのインターフェイスにはいくつかのラフなエッジがありますが、straight.el独立して管理されたGitリポジトリを使用するため、柔軟性とパワーが向上します。
  • 手動によるアプローチもありますが、これはお勧めしません。最初の数か月後、ボルグを再発明したでしょう。それから数ヶ月後、あなたは再発明したでしょうstraight.el。ただし、パッケージ管理について多くのことを学びます;)

4

長所と短所がありますが、@ lunaryonの強い意見にも関わらず、el-getはまだ関連があると思います(リジェップも)。

生のpackage.eluse-packageをしばらく(2〜3年)使用してから、el-getCaskに切り替えました。数日前にエルゲットに戻りました。以前のpackage.elは、他の多くの製品と同様に、アドオンを手動で処理していました。

なぜel-getに戻ったのですか?gitリポジトリ(MELPAにない私のGithubパッケージ)ではない何かについてのCaskの奇妙なことに遭遇しましたが、そのパッケージは実際にgitを使用しています... el-get configと私はすぐに行って良かったです。

el-getについて好きなことはほとんどありません。

  • gitだけでなく、複数のフェッチャーをサポートします。
  • 十分な定義済みレシピが含まれています
  • 起動時のCaskよりも高速。
  • そして、はい@ lunaryorn、Wikiはコードを配布する場所ではありませんが、emacsmirror(Github)にクローンがなければGithubリポジトリを作成したくありません。
  • 自己完結型で、Caskでは外部インストールが必要です。allout-modeで単一の初期化ファイル(モジュール構成ではない)を使用してセクションをナビゲートします。
  • el-getは、ユーザーの観点からは非常に単純です。

注:OSXおよびLinuxでEmacs Git HEADを実行しています。


Caskに問題があったことは残念ですが、あなたの個人的な問題やCaskに対する明らかな不満は、この質問に関係があるとは思いません。具体的には、Caskは非常に狭い範囲(主にパッケージ開発)でELPAのフロントエンドです。パッケージ管理にも使用できますが、概念的にはel-getと直交しています。
lunaryorn

言い換えれば、Caskはel-getに取って代わることも、することも目指していません。それは完全に無関係です。 ELPAはel-getに取って代わります。Gitベースのインストールに最適な選択肢はel-getではなく、QUELPAであり、私の答えで述べたように、それがQUELPAを使用する正当な理由です。
lunaryorn

1
Caskの狭い範囲については同意しますが、誤解しないでください。Caskでの「トラブル」にもかかわらず、私は今でも一部のLinuxマシンで使用しています。また、「git-only」パッケージはありません。それらのいくつかは、水銀または他のバージョン管理システムにあります。また、MELPAやgitリポジトリに含まれることのない他の人のパッケージも使用します。私の唯一のポイントは、MELPAに誰かが必要とするすべてのパッケージが含まれていない場合でも、el-getは大丈夫ということです。私はQUELPAを知っていますが、el-getで十分です。
リメロ

見て、そして私のポイントは、el-getはELPAとEmacsの組み込みの依存関係管理をバイパスし、破損とパッケージの重複インストールのリスクを回避するため、最近では特に大丈夫ではないということです。QUELPAはel-getと同じ機能を提供しますが、この欠陥はありません。今日はちょうど良いです。
lunaryorn

@rimero私はまったく同じ経験をしました。それに加えて、数日前にQuelpaを試したところ、少なくとも今のところは落とさなければなりませんでした。El-getは、少なくとも私のユースケースでは、依然としてより柔軟で強力で、全体的に高速であるようです。私は彼らが2つの全く異なる視点を受け入れていると信じているので、それはEmacsユーザーの種類にも依存するかもしれません。どちらかにコミットする前に、両方を試すことをお勧めします。
gsl

1

あなたが見てみたいかもしれませんparadox。これは別のパッケージマネージャーではなく、のすっきりしたフロントエンドですpackage.el。たとえば、パッケージを更新すると、パッケージをインストールして古いパッケージを削除するかどうかをワンステップで尋ねられます。

使用する場合は、おそらくinitファイルでに設定paradox-execute-asynchronouslyする必要がありtます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.