Emacs For Mac OS X

普段は、ターミナル上でMac標準のemacsを使用していました。

$ emacs --version
GNU Emacs 22.1.1
...

さすがに22系もという感じだったので、24系を使うことにしました。
GNU Emacs For Mac OS Xからバイナリダウンロードすることにしました。
なんかかっこいいホームページですね。
mac-emacs

.emacsではなく、.emacs.d/init.el内で設定ファイルを記述するのが標準らしい。。

shellの設定ファイルでaliasを設定しておくと、標準の/usr/bin/emacsではなく、インストールした
emacsで起動できます。

alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs -nw'
$ emacs --version
GNU Emacs 24.3.1
...

ruby-modeも標準で入っているのね。

 

rvmとrailsの環境

久しぶりにrailsの環境を触ろうとしたら、忘れていたので備忘録として。
環境を一度つぶして、再インストールしてみた。

$ curl -L https://get.rvm.io | bash -s stable --rails --autolibs=enabled

$ rvm list

rvm rubies

   ruby-2.0.0-p0 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

ruby の 1.9.3もインストールしておく。(まだ1.9.3を使っているので。)

$ rvm install 1.9.3
$ rvm use 1.9.3
$ rvm gemset create rails32
$ rvm --default 1.9.3@rails32
$ rvm gemset list
$ rvm gemset list

gemsets for ruby-1.9.3-p392 (found in /Users/XXX/.rvm/gems/ruby-1.9.3-p392)
   (default)
   global
=> rails32

$ gem install rails

まあ、こんな感じで@rails32のrailsを使えるようにしました。

 

TimeMachine::netatalk3

netatalk2を使って今までタイムマシンのサーバを構築していましたが、サーバのOS更新にともない、
netatalk3にすることに。

afp.confだけの設定で済むようなのでとてもシンプルになりますね。

netatalkはportsからインストールします。

# cd /usr/ports/net/netatalk3
# make
# make install

/etc/rc.confもnetatalkのみ追加でOK。afpdとか不要!

netatalk_enable="YES"

Mac(Client)とTimeMachine(Server)のネットワークが異なるセグメントにいます。。。
なのでrouter超えてのアクセスになります。
AFPでタイムマシンの設定などを調べていると、avahi-daemon等を稼働させるような例が
見受けられますが、おいらの環境では意味がないので動作させません。

そのためかどうかはわかりませんが、タイムマシンの設定画面でどうしてもディスクが表示されませんでした。
AFPのファイルサーバとしてはmountできるのですが、タイムマシンの設定からはディスクが選択できませんでした。もちろんTimeMachineのディレクトリをmountはできるんですよ。

同一セグメントにMacとTimeMachineを配置してもダメ。。。なんでだろう。。。
いろいろ調べてみたのですが、原因はよくわかりませんでした。。
タイムマシンのアプリがディスク認識するプロセスが変なんじゃないかと疑っている。

結局、あきらめて、コマンドラインで認識させる方法はないかと探しまわっていると見つかった。
(参考ページ)

% sudo tmutil setdestination -p afp://username@192.168.0.xxx/TimeMachine
Password:  (sudoのためのパスワード)
Destination password:  (afp側のパスワード)

これで、TimeMachineの設定画面にディスク表示されました!
こんなコマンドがあるなんて、素敵。
tmutil は TimeMachine Utilityの略でしょうか。

tmutil-timemachine

afp.confはとてもシンプルに。

[Global]

... 略

[TimeMachine]
path = /path/TimeMachine
time machine = yes
vol size limit = 480000
valid users = xxxx   (userを限定しています)
 

DHCPv6を試してみた。。。その1

ようやくL2が安定したようなので、DHCPv6をもう少し試してみます。
DHCPv6理解していません!なので試すだけ。

vyattaをDHCPv6 serverにする場合と、vyattaをDHCPv6-relayにする場合を試してみた。
iPhone(IOS5)もMac(Lion)もとりあえずアドレス取得とDNS serverの取得もできました。

しかし、ブラウザとか使ってアクセスすると一時アドレスを使っている。。。
DHCPv6で割り当てられたアドレスを使ってくれない。。。そんなもの?
iPhoneもWindows7も、Lion君も同じだったので、一時アドレスが強いってこと?
うーん。これじゃ意味がないんだよな。。。

とりあえず、メモ。

■vyattaをDHCPv6 serverにする
RAでm/oフラグをon/onにします。

interfaces {
 ...
 bridge br2 {
   ...
   ipv6 {
     ...
     router-advert {
        ...
        managed-flag true
        other-config-flag true
        prefix 2001:470:xxx:yyy::/64 {
          ...
        }
        ...
      }
    }
  }
}

service {
  ...
  dhcpv6-server {
    shared-network-name homev6 {
      subnet 2001:470:xxx:yyy::/64 {
         address-range {
            start 2001:470:xxx:yyy:beef::100 {
              stop 2001:470:xxx:yyy:beef::200
         }
      }
      domain-search pman.biz
      name-server 2001:470:zzz::111
    }
  }
...
}

m/oフラグをoff/onにした場合は、DNS serverのアドレスを取得できませんでした。
IPv6アドレスは割り当てられないのは、mフラグがoffなので良いのでしょう。。
パケットを見ていると、clientからmessage type: Information Requestが飛んで、
ReplyのパケットにDNS Serverアドレスの情報が空っぽ。。。
※どちらが悪いのか、またはこれが正しいのかは謎。。。調べる気はまだない。

m/oフラグをon/onにした場合は、DNS serverのアドレスも取得できました。
パケットを見ていると、clientからmessage type: solicit飛んで、Replyのパケットに
IPv6アドレスとDNS Serverの情報が入っていました。
これが正しい動きなのかな。。。

■vyattaをDHCPv6 Relayにする (DHCPv6サーバは別サーバ上でiscのdhcp 4.2.3を稼働)

interfaces {
 ...
 bridge br2 {
   ...
   ipv6 {
     ...
     router-advert {
        ...
        managed-flag true
        other-config-flag true
        prefix 2001:470:xxx:yyy::/64 {
          ...
        }
        ...
      }
    }
  }
}

service {
  ...
  dhcpv6-relay {
    listen-interface br2 {
    }
    upstream-interface eth1 {
      address 2001:470:zzz::111
    }
  }
...
}

DHCPサーバ(4.2.3)の/usr/local/etc/dhchpd6.confは、こんな感じ

...
subnet6 2001:470:zzz::/64 {
  deny unknown-clients;
}
subnet6 2001:470:xxx:yyy::/64 {
  range6 2001:470:xxx:yyy::beef:100 2001:470:xxx:yyy::beef:200;
  option dhcp6.domain-search "pman.biz";
  option dhcp6.name-servers 2001:470:zzz::111;  
}

こちらも当然、m/oフラグは同じ挙動。。。m/oフラグはon/onにしないとダメみたい。

Lionの/etc/resolv.confにIPv6のDNS serverも加わっている!

$ cat /etc/resolv.conf 
#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#
search pman.biz
nameserver 192.168.xxx.111
nameserver 2001:470:zzz::111

iPhoneで確かめる方法がわからないけど、DNS serverのアドレスが割当たっているのがなんとかわかる。。。

DHCPv6アドレスを使ってアクセスするようにするにはどうすればいいんでしょう。。。
クライアントに手を入れるなんてことは避けたい。。。
DHCPv6でstaticにIPv6アドレス振る方法も後々試そう。。。

 

firefly(mt-daaped)へパッチ

iTunes 10.5.1がリリースされましたが、fireflyで楽曲リストが表示されない。。
うーん。Appleは今回は修正する気がないのだろうか。。。仕様変更か?
(iTunes 10の時は修正されたのにな〜)

待ってもられないので、またしてもfireflyへパッチを適用して対応することにしました。

https://discussions.apple.com/message/16489758#16489758
前回適用したパッチを見比べると、やってることは同じっぽいね。
前回の記事はここ

--- mt-daapd-0.9~r1696.dfsg.orig/src/plugins/out-daap.c   2007-10-13 15:10:06.000000000 -0700
+++ mt-daapd-0.9~r1696.dfsg/src/plugins/out-daap.c        2011-10-16 18:08:53.207764000 -0700
@@ -1392,11 +1393,9 @@

     size = sizeof(servername);
     pi_server_name(servername,&size);
-    //    supports_update = conf_get_int("daap","supports_update",1);
+    supports_update = pi_conf_get_int("daap","supports_update",1);

     actual_length=139 + (int) strlen(servername);
-    if(!supports_update)
-        actual_length -= 9;

     if(actual_length > sizeof(server_info)) {
         pi_log(E_FATAL,"Server name too long.\n");
@@ -1434,6 +1433,8 @@
     current += dmap_add_int(current,"msdc",1);          /* 12 */

     if(supports_update)
+        current += dmap_add_char(current,"msup",1);         /* 9 */
+    else
         current += dmap_add_char(current,"msup",0);         /* 9 */

     out_daap_output_start(pwsc,ppi,actual_length);

portsをcleanしていたので、一度makeしてパッチを適用して、objectファイルを消して
再コンパイルを実施して対応。

# cd /usr/ports/audio/firefly
# make
# cd work/mt-daapd-svn-1696/src/plugins
# rm out-daap.o
# vi out-daap.c (パッチ適用)
# cd /usr/ports/audio/firefly/work/mt-daapd-svn-1696
# make
# cd /usr/ports/audio/firefly
# make install

iTunes 10.5.1でもリストが表示されるようになりました。