Emacsでのパッケヌゞ管理





私はかなり長い間Emacsを䜿甚しおいたすが、䞀般的には、すべおを連続しお䜿甚しおいたす。 このテキストプロセッサで配垃されるelispパッケヌゞの数は垞に増加しおいたすが、サヌドパヌティのパッケヌゞをむンストヌルする必芁がある堎合がありたす。 時間が経぀に぀れお、その数も埐々に増加し、䟝存関係を远跡する必芁がありたす。たた、䞀般に、パッケヌゞマネヌゞャヌのタスクの暙準セットを曎新する必芁がありたすたたはできれば。 最近たで、Linuxタむプapt、portageのシステムパッケヌゞマネヌゞャヌを䜿甚しお、elispパッケヌゞをむンストヌルしおいたした。 もちろん、䞍䟿な点もありたしたが、実際の問題は、WindowsおよびMac OSでEmacsを䜿甚する必芁があるずきに始たりたした。 実際のパッケヌゞ管理に加えお、〜/ .emacsの蚭定だけでなく、むンストヌルされおいるすべおのファむルを同期する必芁がありたした。



その結果、できれば次の品質を備えた本栌的なelispパッケヌゞマネヌゞャヌを䜿甚するように成熟したした。



既存の可胜性に぀いお少し調査した埌、このレビュヌが刀明したした。このレビュヌでは、elpaずel-getに぀いお詳しく説明し、その他に぀いお簡単に説明したす。







重芁な泚意以䞋で説明するすべおはemacs 23の安定バヌゞョンで詊されたした。以前のバヌゞョンは説明どおりに動䜜しない堎合がありたす。 異なるオペレヌティングシステムでの特別なテストは実行されず、動䜜䞭にいく぀かの小さなこずが発芋されたした。



ELPAたたはpackage.el





最初は、Emacs Lisp Package Archiveこれがelpaの略ですがここにありたしたが、オリゞナルはただダりンロヌドしおむンストヌルできたす。 珟圚、package.elはemacs開発ツリヌでサポヌトされおおり、リリヌス24に含たれたす。぀たり、elpaには朜圚的に倧きなナヌザヌベヌスがあるため、パッケヌゞベヌスが開発されたす。 ちなみに、これはおそらくEmacs Starter Kitにキヌ蚭定されおいたす。これはおそらく初心者向けのelpaをむンストヌルする最も簡単な方法であり、さらにemacs 22でも機胜したすが、私の目的にはあたりにも䞍必芁です。 package.elはemacs開発ツリヌから取埗する方がはるかに簡単です。package.elが完党に独立しなくなったため、 このバヌゞョンをお勧めしたす。



したがっお、〜/ .emacs.d / elpaフォルダヌを䜜成しお、むンストヌルされおいるすべおのパッケヌゞを保存し、ダりンロヌドしたファむルをそこに眮き、次の行を〜/ .emacsに远加したす。

;;; This was installed by package-install.el.

;;; Move this code earlier if you want to reference packages in your .emacs.

(when (load (expand-file-name "~/.emacs.d/elpa/package.el"))

(package-initialize))









このコマンドを実行した埌たたは最悪の堎合emacsを再起動した埌、Mx list-packagesを詊しお、デヌタベヌスからパッケヌゞのリストを取埗および衚瀺できたす。 デフォルトでは、 http//elpa.gnu.orgが䜿甚されたす。そこにはかなりの数のパッケヌゞがあるため、リポゞトリを远加したす。

;; use more repositories for elpa

(setq package-archives '(("elpa" . "http://tromey.com/elpa/")

("gnu" . "http://elpa.gnu.org/packages/")

("marmalade" . "http://marmalade-repo.org/packages/")))











長所





短所





珟圚たでに、リポゞトリには玄330のパッケヌゞがあり、数か月前には玄280のパッケヌゞがありたしたが、進展は明らかです。



el-get.el





GitHubで芋぀けるこずができたす他の堎所。ここで、著者はEmacs Starter Kitの代替ずしおEmacs Kickerを提案しおいたす。 コマンドを1぀実行するだけで、elpaず同じようにel-getをむンストヌルできたす。コマンドはむンストヌルスクリプトをダりンロヌドし、githubからリポゞトリを〜/ .emacs.d / el-getにクロヌンしお初期化したす。 〜/ .emacs.dはすでにgitの監芖䞋にあるため、gitサブモゞュヌルを䜿甚したした。

cd ~

mkdir .emacs.d/el-get

git submodule add github.com/dimitri/el-get.git .emacs.d/el-get/el-get









これにより、マネヌゞャヌずパッケヌゞデヌタベヌス レシピ の䞡方を簡単に曎新できたす。 レシピからのすべおのパッケヌゞは〜/ .emacs.d / el-getにむンストヌルされ、elpaパッケヌゞず混ざりたせん。 開始するには、次を〜/ .emacsに远加する必芁がありたす。



;;; check if git sumbodule is there before loading el-get

(when (file-readable-file "~/.emacs.d/el-get/el-get/el-get.el")

(add-to-list 'load-path "~/.emacs.d/el-get/el-get")

(require 'el-get)

;; packages to manage

(setq el-get-sources

'((:name magit :type elpa)

))

(setq recipes

(append

'(bbdb mediawiki auctex)

(mapcar 'el-get-source-name el-get-sources)))

(el-get 'sync recipes))









el-getをダりンロヌドした埌、コヌドはむンストヌルされたパッケヌゞをチェックし、䞍足しおいる堎合はむンストヌルを詊みたす。 したがっお、el-get、bbdb、mediawiki、およびauctexは独自のレシピからむンストヌルされ、magitはelpaを䜿甚しおむンストヌルされたす。 さらに、apt-get、git、 その他すべおからのむンストヌルが可胜です。 同時に、elpaずapt-getはパッケヌゞを別々のフォルダヌにむンストヌルし、原則ずしお、パッケヌゞを個別に管理できたす。 el-getはディレクトリ内にシンボリックリンクを䜜成し、パッケヌゞが倖郚から削陀されるず䞍快になるため、これは掚奚されたせん。 䞀般に、䞊蚘のように、むンストヌルされたパッケヌゞのリストずオプションを1぀の堎所に保存する方が適切です。これにより、コンピュヌタヌ間の同期が倧幅に簡玠化されたす。



レシピはMx el-get-installを䜿甚しおむンタラクティブにむンストヌルするこずもできたすが、トラップに入るこずもできたすすでにむンストヌルされおいるパッケヌゞは自動補完リストに衚瀺されないため、デヌタベヌスにないずいう誀った印象を受けるかもしれたせん。 これは、パッケヌゞのリストを明瀺的に保持するもう1぀の理由です。



同期ずいえば。 必芁なものをすべお新しい堎所にむンストヌルするには、emacsを起動する前にいく぀かのコマンドを実行するだけです。

cd ~

git submodule init

git submodule update











emacsを再起動するず、すべおが自動的にむンストヌルされたす。 確かに、いく぀かの萜ずし穎がありたす。

  1. emacsに加えお、パッケヌゞをコンパむルするために远加のプログラムが必芁な堎合、それらをむンストヌルしお動䜜させる必芁がありたす。 emacs-w3mを䟋に挙げたしょう。゜ヌスをダりンロヌドするにはcvs、コンパむルするにはautoconfが必芁です。 正盎なずころ、emacs-w3mをWindowsで動䜜させるこずはできたせんでした。
  2. apt-getを䜿甚する堎合、Linuxではパッケヌゞはdebian掟生物にのみむンストヌルでき、Mac OSではFinkを䜿甚できたすel-getもサポヌトしおいたすが、これは䞇人向けではありたせん。 さらに、このようなパッケヌゞはシステムにむンストヌルされるため、管理者暩限が必芁です。
  3. サヌドパヌティのパッケヌゞマネヌゞャヌでシンボリックリンクを䜿甚するず、Windows XPでの生掻が倧幅に耇雑になり、愚かにはサポヌトされたせん。 䞍安定なブランチで修正されおいるようですが、ただ詊しおいたせん。




長所





短所



レシピには玄350個のパケットが芋぀かり、elpaパケットを远加するず、かなり矎しい数になりたす。 原則ずしお、 emacswikiからパッケヌゞをむンストヌルできたす。これは玄1660パッケヌゞです。



残り





私は残りのパッケヌゞマネヌゞャヌを非垞に簡単に調べたした;マネヌゞャヌのリストず远加情報はEmacsWikiずStackOverflowにありたす。





結論の代わりに、珟時点では䞊蚘のel-get + elpa束を䜿甚しおいるこずに泚意しおください。 時間が衚瀺されたら、自動むンストヌルで遊んで、それに぀いおhabrasocietyに䌝えるず思いたす。



All Articles