「ロリポップ! レンタルサーバ」の…
皆が真似し出したらエラいことになるのでタイトルからは伏せる。
スタンダードプラン以上で ssh ログインして「ちゃんとした emacs を使いたい」話。
まず起動するとこうなる:
1 lolip@user: ~$ emacs
2 Warning: arch-dependent data dir (/usr/libexec/emacs/23.1/x86_64-redhat-linux-gnu/) does not exist.
3 Warning: arch-independent data dir (/usr/share/emacs/23.1/etc/) does not exist.
4 Warning: Lisp directory `/usr/share/emacs/23.1/site-lisp' does not exist.
5 Warning: Lisp directory `/usr/share/emacs/23.1/lisp' does not exist.
6 Warning: Lisp directory `/usr/share/emacs/23.1/leim' does not exist.
7 Error: charsets directory (/usr/share/emacs/23.1/etc/charsets) does not exist.
8 Emacs will not function correctly without the character map files.
9 Please check your installation!
10 lolip@user: ~$
ほんとにないの?
1 lolip@user: ~$ locate site-lisp
2 -bash: locate: command not found
3 lolip@user: ~$
げ。locate 入ってないんか。しょうがないなぁ。
1 lolip@user: ~$ find /usr -type d -name site-lisp
2 /usr/share/emacs/site-lisp
3 ^C
4 lolip@user: ~$
なんだ、いるじゃん。コマンドラインオプションから load-path 制御、やったことないなぁ:
1 lolip@user: ~$ emacs --help
2 Usage: emacs [OPTION-OR-FILENAME]...
3
4 Run Emacs, the extensible, customizable, self-documenting real-time
5 display editor. The recommended way to start Emacs for normal editing
6 is with no options at all.
7
8 Run M-x info RET m emacs RET m emacs invocation RET inside Emacs to
9 read the main documentation for these command-line arguments.
10
11 Initialization options:
12
13 --batch do not do interactive display; implies -q
14 --daemon start a server in the background
15 --debug-init enable Emacs Lisp debugger for init file
16 --display, -d DISPLAY use X server DISPLAY
17 --multibyte, --no-unibyte inhibit the effect of EMACS_UNIBYTE
18 --no-desktop do not load a saved desktop
19 --no-init-file, -q load neither ~/.emacs nor default.el
20 --no-shared-memory, -nl do not use shared memory
21 --no-site-file do not load site-start.el
22 --no-splash do not display a splash screen on startup
23 --no-window-system, -nw do not communicate with X, ignoring $DISPLAY
24 --quick, -Q equivalent to -q --no-site-file --no-splash
25 --script FILE run FILE as an Emacs Lisp script
26 --terminal, -t DEVICE use DEVICE for terminal I/O
27 --unibyte, --no-multibyte run Emacs in unibyte mode
28 --user, -u USER load ~USER/.emacs instead of your own
29
30 Action options:
31
32 FILE visit FILE using find-file
33 +LINE go to line LINE in next FILE
34 +LINE:COLUMN go to line LINE, column COLUMN, in next FILE
35 --directory, -L DIR add DIR to variable load-path
36 --eval EXPR evaluate Emacs Lisp expression EXPR
37 --execute EXPR evaluate Emacs Lisp expression EXPR
38 --file FILE visit FILE using find-file
39 --find-file FILE visit FILE using find-file
40 --funcall, -f FUNC call Emacs Lisp function FUNC with no arguments
41 --insert FILE insert contents of FILE into current buffer
42 --kill exit without asking for confirmation
43 --load, -l FILE load Emacs Lisp FILE using the load function
44 --visit FILE visit FILE using find-file
45
46 Display options:
47 ^C
48 lolip@user: ~$
–L で行けそうね:
1 lolip@user: ~$ emacs -L /usr/share/emacs/site-lisp/
2 Warning: arch-dependent data dir (/usr/libexec/emacs/23.1/x86_64-redhat-linux-gnu/) does not exist.
3 Warning: arch-independent data dir (/usr/share/emacs/23.1/etc/) does not exist.
4 Warning: Lisp directory `/usr/share/emacs/23.1/site-lisp' does not exist.
5 Warning: Lisp directory `/usr/share/emacs/23.1/lisp' does not exist.
6 Warning: Lisp directory `/usr/share/emacs/23.1/leim' does not exist.
7 Error: charsets directory (/usr/share/emacs/23.1/etc/charsets) does not exist.
8 Emacs will not function correctly without the character map files.
9 Please check your installation!
10 lolip@user: ~$
ん? 全く状況変わらん…。てか /usr/share/emacs/site-lisp/ はガラだけか?
1 lolip@user: ~$ find /usr/share/emacs/site-lisp/
2 /usr/share/emacs/site-lisp/
3 /usr/share/emacs/site-lisp/site-start.d
4 lolip@user: ~$
うわぁ、なんにも入っとらん。
しょうがない。持ってくるか。23.1 ね…。
1 lolip@user: ~$ wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-23.1.tar.bz2
2 --2015-10-23 03:52:39-- http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-23.1.tar.bz2
3 Resolving ftp.jaist.ac.jp... 150.65.7.130, 2001:df0:2ed:feed::feed
4 Connecting to ftp.jaist.ac.jp|150.65.7.130|:80... connected.
5 HTTP request sent, awaiting response... 200 OK
6 Length: 34382732 (33M) [application/x-bzip2]
7 Saving to: `emacs-23.1.tar.bz2'
8
9 100%[======================================================================================================================>> 34,382,732 21.2M/s in 1.6s
10
11 2015-10-23 03:52:41 (21.2 MB/s) - `emacs-23.1.tar.bz2' saved [34382732/34382732]
12
13 lolip@user: ~$ tar jxvf emacs-23.1.tar.bz2
14 tar (child): bzip2: Cannot exec: No such file or directory
15 tar (child): Error is not recoverable: exiting now
16 tar: Child returned status 2
17 tar: Error is not recoverable: exiting now
18 lolip@user: ~$
あらやだ、bzip2 入ってない。うげぇ。仕方ない、gz のほう:
1 lolip@user: ~$ wget http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-23.1.tar.gz
2 --2015-10-23 03:55:15-- http://ftp.jaist.ac.jp/pub/GNU/emacs/emacs-23.1.tar.gz
3 Resolving ftp.jaist.ac.jp... 150.65.7.130, 2001:df0:2ed:feed::feed
4 Connecting to ftp.jaist.ac.jp|150.65.7.130|:80... connected.
5 HTTP request sent, awaiting response... 200 OK
6 Length: 42904117 (41M) [application/x-gzip]
7 Saving to: `emacs-23.1.tar.gz'
8
9 100%[======================================================================================================================>] 42,904,117 3.28M/s in 6.3s
10
11 2015-10-23 03:55:21 (6.47 MB/s) - `emacs-23.1.tar.gz' saved [42904117/42904117]
12
13 lolip@user: ~$ tar zxvf emacs-23.1.tar.gz
14 ...
15 lolip@user: ~$
さてどーすっか。ビルドしてしまってインストール先をホーム配下にするか、必要な site-lisp と etc だけホーム配下にコピーするかのどっちかだけれど、前者はきっと失敗するだろう。こんだけ色んなものが入ってないんだから。
site-lisp と etc だけで良かったかね?
それと環境変数変えずに .emacs にも書かずに読んでくれるホーム以下ってないかね? 結構プラットフォームによって違うからな、これ。
まず…環境変数はこれか。環境変数で措置するなら EMACSLOADPATH と EMACSDATA の2つをセットすりゃ良さそうね。デフォルトの load-path、どっかに書かれてないかなぁ? ~/.lib とかを読み込みに行ってた環境が記憶にあるんだけど? そういやここんとこの emacs は皆 ~/.emacs.d 以下に置かれるな。.emacs.d/lisp/ は、デフォルト、なのか、ユーザ設定の慣例なのかどっちだったか?
うん、そいじゃ、まずは ~/.emacs.d に「置くだけ」をやってみるか。なんか info とか leim とか全部いたほうがいい気がしてきた。てことは、「いらないもの」をピックアップ、か、まずは。いらないのは nextstep, src, lib-src, m4, nt だろうね。これらはプラットフォーム依存と「ソース」だ。ランタイムには不要。
うー、tar の exclude の使い方忘れた…:
1 lolip@user: ~$ cd emacs-23.1
2 lolip@user: emacs-23.1$ tar cf - . --exclude=nextstep --exclude=src --exclude=lib-src --exclude=m4 --exclude=nt | tar tvf - | less
コマンドラインだけでやるなら並べるしかなかったか? なんかカンマ区切りかなんかでイケた記憶があんだけど。記憶違いかしら。まぁこれでいけるからいいか。
1 lolip@user: emacs-23.1$ tar cf - . --exclude=nextstep --exclude=src --exclude=lib-src --exclude=m4 --exclude=nt | tar xvf - -C ~/.emacs.d
ん。そいでわ:
1 lolip@user: emacs-23.1$ emacs
2 Warning: arch-dependent data dir (/usr/libexec/emacs/23.1/x86_64-redhat-linux-gnu/) does not exist.
3 Warning: arch-independent data dir (/usr/share/emacs/23.1/etc/) does not exist.
4 Warning: Lisp directory `/usr/share/emacs/23.1/site-lisp' does not exist.
5 Warning: Lisp directory `/usr/share/emacs/23.1/lisp' does not exist.
6 Warning: Lisp directory `/usr/share/emacs/23.1/leim' does not exist.
7 Error: charsets directory (/usr/share/emacs/23.1/etc/charsets) does not exist.
8 Emacs will not function correctly without the character map files.
9 Please check your installation!
10 lolip@user: emacs-23.1$
変わらず。.emacs.d はただの慣習だったか。仕方ない。とりあえずコマンドラインオプションでイケるかどうか?
1 lolip@user: emacs-23.1$ emacs -L ~/.emacs.d/lisp
2 Warning: arch-dependent data dir (/usr/libexec/emacs/23.1/x86_64-redhat-linux-gnu/) does not exist.
3 Warning: arch-independent data dir (/usr/share/emacs/23.1/etc/) does not exist.
4 Warning: Lisp directory `/usr/share/emacs/23.1/site-lisp' does not exist.
5 Warning: Lisp directory `/usr/share/emacs/23.1/lisp' does not exist.
6 Warning: Lisp directory `/usr/share/emacs/23.1/leim' does not exist.
7 Error: charsets directory (/usr/share/emacs/23.1/etc/charsets) does not exist.
8 Emacs will not function correctly without the character map files.
9 Please check your installation!
10 lolip@user: emacs-23.1$
あら? 違うの? うーん。
1 lolip@user: emacs-23.1$ export EMACSLOADPATH=~/.emacs.d/lisp
2 lolip@user: emacs-23.1$ emacs
あ、警告は変わらないけど状況は変わった。lisp は見えてるな。驚いたな、dired って、df 呼び出すのか。つーか df も入ってないのか、「ロリポップ!」。うー、これは手詰まってる。dired は今は諦めとくか。
ほかは大丈夫かな? M-x shell は △。あ、job control が使えないと言ってるな。「穏便に」使うぶんにはなんとか使えるか。M-x calendar とかもちゃんと色付きで大丈夫だし、メジャーモード(pythonモード)とかもちゃんと動いてる。
おっしゃ。快適さは3割増くらいにはなったかな。
dired が悔しいぞ。df も持って来ちゃおうかとも思うが、あ、そういやコンパイラなんか入ってるわきゃねーわ。ソースからビルドするつもりだったけどそりゃ無理だ。これ、OS なんだろう? uname なんかも入ってないし。もうほとんど「勝手なことすんなよ」構成ね。あ、emacs の警告でおよそわかるじゃないか。「x86_64-redhat-linux-gnu」ね。CentOS とかの redhat 系の rpm から引っこ抜けるね。情報なしだと何個も試さないと動かないだろうけど。
うーん。今日はここまでにしとこう。最初の状態よりはずっと良くなったし。なお、「–L ~/.emacs.d/lisp/」なんだけど、後から「効いてる」ことには気付いた。ただしこれだけだと多分サブディレクトリが追加されてなくて、regexp-opt がない、と言われる。これは環境変数での制御より明らかに楽じゃないので、ひとまず EMACSLOADPATH で行っとく。(.bash_profile か .bashrc か .login かそこいらに追加しとこう。)
あー。「嘘つきdf」も試しといた方がいいな。「常に固定値を返す df」(つまりウソしかつかない df):
1 #! /bin/sh
2 echo "Filesystem 1K-blocks Used Available Use% Mounted on"
3 echo "/usr 488282108 272704284 215577824 56% /usr"
こいつに実行権限付けて…。
あ、いけちゃった。これでいいや、「total used in directory 44 available 215577824」なんて情報、ワタシは一度として活用したことなんかないし。
まぁ emacs 以外で df 使いたいって思うことも…、ないか。共用サーバのユーザにそんなニーズ。「自分のクオータ」の使用量見ないと意味ないもんな。よしよし、これでいい。
この「大嘘つき野郎!」を ~/.bin に置いて、.bash_profile はこうしとく:
1 export PATH=$PATH:~/.bin/
2 export EMACSLOADPATH=~/.emacs.d/lisp/
言うことなし。
あとは ssh ログインでの「不愉快」は、大物では、セッションが切れるのが早過ぎるのをどうにかしたい、てのと、あとパスワードログインをやめたい、てのの2つか。この2つをクリアしちゃえば、ほぼ満足だな。どっちも忘れちゃったわ。特に前者。確か措置方法あった気がすんだけどなぁ。
ところで。
emacs は、「公式には入ってないことになってる」ものであって、入っちゃってるのはきっと、保守担当者の趣味か「事故」でしょう。なので、ある日突然なくなってても文句言えないんよねぇ。そんときゃそんとき、か、もしくは、ユーザとして正式に要望出すかどっちかね。なんつーか、こういう不完全な状態でインストールされちゃってること自体、「改善してみれば?」くらいは言える様な気がするし。