72

数千のEmacsLispライブラリが存在しますが、GNU Emacsは、バージョン24.1まで(内部)パッケージマネージャーがありませんでした。

ほとんどのユーザーは、現在、Emacs Lispライブラリを見つけてインストールし、特に最新の状態に保つのはかなり不便であることに同意すると思います。

生活を少し楽にするページ

24.1より古いバージョンのEmacsの場合:

  • Emacs Lispリスト-問題:死んだ人(リンク)が表示されます。
  • Emacswiki-問題:ナッツの痕跡(悪意のあるコード)が含まれている可能性があります。
  • Emacsmirror-私が取り組んでいるパッケージリポジトリ。問題:まだネイティブでサポートしているパッケージマネージャーはありません。

一部のパッケージマネージャー

まだ誰も試したことがないというわけではありません。(この質問が行われたとき、これらのいくつかは存在しませんでした。)


更新-package.elは、バージョン24.1以降のGNUEmacsに含まれています


パッケージはEmacsトランクに含まれています。epkgはまだ準備ができておらず、現在も利用できません。少なくともinstall-elisp、plugin、use-packageはもう積極的にメンテナンスされていないようです。

これらすべてのパッケージマネージャーをサブモジュールとして含むgitリポジトリを作成しました。

役に立つかもしれないいくつかのユーティリティ

パッケージマネージャーは、これらのユーティリティを使用したり、パッケージのミラーを維持するために使用したりできます。

目前の主題についての議論

質問(ついに)

だから-私はあなたからあなたがEmacsのパッケージマネージャーで重要/重要でない/補足などと考えるものを知りたいです。

いくつかのアイデア

  1. 多くのパッケージ(Emacsmirrorは、利用可能な最大のパッケージコレクションを提供しますが、パッケージマネージャーではまだ明示的なサポートはありません)。
  2. テストされたパッケージのみ。
  3. 複数のパッケージアーカイブのサポート(多くの/テスト済みのパッケージから選択できるようにするため)。
  4. 必要な機能のみに基づいて計算された依存関係。
  5. 依存関係は特定のバージョンを考慮に入れます。
  6. アップストリームでリリースされたバージョンのみを使用してください。
  7. 可能な場合は、バージョン管理システムのバージョンを使用します。
  8. パッケージは分類されています。
  9. パッケージは、インストールされているだけでなく、アンインストールおよび更新できます。
  10. パッケージのアップストリームバージョンのフォークの作成をサポートします。
  11. これらのフォークの公開をサポートします。
  12. フォークの選択をサポートします。
  13. インストールパッケージがアクティブ化された後。
  14. 自動ロードファイルを生成します。
  15. Emacswikiとの統合(wikirel.elを参照)。
  16. ユーザーはパッケージにタグを付けたり、コメントを付けたり、その情報を共有したりできます。
  17. FSFによって割り当てられた/GPL/ FOSSソフトウェアのみ、またはライセンスを気にしません。
  18. パッケージマネージャーはEmacsと統合して配布する必要があります。
  19. 著者に簡単に連絡するためのサポート。
  20. たくさんのメタデータ。
  21. 特定のパッケージをインストールする前に、代替案を提案してください。

こういう答えを期待しています

  • より多くの実装、議論などへのポインタ。
  • 理想的なパッケージマネージャーを構成する一連の機能の詳細な説明。
  • 1つの特定の望ましい/望ましくない機能の説明。上からの私の考えを自由に詳しく説明してください。
  • びっくり。
4

12 に答える 12

32

私はまだ Emacs を学んでいるので、パッケージ マネージャーを調べる機会はありませんでしたが、優れた機能は、ユーザーがパッケージを使用しようとしてもシステム上にない場合に、パッケージが利用可能であることをユーザーに通知することです。たとえば、サーバー上のPHPファイルを一度編集したかったので、試してみました

M-x php-mode

そしてEmacsはすべてのようでした

M-x php-mode [no match]

あるべきだったとき

php-mode available from ftp.gnu.org. install? (y/n)

そして、php-modeをインストールしてロードしました。それは私の一日をすぐに作ったでしょう。

于 2009-01-17T23:50:50.237 に答える
28

バージョン管理からの自動公開

私は、標準的で、中心的で、単一のEmacs パッケージ マネージャーを見たいと思っています。今のところ、私はELPAにお金を入れていますが、まだ先は長いです。

Emacs パッケージ マネージャーを支援する最大の利点は、パッケージの公開を非常に簡単にすることです。私の意見では、GitHubのような中央ホストされたプラットフォーム上のgit のようなバージョン管理システムと組み合わせて、これが実現することを望んでいます。貢献します。

GitHub (以前) で RubyGems を簡単に公開できるようにしたのと同様に、Emacs パッケージ マネージャーにも同様の機能が必要です。たとえば、リポジトリに「vX.YZ」のタグを付けて、elisp の良さをすべての人が自動的に利用できるようにします。

GitHub のような人気のあるバックエンドを使用することの追加の利点は、すぐに多くの露出を得て、その成功を後押しすることです。

于 2009-01-18T01:23:23.997 に答える
12

私が最も期待しているのは、有用なものがすべてそこにあり、うまく機能することです。これには、あなた(またはメンテナのチーム)が積極的にすべてをパッケージ化し、それに関連するすべてのことを行う必要があります—有用なパッケージのすべての作成者に電子メールを送信するなど。

たとえば、Debian(およびその派生物:Ubuntuなど)が非常に優れている理由は、リポジトリの外部に何かをインストールしなくてもシステムを楽しく使用でき、システム上のすべてが徹底的にテストされているためです。パッケージマネージャーの実際の機能は重要ですが、管理対象パッケージ自体に次ぐものです。

于 2009-01-18T02:23:22.067 に答える
10

簡単な構成の同期:私は多くの人と同じように、多くの異なるコンピューターやサーバーでEmacsを使用していますが、自分のものもあればそうでないものもあります。パッケージマネージャーに、あるコンピューターから別のコンピューターに転送できるファイルがあるとしたら、それは素晴らしいことです。次に、後者のコンピューターでは、パッケージマネージャーがEmacsを好きな状態にします。つまり、インストールされているすべてのパッケージと構成が設定されています。サイト全体(root権限がある場合)またはシングルユーザーとして簡単にインストールできる機能と組み合わせると、すべてのEmacsenをどこでも同期できます。

于 2009-01-18T00:40:47.860 に答える
7

最善の解決策は、より多くのパッケージを ELPA に提出し、package.el にマルチソース サポートを追加することであると私はほぼ確信しています。Emacs のメンテナーは、package.el がデフォルトで FSF リポジトリを指している限り、バージョン 24 に package.el を含めることを検討すると述べています。

もちろん、送信も自動化されたプロセスである必要があります。現在の ELPA メンテナへの郵送方法は小規模でしか機能しません。

于 2009-01-31T20:35:22.910 に答える
3

iPhone のハッカーは、Ubuntu の「apt」と同様に、私が望むものにかなり近づいたと思います。

私はできることが好きです:

  • 追加
  • 削除 (パッケージのみ)
  • ユーザー設定を削除する
  • ドキュメントを見る
  • アップグレード (変更ログを読んだ後)
  • 新しいアーカイブを追加 (別名 add repository )
  • 依存関係を参照
  • バージョンを見る
  • 名前、キーワードで検索
  • ブラウズ(追加日、変更日、名前)
  • インストールされているすべてのパッケージと設定を保存します
  • パッケージと設定のセットをロード

すべてがうまく機能し、何をするにも推奨される方法である主要なセットが欲しいです。次に、機能するすべてのものが入るグローバル セット。次に、誰でも独自のアーカイブをホストできる機能。

古いバージョンをインストールできるように、これがすべて git/svn/whatever に関連付けられているとよいでしょう。フォークなどで独自のパッチを作成するなど....

于 2009-01-21T15:23:54.557 に答える
3

私はかつて、Emacs 用の小さなパッケージ マネージャーを作成するのに時間を費やしました。

http://gmarceau.qc.ca/plugin.el

私が書いた:

Plugin は、Emacs 用のパッケージ マネージャーを作成する試みです。プラグインは、Emacs 拡張機能を自動的にダウンロードし、ディレクトリに展開し、そのディレクトリをロード パスに追加し、自動ロード アノテーションを生成し、dot-emacs ファイルを変更します。自動読み込みアノテーションは、あまり知られていない Emacs の機能です。それらが生成されると、Emacs 拡張機能は迅速かつ段階的に読み込まれます。これは、私のように多くの拡張機能がインストールされている場合に非常に便利です。

これを実行するには、2 つのライブラリ ファイルloop-constructs.elrecord.elが必要です。

于 2009-01-19T15:36:16.017 に答える
2

上記に加えて、debian やその他のリポジトリ (安定した実験的でテストされていないパッケージのセット) のようなものを期待しています。独自のリポジトリを追加する機能 - VCS から直接多くのパッケージを使用するため、独自のパッケージを作成すると便利です

于 2009-01-18T11:03:32.767 に答える
2

パッケージマネージャーはRubygemsから多くのインスピレーションを得るべきだと思います。また、 Gemcutterのようなサイトが必要だと思います。

中央リポジトリもいいかもしれません ( Emacsmirrorのように)。ただし、すべてのパッケージを収集する Gemcutter のようなサイトが存在する場合、これは必要ない場合があります。

これが機能するためには、これらのことが重要だと思います。

  • すべてのパッケージを収集するある種の中心的な場所
  • パッケージの追加が簡単
  • パッケージのメンテナンスが容易
  • 他のパッケージに貢献しやすい
  • パッケージのインストール、アンインストール、更新が簡単
  • パッケージの依存関係を追加する可能性
  • すべてのパッケージに共通の構造

したがって、Gemcutter のようなサイトと Emacsmirror のような中央リポジトリ (ソーシャル コーディングであるため Github が望ましい) を備えた Rubygems のようなパッケージ マネージャーは、Emacs を非常にうまく機能させます。

全体として、Rails と Rails が Gem を処理する方法から多くのインスピレーションを得る必要があると思います。

于 2009-12-22T21:09:24.400 に答える
2

この質問がどれほど新鮮かはわかりません
が、私が見たいモデルは CPAN です。Rubygems もわかりませんが、CPAN に似ているように聞こえます。

CPAN は perl アーカイブ + ライブラリ管理システムです。FTP、SOAP、JSON、XML、ZIP などを必要とする perl プログラムを作成する必要がある場合は、CPAN パッケージ マネージャーを実行し、ダウンロードする必要なパッケージを選択し、依存関係を表示して確認します。次に、すべてをインストールします。CPAN は「どこでも」ミラーリングされます。

CPAN は私の目的には素晴らしく機能し、emacs にも同様のものがあればいいのにと思います。また、オンデマンドで C/C++ コードをビルドすることもサポートしています。

それが私がemacsで見たいものです。

要件に関するいくつかの追加コメント。

  • パッケージの明示的なダウンロード。自動インストールなし。目に見えないダウンロードはありません。新しいライブラリや新しい機能をお願いしたいです。
  • インストールされているパッケージの名前/バージョン/タイムスタンプを一覧表示できるはずです。
  • 友人がリストをくれたら、彼の emacs 状態を私のものと比較できるはずです。
  • 更新チェック機能。どのアップデートが利用可能ですか? 彼らは何を修正しますか?
  • 依存関係のチェック、検証、およびダウンロード。csharp-mode をインストールし、cc-mode の v5.0.28 が必要な場合は、cc-mode もダウンロードする必要があることを確認する必要があります。
  • isohnt で torrent をランク付けするなど、これらのパッケージのコミュニティ ランキングが必要です。パッケージの賛成票が 3 票なのか 3000 票なのかを確認したい。
  • 「トランザクション」動作。インストールがブームになった場合は、最後に既知の良好な状態に戻す必要があります。
  • フェイルセーフ。カスタム mod を linum.el に配置した場合、明示的に許可しない限り、変更の上に新しいバージョンをインストールすることを拒否する必要があります。開始する前に警告する必要があります。これは、既存のインストールに対してチェックサム/md5 を使用して行います。
  • zip ファイルなどの圧縮アーカイブから一部のパッケージを実行するオプションがあります。したがって、組み込みの elisp を更新していないことに疑いの余地はありません。
  • パッケージの配布にミラーリングされたホストを使用する機能。
  • この関数はすべて、Mx library-manageemnt などからアクセスできる必要があります。

最後に、関数のライブラリを分離または整理する方法があると便利です。階層的な名前空間。Emacs のフラットな名前空間は非常に時代遅れです。これは一種の独立したものですが、パッケージ管理のコア機能を補完します。私は Lisp の第一人者ではないので、これがどれほど難しいかわかりません。たぶん、すでにそれを行う方法があります。

于 2010-04-12T12:11:58.133 に答える
1

パッケージ マネージャーは、依存関係が単純な単一ファイルの elisp パッケージに関して、私が評価するものは何も提供しませんsite-lisp。注意が必要なのは、外部プログラム (ispell など) に依存するパッケージ、複数ファイルのパッケージ (auctex、org-mode など) です。自明ではない依存関係を持つ単一ファイルの elisp パッケージは考えられません。

これらについては、パッケージ マネージャーを除いて、emacs の elisp パッケージに、まとめて実行でき、依存関係の障害が発生した場合に役立つ情報を提供するテスト スイートを取得してもらいたいと考えています。

于 2009-12-11T13:24:53.160 に答える