追加のパッケージリポジトリとしてmelpa-stableを使用していますが、使用したいパッケージの1つ(icicles)がmelpa-stableで使用できません。melpa-stableを通常使用するようにpackage.elを構成する方法はありますが、パッケージの特定のサブセットにはmelpaを使用しますか?
icicles
メルパで見つけることができません。
追加のパッケージリポジトリとしてmelpa-stableを使用していますが、使用したいパッケージの1つ(icicles)がmelpa-stableで使用できません。melpa-stableを通常使用するようにpackage.elを構成する方法はありますが、パッケージの特定のサブセットにはmelpaを使用しますか?
icicles
メルパで見つけることができません。
回答:
package-archive-priorities
この目的のために作成されたオプションを使用してください。MELPAよりMELPA Stableを優先するには、initファイルに次を追加します。
(setq package-archives
'(("GNU ELPA" . "https://elpa.gnu.org/packages/")
("MELPA Stable" . "https://stable.melpa.org/packages/")
("MELPA" . "https://melpa.org/packages/"))
package-archive-priorities
'(("MELPA Stable" . 10)
("GNU ELPA" . 5)
("MELPA" . 0)))
数値が大きいほど、パッケージアーカイブの優先度が高くなります。複数のアーカイブに存在するパッケージの場合、Emacsのパッケージマネージャーは、最も高い優先度でアーカイブからパッケージを選択し、バージョン番号が高くても、他のアーカイブ内のパッケージを無視します。パッケージが同じ優先度の2つのアーカイブに存在する場合、バージョン番号の高い方が優先され、最終的にはの順序になりpackage-archives
ます。
あいまいさを避けるために、デフォルトのGNU ELPAアーカイブを含むすべてのアーカイブに明示的に優先順位を割り当てることをお勧めします。存在しないアーカイブのpackage-archive-priorities
デフォルトの優先度は0ですが、それを忘れるのは簡単すぎます。
package-archive-priorities
Emacs 25.1で導入されました。以前のリリースについては、以下の古い回答を参照してください。
Emacs 24では、デフォルトでMELPA Stableに設定し、一般的な方法で特定のパッケージに対してのみMELPAを使用することはできません。カスタマイズがない場合、package.elのデフォルトは、最高バージョンの MELPAを提供するアーカイブになります。それを変更するインターフェースはありません。
ただし、Emacs 24.4では、新しいオプションをpackage-pinned-packages
使用して個々のパッケージをアーカイブに固定できますが、これは要件の逆を実装することのみ可能です。デフォルトはMELPAで、特定のパッケージにはMELPA Stableを使用します。
したがって、現在のところ、package-pinned-packages
使用するすべてのパッケージを、手動で、またはEmacs Lispコードの一部で埋めることが唯一の選択肢です。ピン留めはパッケージのインストール時ではなくパッケージインデックスの構築時に評価されるため、呼び出す前package-pinned-packages
に設定する必要があることに注意してください。package-refresh-contents
長期的な解決策はM-x report-emacs-bug
、Emacs開発者に何らかの「デフォルトアーカイブ」機能の実装を依頼するか、つららのメンテナーにMELPA Stableが安定したパッケージをビルドできるように適切にタグ付けされたリリースを作成するよう依頼することです。前者は大きな変更をpackage.elに必要とし、後者はつららがEmacsWikiからタグ付きの適切なVCSリポジトリに移動されるため、どちらも簡単ではないかもしれません。もしそうなら、彼らはずっと前にそれをしていたでしょう。
ここでは、両方のリポジトリを並行して使用することについて議論しているので、これは24.4で可能になるはずです。たとえば、defunを使用してリポジトリのリストを更新し、次にparadox-requireを試し、最後に元のリポジトリリストに戻りましたか?