2011年6月20日月曜日

MacPortsを再インストール

古くなったMacPortsを再インストールという記事をみて、自分の環境も汚くなりつつあり整理しないといけないと思っていたので、再インストールしてみた。

MacPorts削除の前準備

MacPorts削除する前にDBのダンプやデーモンの停止をしておきます。最初にDBのダンプをとります。

# /opt/local/lib/postgresql/bin/pg_dumpall > /tmp/pgsql.dump
# /opt/local/bin/mysqldump5 -u root -x --all-databases > /tmp/mysql.dump
#

次にMacPortsでインストールしたデーモンのプロセスを停止させます。

# port unload apache2
# port unload postgresql90-server
# port unload mysql5-server
#

インストール時期がかなり前だと、どのデーモンをMacPortsでインストールしたか忘れてしまうこともあります。そんな時は、launchctl コマンドを使えば、 現在動いているデーモンからMacPortsでインストールしたものを抽出できます。

# launchctl list | grep macports
60083 - org.macports.postgresql90-server
59969 - org.macports.mysql5
59934 - org.macports.apache2
#

MacPortsを削除とインストール etc..

元記事と大体一緒なので簡単に..
一応最初に "port installed > /tmp/install.txt"として、現在インストールされているport一覧を取っておきます。

# port installed > /tmp/install.txt
# port deactivate active
# port -f uninstall installed
# port clean all
# sudo mv /opt/local /opt/local.old
#

macportをインストールして、最新版に更新。

# port selfupdate
# port upgrade outdated
#

macports.confの編集

最新版に更新後、/opt/local/etc/macports/macports.conf を編集してportarchivemodeをyesにします。これによって、コンパイル時にパッケージ アーカイブファイルが/opt/local/var/macports/packagesに作られます。またインストールする際にパッケージがあれば、再コンパイルせずにそのパッケージが使われるので、時間と電力の節約になります。

# vi macports.conf
portarchivemode         yes

sourceとpackageの移動

既にあるソースとパッケージは再利用したいので、新しいディレクトリに移動させます。

# mv /opt/local.old/var/macports/distfiles/* /opt/local/var/macports/distfiles/
# mv /opt/local.old/var/macports/packages/darwin /opt/local/var/macports/packages/
# 

インストール

パッケージが既にあるportをインストールすると、コンパイルせずにパッケージファイルを使用するので、面白いほどサクサクインストールが進みます。もちろんパッケージよりインストールするポートのバージョンが新しければ、コンパイルが行われ新しいパッケージが作成されます。

# port install lv +lesslikeslash
--->  Computing dependencies for lv
--->  Dependencies to be installed: ncurses ncursesw
--->  Unpacking tgz archive for ncursesw 5.8_0
--->  Installing ncursesw @5.8_0
--->  Activating ncursesw @5.8_0
--->  Cleaning ncursesw
--->  Unpacking tgz archive for ncurses 5.9_0
--->  Installing ncurses @5.9_0
--->  Activating ncurses @5.9_0
--->  Cleaning ncurses
--->  Unpacking tgz archive for lv 4.51_2+lesslikeslash
--->  Installing lv @4.51_2+lesslikeslash
--->  Activating lv @4.51_2+lesslikeslash
--->  Cleaning lv
#

mysqlのインストール

# port install mysql5 mysql5-server
# sudo -u _mysql mysql_install_db5
# cp /opt/local.old/etc/mysql5/my.cnf /opt/local/etc/mysql5/my.cnf
# port unload mysql5-server
# port load mysql5-server
# mysql5 -u root -p < /tmp/mysql.dump
#

postgresqlのインストール

# port install postgresql90 postgresql90-server
# mkdir -p /opt/local/var/db/postgresql/defaultdb
# chown -R postgres:postgres /opt/local/var/db/postgresql/defaultdb
# ln -s /opt/local/var/db/postgresql /opt/local/var/db/postgresql90
# ln -s /opt/local/lib/postgresql90 /opt/local/lib/postgresql
# su postgres -c ‘/opt/local/lib/postgresql90/bin/initdb -D /opt/local/var/db/postgresql90/defaultdb -E UTF8 --no-locale'
# vi /etc/sysctl.conf
kern.sysv.shmmax=167772160 
kern.sysv.shmmin=1
kern.sysv.shmmni=32
kern.sysv.shmseg=8
kern.sysv.shmall=65536
# port load postgresql90-server
# su postgres
$ psql -f /tmp/pgsql.dump template1
$

apacheのインストール

# port install apache2 +preforkmpm
# port install php5 +apache2 +pear
# port install php5-curl php5-mbstring php5-mysql php5-postgresql
# port install php5-gd +t1lib
# mv /opt/local/apache2/conf /opt/local/apache2/conf.org
# ln -s /var/www/conf /opt/local/apache2/conf
# cp /opt/local/apache2/conf.org/extra/mod_php.conf /opt/local/apache2/conf/extra/
# cp /opt/local/apache2/conf.org/mime.types /opt/local/apache2/conf/
# rm -r /opt/local/apache2/htdocs
# ln -s /Library/WebServer/Documents /opt/local/apache2/htdocs
# ln -s /var/www/conf/php/php.ini /opt/local/etc/php5/php.ini
# 
# port load apache2
#

それ以外のportも、最初に保存したinstall.txtを見ながら、抜けがないようにインストールしていきます。

他のマシンもMacPortsを再インストール

MacBook air 11インチにもMacPortsが入っているので、同じようにして再インストールしていきます。

ただしpackageファイルは先ほど再インストールが終了したマシンから移し替えます。このようにすれば、MacBook airには最新のパッケージが入るので、コンパイルレスでインストールができます。実際、実行すると爆速でインストールが終了します。

2011年6月10日金曜日

emacsのフレームサイズを画面解像度によって動的に変更する方法

メインの開発環境はmac mini+FlexScanL885なのだが、外出先などではMacbook air 11インチを使用している。emacsのデフォルト フレーム サイズをFlexScanL885にあわせるとMacbook airでは、はみ出てしまう。逆にMacbook airにあわせると、FlexScanL885では狭すぎて開くたびにリサイズするなんてことになる。

じゃあ解像度に合わせて、動的に開くフレームサイズを決めれば良いんじゃねぇ。ということで下記の設定を書いてみた。

;; 画面の解像度によりフレームサイズを変化させる
(when window-system
  (if (>= (x-display-pixel-width) 800) (setq width-gain 0.45) (setq width-gain 0.8))
  (if (>= (x-display-pixel-height) 1000) (setq height-gain 0.7) (setq height-gain 0.87))
  (set-frame-size (selected-frame)
                  (floor (/ (* (x-display-pixel-width) width-gain) (frame-char-width)))
                  (floor (/ (* (x-display-pixel-height) height-gain) (frame-char-height))))

横の解像度が800px以下の場合は、横のフレームサイズを ((横解像度*0.8)/1文字の横ピクセル数)、横の解像度が800px以上の場合は ((横解像度*0.45)/1文字の横ピクセル数) としている。

また、縦の解像度が1000px以下の場合は、縦のフレームサイズを ((縦解像度*0.87)/1文字の縦ピクセル数)、縦の解像度が1000px以上の場合は ((縦解像度*0.7)/1文字の縦ピクセル数) としている。

2011年6月9日木曜日

TotalFinderとcdtoを導入した。

先日、MacUpdate PromoTotalFinderを40% offセールを行っていた。通常$15の所を$9で購入できるというので、前々からよさげなツールだと思っていたので導入してみた。

TotalFinderの良いところは、今まで別々に開いていたFinderをタブとして開くことが出来るところでしょう。Finderを開きすぎて、画面がゴチャゴチャしてしまう事がなくなったので、買ってよかったと思う。

TotalFinder

ついでに、現在Finderで開いているディレクトリの場所をターミナルでひらいてくれる>cd to ...も導入してみた。この辺を参考にしてインストールする。

cd to..

自分はTerminal.appでなくiTermを使用しているのでiterm用のプラグインに入れ替える。

$ mv /Applications/\>cd\ to\ ....app/Contents/PlugIns/terminal.bundle /Applications/\>cd\ to\ ....app/Contents/PlugIns\ Disabled/
$ mv /Applications/\>cd\ to\ ....app/Contents/PlugIns\ Disabled/iterm.bundle /Applications/\>cd\ to\ ....app/Contents/PlugIns/

入れ替えてみたのだが、何故かiTermが立ち上がらない。Terminalに戻すとうまくいくので、iTermの問題らしいので、googleさんに聞いてみてたが他の人は動いているらしい。何故だ???としばらく考えていたところ、自分が使っているのはiTermでなくiTerm2だったことを思い出した。

改めてググってみると、Does not work with iTerm2というのが引っかかった。PlugIns/iterm.bundle/Contents/MacOS/itermはIDが”net.sourceforge.iTerm”となっているので"com.googlecode.iterm2"にバイナリエディタなどで書き換えてあげれば動くよとの事だった。 しかも、パッチ済みのプラグイン(iterm2.bundle.zip)も置いてあったので、それを使わせてもらいました。

$ mv /Applications/\>cd\ to\ ....app/Contents/PlugIns/iterm.bundle /Applications/\>cd\ to\ ....app/Contents/PlugIns\ Disabled/
$ unzip iterm2.bundle.zip
$ mv iterm2.bundle /Applications/\>cd\ to\ ....app/Contents/PlugIns/

これで、>cd to ...からiTerm2を立ち上げることができるようになりました。