2014年4月29日火曜日

Windows 7 に Emacs 24.3 をインストール

長らく Emacs 23.3 を使っていましたが、Ubuntu 14.04 で Emacs 24.3 が標準になったことを期にすべての環境で Emacs 24.3 へ移行することにしました。

インストール

http://ftp.gnu.org/gnu/emacs/windows/ から emacs-24.3-bin-i386.zip をダウンロードします。展開して C:\usr\local\emacs-24.3 に置きました。
 

全般

(blink-cursor-mode nil) だとカーソルが点滅するようになったので -1 に変更しました。
(blink-cursor-mode -1)

windows.el

screen-width が frame-width に変更されたので別名として定義しました。
(fset 'screen-width #'frame-width)

last-command-char が last-command-event に変更されたので別名として定義しました。
(defvaralias 'last-command-char 'last-command-event)

送る

emacsclientw.exe のショートカットを %APPDATA%\Microsoft\Windows\SendTo に作成します。ショートカットのプロパティでリンク先に --alternate-editor を追加します。

C:\usr\local\emacs-24.3\bin\emacsclientw.exe --alternate-editor C:\usr\local\emacs-24.3\bin\runemacs.exe

2013年11月2日土曜日

Blogger でgoogle-code-prettify を使う

久し振りに本家サイトを見たら使い方が簡単になっていました。
GettingStarted - google-code-prettify

Blogger で使うなら HTML/JavaScript の設定に 1 行書くだけです。
<script src="https://google-code-prettify.googlecode.com/svn/loader/run_prettify.js?skin=sons-of-obsidian"></script>
pre タグの class に prettyprint を指定すると発動します。"<" は &lt;、">" は &gt; に置換する必要があります。
#!/usr/bin/env python
print "Hello, world."
linenums を指定すると行番号を表示します。 デフォルトのスタイルだと 5 行目から 5 行おきにしか表示されません。 skin=sons-of-obsidian を指定すると毎行表示されます。お好みで選択しましょう。
あいうえお
かきくけこ
さしすせそ
たちつてと
なにぬねの
はひふへほ
まみむめも
や ゆ よ
らりるれろ
わ を ん

Cygwin で Yafc をインストール

長いこと愛用している Yafc が Cygwin で提供されていないので自前でビルドしてみます。

Yafc とは Yet Another FTP Client の略で FTP クライアントの一種です。SFTP クライアントとしても利用できます。セキュリティにうるさい昨今では SFTP の方が一般的で FTP を使うことの方が稀でしょう。LFTP も有名ですが Yafc の方が好みです。

Yafc は libssh を利用しているので先に libssh をインストールします。Cygwin の setup.exe を実行するとパッケージ一覧に libssh2 が表示されますが libssh とは別物です。

libssh のインストール

libssh をコンパイルするにあたって事前に以下のパッケージをインストールしました。環境によっては他にも必要なパッケージがあるかもしれません。

libssh のコンパイルに必要なパッケージ:
  • cmake
  • gcc-g++
  • openssl-devel
  • zlib-devel
コンパイルには build ディレクトリを作成してその中で cmake, make を実行します。うまくいくと libssh が /usr/local/lib にインストールされます。

$ tar xvzf libssh-0.5.5.tar.gz
$ cd libssh-0.5.5/
$ mkdir build
$ cd build
$ cmake ..
$ make
$ make install

Yafc のインストール

これで本来の目的である Yafc のコンパイルにができます。Yafc の configure は TCGETS/TCSETS の存在をチェックしますが Cygwin には存在しません。回避策として TCGETA/TCSETA に置換します。影響度は不明ですが、特に不具合がなさそうなのでこれでよしとしました。また /usr/local/lib を RPATH にセットするので LDFLAGS にオプションをセットします。

$ tar xvJf yafc-1.2.4.tar.xz
$ cd yafc-1.2.4/
$ sed -i -e 's/TCGETS/TCGETA/g; s/TCSETS/TCSETA/g;' configure
$ CPPFLAGS="-I/usr/local/include" LDFLAGS="-L/usr/local/lib -Wl,-rpath,/usr/local/lib" ./configure
...
compiler ....................... gcc -std=gnu99 -g -O2
preprocessor flags ............. -I/usr/local/include
linker flags ................... -L/usr/local/lib -Wl,-rpath,/usr/local/lib
libraries ......................  -lreadline -lssl -lcrypto -lz   -lssh -lssl -lcrypto -lz
installation prefix ............ /usr/local
using Kerberos 4 ...............
using Kerberos 5 ............... no, not found
using readline ................. yes
using ssh ...................... yes
using IPv6 ..................... no, not found
using NLS ...................... no, not found
$ make
$ make install

これで yafc.exe が /usr/local/bin にインストールされました。
SFTP クライアントとしてホストに接続するにはホスト名の前に ssh:// をつけます。


$ /usr/local/bin/yafc.exe ssh://hostname

2013年9月19日木曜日

Aspellの辞書をWindowsでコンパイル

WindowsのAspellがインストールしたのに動かない!
辞書がないからということで頑張ってコンパイルしてみたら
辞書が .exe で公開されていることに後から気がついた...

でもせっかくコンパイルできたので手順を残しておく。

http://aspell.net/win32/ で Full Installer をクリックして
http://ftp.gnu.org/gnu/aspell/w32/Aspell-0-50-3-3-Setup.exe をダウンロードする。

次に English の辞書をインストールする。

コンパイル済みの辞書を利用するなら aspell-en-0.50-2-3.exe をダウンロードして実行すればインストール完了。

自前でコンパイルするなら ftp://ftp.gnu.org/gnu/aspell/dict/0index.html で
Aspell 0.50 用の English 辞書である aspell5-en-6.0-0.tar.bz2 をダウンロード。
Aspell のインストール先 (C:/Program Files (x86)/Aspell) に展開する。

Cygwin の bash でカレントディレクトリを Aspell の展開先に移動して configure を実行する。
$ ASPELL=../bin/aspell.exe PREZIP=../bin/word-list-compress.exe ./configure

できた Makefile を編集。空白を含むパスを "" で括る。

Makefile の差分:
@@ -1,9 +1,9 @@
-ASPELL = /cygdrive/c/Program Files (x86)/Aspell/bin/aspell.exe
+ASPELL = "C:/Program Files (x86)/Aspell/bin/aspell.exe"
 ASPELL_FLAGS =
-PREZIP = /cygdrive/c/Program Files (x86)/Aspell/bin/word-list-compress.exe
+PREZIP = "C:/Program Files (x86)/Aspell/bin/word-list-compress.exe"
 DESTDIR =
-dictdir = C:/Program Files (x86)/Aspell/dict
-datadir = C:/Program Files (x86)/Aspell/data
+dictdir = "C:/Program Files (x86)/Aspell/dict"
+datadir = "C:/Program Files (x86)/Aspell/data"

 # Generated with Aspell Dicts "proc" script version 0.60.2

make ; make install で辞書をインストールする。

$ make
$ make install

Aspell/dict に辞書ファイルが、Aspell/data/en.dat,en_phonet.dat に情報ファイル?? がインストールされる。

$ bin/aspell.exe dump dicts
en
en-variant_0
en-variant_1
en-variant_2
en-w_accents
en-wo_accents
en_CA
en_CA-w_accents
en_CA-wo_accents
en_GB
en_GB-ise
en_GB-ise-w_accents
en_GB-ise-wo_accents
en_GB-ize
en_GB-ize-w_accents
en_GB-ize-wo_accents
en_GB-w_accents
en_GB-wo_accents
en_US
en_US-w_accents
en_US-wo_accents

2013年6月17日月曜日

ssh すると stty: standard input: Inappropriate ioctl for device

Cygwin の sshd に接続してコマンドを実行すると stty のメッセージが出力される。

$ ssh HOST echo OK
OK
stty: standard input: Inappropriate ioctl for device
$

今の ssh には RequestTTY というオプションがあるそうだ。
これを yes に設定すればメッセージは出力されない。

$ ssh -o "RequestTTY yes" HOST echo OK
OK
$

-t でも同じ効果が得られる。

2013年6月16日日曜日

Cygwin の sshd に接続するときに待たされる

Windows 7 に Cygwin をインストールして sshd を動かしている。
他のホストから ssh で接続すると 5 秒ほど待たされる。
sshd が接続元のホスト名を逆引きしているらしい。
逆引きの機能を無効にする。

/etc/sshd_config:
110c110
< #UseDNS yes
---
> UseDNS no

設定を反映するために sshd を再起動する。

cygrunsrv -E sshd
cygrunsrv -S sshd

解消した!!

2013年5月12日日曜日

GRUB2のプロンプトからUbuntuをブート

set root=(hd0,1)
linux /vmlinuz root=/dev/sda1 ro
initrd /initrd.img
boot

OSのブート後、grub.cfgを更新する。
update-grub