FreeBSD 10.3Rでメールの読み書き(3) emacsのパッケージインストール編

emacs 25.3で日本語の読み書きができるようになりました。htmlメールが来たときにもとりあえず読めるようにしておいた方が便利だ,とかいろいろとあるのでemacs用のパッケージ類をインストールします。

1. emacs-w3m
まずは,emacs-w3mをインストールします。

pkg install ja-w3m

として日本語対応版のw3mをインストールします。emacs上でw3mを使えるようにemacs-w3mをインストールしなければなりませんが,ここでハマりました。emacs 24以降では簡単にpackageをインストールできるらしいのですが,gnuで登録されているデフォルトのpackageのサイトにはemacs w3mは載っていません。多くのpackageが登録されているのはmelpaだそうですが,melpaのリストを読み込めるようにしなくてはなりません。

~/.emacs.d/init.elに設定を書けばよいといろいろなところに書かれているのですが,なぜか私の環境ではちゃんと読み込んでくれません。~/.emacsがあるとinit.elは読んでくれないようです。深く考えないで,昔ながらの~/.emacsに設定を書き込んでしまいましたが,これをそのまま~/.emacs.d/init.elにコピーして~/.emacsのほうは消してしまうとちゃんと期待する動作をするようになりました。

melpaのurlの登録方法もネットに落ちている情報を真似てもうまくいかないものもありました。melpaの公式サイトに設定方法がありますが,無駄に汎用的に書かれていて非常にわかりにくくなっています。普通にhttpsが通るなら,単純に以下のようにかけば十分のようです。
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; package
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(require 'package)
(add-to-list 'package-archives
'("melpa" . "https://melpa.org/packages/") t)
(add-to-list 'package-archives
'("melpa-stable" . "https://stable.melpa.org/packages/") t)
(package-initialize)

emacsを起動したら,

M-x package-list-packages

とやるとインストール可能なパッケージのリストが表示されます。w3mを見つけてその文字の上でenterをたたいてもよいですし,

M-x package-install

としてからw3mと入力してもOKです。なんかエラーとか言ってきますが,あまり気にしないことにします。最後まで終わったら,~/.emacs.d/init.elに

(require 'w3m)
(setq w3m-home-page "http://www.google.co.jp")

くらいを設定しておきます。
M-x w3m
とやるとテキストブラウザが起動します。インラインの画像などは表示できませんが(設定によるのかもしれません),兎に角,htmlのレンダリングはできているようです。

ここまでくればあとはどんどんパッケージをインストールしていきます。

M-x package-install

としてどんどんインストールしますが結局あまりどれもうまく動かなくて自分でインストールしなおさないといけない感じです。うーむ。

2. mew
package-installでインストールしたmewは'mewl' not foundといわれてフォルダのスキャンができません。実際,どこにもmewlがなさそうな気配です。また,mew-icon-directoryを./emacs.d/mew-xxxxxxx/etc/と設定してもなぜかちゃんと表示されません。

結局,本家からソースをもらってきてインストールするのが一番確実です。余計なことを考えるんじゃなかった...。ソースを展開して,
./configure
gmake
gmake install
で終わりです。

smtpサーバーは諸般の事情により直接接続できないため,間にリレーをかましてsmtpサーバーに送るようにしました。ループが発生しないようにしないといけないので結構考えてしまいます。たぶんちゃんと動いていると思いますが,ちょっと不安です。

mewは~/.emacs.d/init.elに
(autoload 'mew "mew" nil t)
(autoload 'mew-send "mew" nil t)
だけ追加して,その他のmewに特有の設定は~/.mew.elに書きます。

を設定します。

またローカルサーバーでqpopperを動かしてpop3経由でメールをとれるようにします。
pkg install qpopper
としてインストールしたら,
/etc/rc.confにinetd_enable="YES"を追加し,/etc/inetd.confに
pop3 stream tcp nowait root /usr/local/libexec/qpopper qpopper -s
を追加します。そのうえで,inetdとたたけばinetdが起動します。

3. mhc
手帳代わりにmhcをmewとともに使ってきました。本家を見るとgemでrubyのコードをインストールした後,melpaからmhc.elをインストールするように書かれています。それに従って,まずgemでインストールしようとするのですが,gemそのものがありません。

FreeBSD 10.3Rではportsのdevel/ruby-gemとして入っていますが,portinstall devel/ruby-gemsとやると危険だからダメと言われます。セキュリティ的にダメだと。しょうがないので,
cd /usr/ports/devel/ruby-gems
make DISABLE_VULNARABILITIES=yes
make install
として無理矢理インストールします。それから
gem install mhc
とするととにかくインストールは終わります。しかし,初期化のために
mhc init ~/mhc
とするとエラーがいっぱいでます。もうこのあたりでイヤになってきます。emacsでpackage-installとしてmhcをインストールするととりあえずこれもインストールできますがエラーがでて動きません。コンソールでmhcを動かしてもやはりエラーがでるのでそりゃダメにきまってます。

あきらめて,昔インストールしたmhc-20100807.tar.gzを使うことにします。

ファイルを展開して,cd mhc/emacs,vi Makefileで以下の設定をします。
1) MEW_OPTSのコメントをはずす。
2) INST_OPTSのコメントをはずす。
3) XEMACSをコメントアウトする。
あとはgmake; gmake installで終わりです。~/.mew.elに
(autoload 'mhc-mew-setup "mhc-mew")
(add-hook 'mew-init-hook 'mhc-mew-setup)
(setq mhc-todo-display-done nil)
を追加します。特に問題なく動くようです。これも余計なこと考えるんじゃなかったと後悔。

4. mew-w3m
emacs-w3mには入っていたはずのmew-w3mが消えているとこちらに書かれていて,実際,mew-w3mがみつかりません。こちらにおいておられるmew-w3m.elをダウンロードして,/usr/local/share/emacs/site-lisp/にコピーします。~/.mew.elに
(require 'mew-w3m)
(define-key mew-summary-mode-map "T" 'mew-w3m-view-inline-image)
を追加しておきます。これでよいのかどうかちゃんと動作確認をしてませんが...

5. c-sig
メールのうしろにつける署名はずっとc-sigを使ってきました。まず,ソースを落としてきます。
git clone https://github.com/ryoon/c-sig
cd c-sig

emacsを立ち上げて
C-u 0 M-x byte-recompile-directory
とやるとバイトコンパイルされてc-sig.elcができます。
mkdir /usr/local/share/emacs/site-lisp/c-sig
としてこのディレクトリにc-sig.elとc-sig.elcをコピーしておきます。~/.mew.elに
(autoload 'add-signature "c-sig" "c-sig" t)
(autoload 'delete-signature "c-sig" "c-sig" t)
(autoload 'insert-signature-eref "c-sig" "c-sig" t)
(autoload 'insert-signature-automatically "c-sig" "c-sig" t)
(autoload 'insert-signature-randomly "c-sig" "c-sig" t)

(add-hook 'mew-draft-mode-hook
(function (lambda ()
(define-key mew-draft-mode-map "\C-ci"
'insert-signature-eref))))
などと追加しておきます。~/.signature.alistに署名を設定しておきます。mewでメールを書いているときであれば,C-c iとたたけば署名が挿入されます。

6. migemo
migemoは昔はemacs lispだけで完結していたような記憶がありますが,どうやらそうではなくなったようでcmigemoという変換エンジン部分をcでコンパイルしてからemacs lispのパッケージをインストールしなくてはならないようです。知らなかった。
git clone https://github.com/koron/cmigemo
cd cmigemo
./configure
make gcc
make gcc-dict
make gcc-install
とすれば何かそれらしいものがインストールされます。

migemo.elはmelpaからインストールします。~/.emacs.d/init.elに以下を追加します。
(require 'migemo)
(setq migemo-command "/usr/local/bin/cmigemo")
(setq migemo-options '("-q" "--emacs"))
(setq migemo-dictionary "/usr/local/share/migemo/euc-jp/migemo-dict")
(setq migemo-user-dictionary nil)
(setq migemo-coding-system 'euc-jp-unix)
(setq migemo-regex-dictionary nil)
(load-library "migemo")
(migemo-init)
これでなんとなく動いているっぽいです。

7. yatex
これは昔からpackageでインストールできていましたが,melpaからpackage-installでちゃんとインストールできたようです。

8. howm
ほとんど使ってないのですが,とりあえずmelpaからpackage-installでインストールすることはできました。使ってないので動くかどうかを確認してさえもいません。だめじゃん...。

9. word-count
どうやら最近のemacsには文字数のカウントの機能は最初から含まれているようで,M-=とやればよいようです。これも知らなかった...。
posted by MOR at 07:00Comment(0)Computer

FreeBSD 10.3Rでメールの読み書き(2) emacs 25インストール編

OSのアップデートなどでくたびれてしまいましたが,気を取り直して,肝心のアプリケーションのインストールを始めます。

やりたいことは,「クライアント側のXにサーバー側のemacsを表示してサーバー側にあるメールを読む」です。
方針はできるだけデフォルト設定でバイナリパッケージをインストールする,ということにします。

なので,まず,X windowをpkgでインストールします。これは簡単。
pkg install xorg
ファイルをたくさんダウンロードするので時間がかかりますが待てば終わります。せっかくXをインストールしたので手元の画面にXの画面を表示させようと思ってstartxとかやってみましたが,intel driverがないとかいってXが立ち上がりません。
pkg install xf86-video-intel
とやればintelドライバがインストールされます。これでstartxとかやってもやっぱりダメです。ローカルでXを使うことはない,と割り切ってしまってここんところは,とりあえず,すっぱりあきらめます。ローカルでXを使いたいときはMac OS XのXQuartsに表示させればよいのでFreeBSDのようにグラフィックが弱いOSでなんか頑張ろう,という気になりません。

次はemacsです。これも簡単です。どうやらカレントのバージョンは25.3のようなので,
pkg install emacs25
とします。これでemacsも使えます。ほかに,よく使いそうなXアプリとしてktermをインストールします。
pkg install ja-kterm
pkg install ja-font-std
後者が必要なのかどうかはわかりませんが,とりあえずフォントはあった方がいいだろう,くらいの気分です。

emacsで日本語を扱うためには日本語変換が必要です。いまだに古いWnn7を使っていますのでこれを使えるようにします。ただし,ローカルにはWnn7のライセンスがないのでWnn7が動いているサーバーに接続するように設定します。これまではwnn7egg (ななたまご)を使っていたのですが,ライセンスがよくわからないのでtamago-tsunagiを使うことにしました。設定方法はここで詳しく説明されています。違いはwnn7が動いているのがローカルかリモートか,だけです。wnn7eggの設定には専用のセンテンスがありましたが,どうやらtamag-tsunagiは昔懐かしいEgg-V4の設定用センテンスが使えるようです。

まずはおおもとからtamago-tsunagi-5.0.7.1.tar.gzをダウンロードするか,

fetch "https://osdn.jp/frs/redir.php?m=cznic&f=%2Ftamago-tsunagi%2F62701%2Ftamago-tsunagi-5.0.7.1.tar.gz" -o tamago-tsunagi-5.0.7.1.tar.gz

としてダウンロードします。どうでもいいですが5.0.7というのは昔のegg-v4の次のバージョンという意味なのでしょうか。ソースを落としたら,
tar zxvf tamago-tsunagi-5.0.7.1.tar.gz
cd tamago-tsunagi-5.0.7.1
./configure
gmake
gmake install
としてインストールします。

emacsの設定は,~/.emacsに
(add-to-list 'load-path "/usr/local/share/emacs/site-lisp/egg")
(load-file "/usr/local/share/emacs/site-lisp/egg/leim-list.el")
(setq wnn-jserver "hoge.fuga.co.jp")
;
(setq its-enable-fullwidth-alphabet nil)
;; "n"で"ん"にする設定
;(setq its-hira-enable-double-n nil)
;
;; 句読点の設定
;; "."を押すと"."にする設定
;(setq its-hira-period ".")
;; ","を押すと","にする設定
(setq its-hira-comma ",")
くらいのことを書いておけばよさそうです。wnn7eggの場合はwnn7サーバーの設定は
(setq wnn7-server-name "hoge.fuga.co.jp:0")
と書きますが,tamago-tsunagiではegg-v4と同様に
(setq wnn-jserver "hoge.fuga.co.jp")
です。個人的にはこの設定はなんだか懐かしい感じがします。
句読点の設定は趣味に依存しますが,「。,」の組み合わせになるようにコメントをつけたり外したりしています。また数字は半角となるようにしています。

これで,最低限の日本語の読み書きはできるようになりました。

emacsの設定はまだまだ続きます...。次回を待て!って誰も待ってないって...
posted by MOR at 09:00Comment(0)Computer

FreeBSD 10.3Rでメールの読み書き(1) OSセキュリティアップデート編

FreeBSD 10.3Rをディスクサーバーとして使うためにZFSについてはこれまでに使いものになる程度のことは試してきました。しかし,一般ユーザー用のアプリケーションはまったく何も設定をしていませんでした。ディスクサーバーとして機能すればよいので,まったくそういう需要を考えてもいなかったのです。しかも,現在,職場で使っているクライアントむけのアプリケーションサーバーはFreeBSD 9.1Rで,あんまり新しくありません。既に使えるアプリケーションのバージョンもずいぶん変わってきていて9.1R時代にインストールした際の知識があんまり使えそうにありません。

今更感満載なのですが,諸般の事情により,10.3Rのディスクサーバーでメールの読み書きをせねばならなくなってしまいました。その理由は兎も角として,クライアント側からネットワーウ越しにX window上にディスクサーバーのemacsを表示してサーバー側のメールをmewで読み書きしたい,ということが目標です。論理的にはたいして難しいことではありませんが,実際に作業をするとなるとワナがいっぱいあります。

普段,ディスクサーバーにログインなんてしないのでuname -aでバージョンを調べてみたら,FreeBSD 10.3-RELEASE-p.15でDec. xx xx:xx:xx JST 2016とか出てきて,もう一年ほど前にインストールしたカーネルを使っているようです。ネットワーク的には外から見えないようにしているのでそれほどシリアスではないですが,まぁ,バージョンは新しい方がよいに決まっています。10.4がもうリリースされているのでバージョンアップしろ,という声も聞こえてきますが,マイナーバージョンとはいえ,動いているサーバーのバージョンアップは怖くてできません。そこで,セキュリティパッチだけあてておきます。

freebsd-update fetch
freebsd-update install

とやります。あれこれ表示されますが,特にエラーなくパッチがあたったようにみえます。このディスクサーバーはGPSからの1ppsを受けてntpdを動かすために,カーネルはPPSドライバを入れてコンパイルし直したカスタムカーネルです。そのため,改めてカーネルをコンパイルします。

cd /usr/src/
make KERNCONF=GENPPS buildkernel
make KERNCONF=GENPPS installkernel
として新しいカスタムカーネルをインストールします。GENPPSはGENERALカーネルに次の2行
ident GENPPS
options PPS_SYNC
を追加しただけのカーネルの設定ファイルのファイル名です。詳しくはこちら

これで再起動してuname -aとやると

FreeBSD 10.3-RELEASE-p21 #5: Sat Oct 14 13:02:31 JST 2017

などとなってちゃんとパッチがあたった感があります。ほんとうにちゃんとできたのかどうかはよくわかりませんが。

OSはなんとか最新の状態になったので,次はpackageをアップデートします。

pkg upgrade

とやるとあれこれいっぱいダウンロードしてきたりして時間がかかりますが,兎に角,新しい状態になるようです。portsからインストールしたものもあるのですが,それがどのようになったのかはよくわかりません。こういう事態のことを考えると,あまり難しい設定をしないでデフォルトでやっておくほうが平和です。

pkg audit -F

とやるとsamba 3.6.25はバージョンが古いからダメ,と怒られます。samba 4.xの設定がわかんないから未だに3.6系を使っているので,そんなこと言われたってどうしようもありません。とりあえず見なかったことにします。

バージョンを新しいものにそろえただけなのに,もうずいぶん頑張った感があってくたびれてしまいました。

肝心のアプリケーションソフトのインストールは続きで。
posted by MOR at 20:55Comment(0)Computer