認証付きプロキシ環境でも(多少は)快適なpackage-installの利用
Emacs24を入れてから、list-packages
で適当にパッケージを追加してきたのですが、そろそろ.emacs.d/init.el
のポータビリティが怪しくなってきたので、環境を見直し始めました。当初は、CaskやEl-getといったモダンな?パッケージマネージャを使おうと意気込んでいたのですが、認証付きプロキシ環境でどうもうまく動きませんでした…。プロキシが原因なのかはよく分かりませんが。
今後も振り回されるかも知れないと思うと、解決は目指さずに(手元の環境下で)実績のあるデフォルトのpackage-install
に頼る方向にしました。
結果、「結局 package.el に戻ってきた / マスタカの ChangeLog メモ」を参考に以下のようにしました。package-refresh-contents
の呼び出しを、新しいパッケージのインストール時に限定している辺りが唯一のポイントです。呼び出すとプロキシのユーザ名・パスワードを求められるため、むき出しにするとEmacsを起動するたびに死にたくなります。かといって呼ばないとインストールできないためこうなりました。
ユーザ・パスワードの入力が新しいパッケージをインストールするときに限定されるので、「多少は」マシかと思います。
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) (defun install-packages (packages) (let ((refreshed nil)) (dolist (pack packages) (unless (package-installed-p pack) (unless refreshed (package-refresh-contents) (setq refreshed t)) (package-install pack))))) (install-packages '(auto-complete magit markdown-mode))
まあsocatなどでローカルにプロキシサーバを立てて認証を代理させるのが筋な気はしますが…。書いてしまったものは仕方がない!
ちなみに、bashの環境変数に設定しているhttp_proxy
やhttps_proxy
のプロキシのアドレスは認識してくれたのですが、一緒に書いた認証情報は無視されるようでした。