PHP5.3のインストール
http://jp.php.net/get/php-5.3.1.tar.gz/from/a/mirrorから最新版のソースを入手する。
インストール手順はここを参照。
主要なconfigureオプションの説明はここ。
全てのオプションについての情報は、./configure --helpコマンドで参照できる。
エラーが出た。調べてみると自分の環境にはlibxml2はあるがlibxml2-develが無いのでこれを入れてみる。
# cd /usr/local/src
# wget http://jp.php.net/get/php-5.3.1.tar.gz/from/this/mirror
# tar xzvf php-5.3.1.tar.gz
# cd php-5.3.1
# ./configure
--enable-mbstring
--enable-mbregex
--with-apxs2=/usr/local/httpd/bin/apxs
--with-gd
--with-jpeg-dir=/usr/lib
--with-png-dir=/usr/lib
--with-freetype-dir=/usr/lib
--with-mysql=/usr/local/mysql
--with-mysqli=/usr/local/mysql/bin/mysql_config
--with-pdo-mysql=/usr/local/mysql
--with-zlib-dir=/usr/lib
SSL使う場合は、--with-openssl[=DIR]オプションも必要> configure: error: xml2-config not found. Please check your libxml2 installation.
再びconfigureでうまくいった。
# yum install libxml2-devel
以上の作業で/usr/local/httpd/modulesにlibphp5.soが作成される。
# make
# make install
以下設定手順。
雛型をコピーしてPHPの設定ファイルを作成する。
Apacheの設定をする。
# cp php.ini-development /usr/local/lib/php.ini
httpd.confに以下を記述する。
httpd-php.confを新規作成して、以下を記述する。
LoadModule php5_module modules/libphp5.so
Include conf/extra/httpd-php.conf
ApacheクックブックによるとAddTypeよりAddHandlerを使うのが正しいらしい。
AddHandler application/x-httpd-php .phtml .php
AddHandler application/x-httpd-php-source .phps
最後に動作確認をする。
/var/www/public/test.phpを作成して以下を記述
Apache起動
<?php phpinfo(); ?>
http://localhost/test.phpにアクセスするとビルド情報が表示された。
# /usr/local/httpd/bin/apachectl start
php-modeのインストール
.emacsの記述
$ wget http://sourceforge.net/projects/php-mode/files/php-mode/1.5.0/php-mode-1.5.0.tar.gz/download
$ tar xzvf php-mode-1.5.0.tar.gz
$ cp php-mode-1.5.0/php-mode.el ~/.emacs.d/plugins/
;; php-mode
(require 'php-mode)
php-mode.el内に以下のようなコメントがあるので、最新のphp-modeでもPHP5には対応してないようだ。
;;; Commentary:
;; PHP mode is a major mode for editing PHP 3 and 4 source code.
次に、php用のyasnippetを探したところ、http://d.hatena.ne.jp/n314/20091116/1258354156こんなのがあったの入れてみる。
これでphp-modeでhtmlタグとPHP構文の補完ができるようになる…と思ったのだが使っていると以下のような警告が出た。
$ git clone git://github.com/nishimura/minimal-yasnippet-php-mode.git
$ cp -R minimal-yasnippet-php-mode/php-mode/ ~/.emacs.d/plugins/yasnippet-0.6.1c/snippets/text-mode/html-helper-mode/
警告が出るだけで使えるからいいやとも思ったけど、mmm-mode入れるのが正しいのかな。
Warning (php-indent):
Indentation fails badly with mixed HTML and PHP.
Look for an Emacs Lisp library that supports "multiple
major modes" like mumamo, mmm-mode or multi-mode.
モジュールにinitializeメソッドを定義する時の注意
実行結果
module Mod
def initialize
puts 'module initialized'
end
endclass Parent
def initialize
puts 'parent class initialized'
end
endclass Child < Parent
include Mod
def initialize
super
end
endChild.new
initializeメソッドを持つモジュールをインクルードすると、スーパークラスで定義した初期化処理がされなくなる。
module initialized
これを避けるためにはモジュールのinitializeメソッドの中でもsuperを呼ぶようにする。
実行結果
module Mod
def initialize
super
puts 'module initialized'
end
endclass Parent
def initialize
puts 'parent class initialized'
end
endclass Child < Parent
include Mod
def initialize
super
end
endChild.new
さらにこのモジュールを汎用化するためにinitializeメソッドを以下のように修正すれば、インクルード元クラスのinitializeがどんな引数を持っていても、スーパークラスのinitializeに処理を投げられるようになる。
parent class initialized
module initialized
そもそもモジュールにinitializeやsuperを書くこと自体どうなのかとも思ったけど、
module Mod
def initialize(*args, &block)
super
puts 'module initialized'
end
end
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/29888 のようにコミッタの方が良しとしてるのだからありなのだろう。
rubygemsの動作がよく分からない
一般ユーザー権限で上のようにgem installを実行すると、~/.gem/ruby/1.8以下にmislav-will_paginateがインストールされる。
$ gem install mislav-will_paginate
しかし以下のような警告が出る。
書き込み権限が無いので/usr/lib/ruby/gems/1.8/以下にはインストールできないということらしい。
WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and
/usr/bin aren't both writable.
WARNING: You don't have /home/totemn/.gem/ruby/1.8/bin in your PATH,
gem executables will not run.
この状態で
を実行すると、mislav-will_paginateはちゃんと出力される。
$ gem list
しかし
を実行してアンインストールしようとすると、以下のエラーが出てアンインストールできない。
$ gem uninstall mislav-will_paginate
~/.gem/ruby/1.8以下のライブラリは見つけられないようだ。
ERROR: While executing gem ... (Gem::InstallError)
Unknown gem mislav-will_paginate >= 0
仕方なく~/.gem/ruby/1.8以下のgem本体やspecファイルを手動で削除するとgem listの出力からも消えた。
gem listは/usr/lib/ruby/gems/1.8と~/.gem/ruby/1.8を両方見てくれるけど、gem uninstallは/usr/lib/ruby/gems/1.8を調べた時点でmislav-will_paginateが無いければすぐにエラー出すてことなのかな。
ネットで調べると
とするのが正しいらしい。
$ sudo gem install mislav-will_paginate
この方法だと、/usr/lib/ruby/gems/1.8以下にのみインストールされる。
gem listで出力されるし、sudo gem uninstallでちゃんとアンインストールできる。
~/.gemを作成する機能があるのにユーザごとにライブラリを管理することは想定してないのだろうか。
何のための~/.gemなんだろう。
※追記
でインストールした場合も、
$ gem install mislav-will_paginate
とパスを指定してやるとアンインストールできた。
$ gem uninstall -i ~/.gem/ruby/1.8 mislav-will_paginate
gemコマンドはこのパスを見ていて、
$ gem env
> - GEM PATHS:
> - /usr/lib/ruby/gems/1.8
> - /home/totemn/.gem/ruby/1.8
gem installは、上から順にパスを見ていき、インストールできるところがあればそこにインストールする。
gem listは、全てのパスを調べて全部出力してる。
gem uninstallは、/usr/lib/ruby/gems/1.8からアンインストールしようとするが、パスを指定すればそこからのアンインストールも可能。
という感じか。
Rinariのインストール
EmacsでRails開発をするためのElispライブラリ。
公式サイトhttp://rinari.rubyforge.org/が丁寧で分かりやすい。
インストール
公式では、ELPAというelispを介してのインストールと、gitから直接インストールする方法が紹介されている。
ELPAを使うと、Rinariを使うにあたって必要なelispも一緒にインストールできるようだ。
今回はgitから入れることにする。
まずhttp://git-scm.com/からgitのインストールをする。(参考)
Rinariのインストール。(参考)
$ wget http://kernel.org/pub/software/scm/git/git-1.6.5.2.tar.gz
$ tar xzvf git-1.6.5.2.tar.gz
$ make
$ sudo make install
.emacsに以下を記述してrinariの場所をload-pathに追加。
$ git clone git://github.com/eschulte/rinari.git
$ cd rinari
$ git submodule init
$ git submodule update
次にRinariが必要とするelispをインストールする。
(add-to-list 'load-path "~/.emacs.d/plugins/rinari")
(require 'rinari)
http://rinari.rubyforge.org/Add-Ons.html#Add-Onsに必要なelispの一覧がある。
自分の環境ではruby-mode、javascript-mode、css-modeはインストール済みなので、
をインストールする。
yaml-modeのインストール
.emacsの記述
$ wget http://tweedle-dee.org/svn/emacs.d/site-lisp/yaml-mode.el
(require 'yaml-mode)
(add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode))
rhtml-modeのインストール
.emacsの記述
$ git clone git://github.com/eschulte/rhtml.git
(add-to-list 'load-path "~/.emacs.d/plugins/rhtml")
(require 'rhtml-mode)
(add-hook 'rhtml-mode-hook (lambda () (rinari-launch)))
yasnippetのインストール
.emacsの記述
$ wget http://yasnippet.googlecode.com/files/yasnippet-0.6.1c.tar.bz2
$ bzip2 -dc yasnippet-0.6.1c.tar.bz2 | tar xvf -
(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet-0.6.1c")
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/.emacs.d/plugins/yasnippet-0.6.1c/snippets")
CentOSにEmacs23を入れる
CentOSのyumリポジトリにEmacs23のRPMパッケージが無いのでhttp://sea-mew.jp/nox/modules/rpms/ls/el5/i386からインストールする。
まず古いEmacs21を削除する。
Emacs23を入れる。
$ rpm -qa | grep -i emacs
> emacs-el-21.4-20.el5
> emacs-21.4-20.el5
> emacs-leim-21.4-20.el5
> emacs-common-21.4-20.el5
> emacspeak-23.0-3.el5
$ sudo rpm -e emacs-el
$ sudo rpm -e emacs-leim
$ sudo rpm -e emacspeak
$ sudo rpm -e emacs
$ sudo rpm -e emacs-common
hunspellとlibotfを入れてからやり直す。
$ wget ftp://sea-mew.jp/rpms//el5/i386/emacs-23.1-10.i386.rpm
$ wget ftp://sea-mew.jp/rpms//el5/i386/emacs-common-23.1-10.i386.rpm
$ wget ftp://sea-mew.jp/rpms//el5/i386/emacs-el-23.1-10.i386.rpm
$ sudo rpm -Uvh emacs-common-23.1-10.i386.rpm
$ sudo rpm -Uvh emacs-23.1-10.i386.rpm
> エラー: 依存性の欠如:
> hunspell は emacs-23.1-10.i386 に必要とされています
> libotf.so.0 は emacs-23.1-10.i386 に必要とされています
これでEmacs23が使えるようになった。
$ wget ftp://sea-mew.jp/rpms//el5/i386/hunspell-1.2.7-1.i386.rpm
$ wget ftp://sea-mew.jp/rpms//el5/i386/libotf-0.9.9-1.i386.rpm
$ sudo rpm -Uvh hunspell-1.2.7-1.i386.rpm
$ sudo rpm -Uvh libotf-0.9.9-1.i386.rpm
$ sudo rpm -Uvh emacs-23.1-10.i386.rpm
$ sudo rpm -Uvh emacs-el-23.1-10.i386.rpm
Vimの色設定
背景を黒にしたらデフォルトのハイライトが見難くなったので色の変更をする。
まず、http://www.vim.org/scripts/script.php?script_id=1778からwombat.vimをダウンロードし、~/.vim/colorsに保存する。
次に~/.vimrcに以下を記述してwombat.vimを読み込ませる。
これで色が変わった。wombatは蛍光色なので背景が黒だと見やすい。
colorscheme wombat
他の色設定ファイルを使う場合は、http://www.vim.org/search.phpに行き、
Search for Vim Scriptsのtypeをcolor schemeにしてsearchするとリストが表示される。