Mac で開発用の SMTP サーバーを起動するまでのメモ

By | 2011年8月17日

Macで開発用SMTPサーバをたてたい!
を参考にして snow leopard でやってみた。

これで送信できるとのことなので試すと下記エラーがでていて送信できなかった

$postfix start
$mail dealforest@dealforest.net
 
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: error: to submit mail, use the Postfix sendmail command
Aug 16 20:05:56 dealforest-MBP-2 postfix[5026]: fatal: the postfix command is reserved for the superuser

実行権限的な問題かなと思って sudo をつけて再度ためす

$sudo postfix start
$mail dealforest@dealforest.net
 
fatal: open lock file pid/master.pid: unable to set exclusive lock: Resource temporarily unavailable

ログを見ていると上記のようなエラーがを発見
どっかしらないとこで起動してるのかと思って launchd を調べてみた

sudo launchctl list | grep postfix

sudo をつけないと org.postfix.master でてこなくて少し悩んだ。
対処方法はここにあるように plist をいじるのもいいって自分で postfix を起動させる方法でもいいんだけど、それも気持ち悪いので launchd をそのまま使うことにした。

$sudo launchctl start org.postfix.master  [起動]
$sudo launchctl stop org.postfix.master  [停止]

設定ファイルは /etc/postfix/master.cf にあります。

とりあえずこれで送信できるようになりましたとさ。

Mac で screen 起動後に pbcopy を動くようにする方法

By | 2009年6月25日

ずっと pbcopy が動かなくてなんでだろうと思ってたけど
screen を起動しなかったら動いてることにきづいた。

ここをみると Ports で screen をいれればいいらしい。
でもそれじゃ動かない。で、色々と調べると
どうやらパッチをあてて自分でコンパイルすればよさげ。
というわけでさっそくコンパイルしたら pbcopy ができるようになった!!

以下、コンパイルの流れ。
http://git.savannah.gnu.org/cgit/screen.git
ここから screen のソースをおとしてくる。

パッチを下記のサイトを参考にあてる。
Macのscreen + pbcopy
screen で pbcopy/pbpaste が動かない問題
ちなみにパッチファイルをまとめて gist にあげた。(DL)
これを screen/src の中に保存。
そして screen/src の中に移動。

1
2
3
4
5
patch -s -p0 < screen-mac-pbcopy.patch    <- これでパッチがあたる
autogen.sh
./configure -prefix=/opt/loca/                    <- ports と同じ場所にいれたかったから prefix をつけただけ。
make
sudo make install

これで vim で “*y とすると pastebord にもコピーできた。
日本語まじりの文字をコピーしようとすると nkf が必要。
vim・mac間でクリップボードを介してやり取りする方法 完結編
を参考にして設定しました。

これでそーとー快適。
やっぱり pastebord や clipbord は共有されてるにかぎる。

github のフィードを Growl で表示する GitHubGrowler が便利

By | 2009年5月29日

id:typester さんの発言 を見て github-growler なるものがあることを知る。宮川さん作。
で、さっそく設定をしてみた。
ソースは github からダウンロード。(ここ)

git clone http://github.com/miyagawa/github-growler.git
cd github-growler
perl github-growler.pl [userID] [APIキー]
(※APIキーは [home] => [account] に書いてあります)

これで動くようになればok.
これ自身がデーモンなので、そのまま放置しとくと新しい動きだけを表示してくれる。

毎回 UserID と APIキー の入力がめんどい場合は git config で登録しておけばよい。

git config --global github.user [userID]
git config --global github.token [APIキー]

default で取得間隔と表示最大数は変更できる

defaults write net.bulknews.GitHubGrowler interval [取得間隔(秒)]
defaults write net.bulknews.GitHubGrowler maxGrowls [表示最大数]

設定ができてるかはこれで確認

defaults read net.bulknews.GitHubGrowler interval

自動起動の設定

実行するとデーモンがたちがあるけど、ログイン毎にするものめんどくさい。
というわけで launchd を使って自動起動の設定をしてみた。

gist から DL するかもしくは下記のをコピペしてください。
置き場所はここ。
~/Library/LaunchAgents/net.bulknews.GitHubGrowler.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.bulknews.GitHubGrowler</string>
    <key>ProgramArguments</key>
    <array>
        <string>絶対パス /github-growler/github-growler.pl</string>
        <string>ここに UserID </string>
        <string>こっちに API キー</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

github-growler.pl までの絶対パスと UserID と APIキーを変更してください。

launchd に登録(登録すると自動起動するようにしてある)

launchctl load ~/Library/LaunchAgents/net.bulknews.GitHubGrowler.plist

エラーは /var/log/system.log にでます。
これで動かない場合は userID, APIキー が合ってるか確認してください。
net.bulknews.GitHubGrowler.plist を変更した際は一度 unload して再度、load してください。
そうしないと反映されないみたいで地味にはまった。。。

あとuserID や APIキー が script に渡っていない場合はこんな感じのエラーができます。

May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Can't exec "git": No such file or directory
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Use of uninitialized value $user in scalar chomp
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Can't exec "git": No such file or directory
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Use of uninitialized value $token in scalar chomp

ちょっと動かしてみたけど、ほんとに世界がかわったw
前まで RSS リーダーとかで見てたけどこっちの方が全然いいなぁ〜

参考資料

LaunchDaemons (launchctl, launchd.plist) の使い方

Samba を使って TimeMachine の環境を整えたメモ

By | 2009年5月18日

なぜいまさら TimeMachine を使おうとしだしたかというと OS アップデート中に停電。
そして OS の挙動がおかしくなり、システムをいれなおすも変にメモリリークおこす始末。
で、環境構築しなおすはめに。めんどくさくてしたくないから TimeMachine を導入してみた。
これで安心。やっぱりバックアップは大切ね。

何箇所かハマったので、それのメモ。
実際の作業は分かりやすくまとめているサイトがあるのでそれらを見てもらえればと。

ネットワーク越しTimeMachineをセットアップ
Samba を使って TimeMachine の環境を構築する

一連の流れだけまとめとくと
ディスクユーティリティで空の新規イメージを作成。
その際に容量は 100M で作り、smb に移動した後にサイズ変更。
あとはボリュームを mac 側にマウントし TimeMachine を実行。
大体こんな感じ。
ただ言葉だけだと簡単やけどハマり所はいっぱいあったんで、下記まとめ。

  • defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1

    これを Terminal.app から入力するとネットワーク越しのボリュームが確認できるようになる。

  • バックアップ用のイメージは [Macのコンピュータ名]_[en0のMACアドレス] でファイルを作ること
    このコンピューター名が /etc/hostconfig で設定している名前でなくて
    「環境設定」->「共有」で設定されている名前。
    MACアドレスは Terminal.app から ifconfig en0 とうった ether の項目。
    ちなみに : の記号は削除した12文字の英数字。
    間違えていると「バックアップディスクイメージをマウントできません」ってエラーがでる。

  • Samba はパスワードロックをかけていても問題なし。

  • Intel mac の場合は「空の新規イメージ」を作る際のパーティションを「単一パーテーション・GUIDパーテーションマップ」を使った方がいいらしい。

これであとは TimeMachine を実行すると数時間後に完了される。
あと毎回 smb をマウントするのめんどくさいので、マウントされたボリュームを
「アカウント」->「ログイン項目」にドラドロしとけば起動時に自動的にマウントされる。

あと、ふと思ったけど TimeMachine でバックアップとっていっとけば新しいマシンも
TimeMachine のデータから復元すれば新しいマシンのセットアップが速攻で終わるんじゃないかと思った。
できたら相当便利なんだけどなー。
MAC アドレスみてるからきっと無理なんだろうなとは思うけど。

参考資料

SambaボリュームからTimeMachineで復元する

追記 2009/05/18 AM 03:41

一度 TimeMachine でバックアップをとると、イメージファイルがマウントされっぱになる。
こいつをアンマウントしてやらないと次回のバックアップの開始する際に
「バックアップディスクイメージをマウントできません」ってエラーで死ぬので要注意

追記 2009/08/02 PM 07:02

「バックアップディスクイメージをマウントできません」というエラーがでて
/var/log/system.log 以下に Failed to mount disk image と出てた場合、
バックアップ先の ._[Macのコンピュータ名]_[en0のMACアドレス].sparsebundle を削除すればマウントできた。
ただし、これを削除すると Finder 上からはただのフォルダという認識になるためパーティションを
切り直した後に削除すること。
そうしないとディスクユーティリティでサイズの変更ができなくなる。
それにしてもはまり所が多くて困る。

Mac の Vim から Flash のパブリッシュを実行する

By | 2009年4月16日

内容自体はタイトルのまま。
id:Htanabee さんの Vim から Flash のパブリッシュを実行する を参考にして試した。
ただ元の記事が Windows を対象にしていたので mac で試してみた。

publish.jsfl はそのまま拝借します。
これだとテストムービの再生。

fl.getDocumentDOM().testMovie();

こっちだとパブリッシュを行います

fl.getDocumentDOM().publish();

あとはこれを .vimrc にかけばおk。
気になるようであればファイルタイプ指定すればおk

nnoremap <buffer> <c-W><cr> :!open -a "Adobe Flash CS4" "/パス/publish.jsfl"<cr>

でパブリッシュの実行をさせたいのだけどなぜか反応しない。
他のキーならちゃんと動くのにorz
原因がわからない。

引用元(http://unkar.jp/read/pc11.2ch.net/software/1106153307#l238)

:h chalice-usage
> NOTE: 端末の関係上が使用できない場合があります。そのような環境で
> はと-をそれぞれ代わりに利用できます。

これかな??

ま、これで相当快適になった。