2010-12-29

バージョン管理システムの導入

Mac OS X 10.6にはCVSとSubversionは標準で入っている。ギット(Git)やマーキュリアル(Mercurial)などは自分でインストールしなくてはならない。ここではMacPortsからインストールする方法をメモ。

Git
$ sudo port install git-core

パッケージ名は「git」じゃなくて「git-core」である。

※Xcode 4が標準でgitを使うようになったので自分でインストールしなくてもよくなった。

Mercurial
$ sudo port install mercurial

なんだが、Snow Leopardなんかだと途中でエラーになってしまう。別途「Java デベロッパ・パッケージ(Java for Mac OS X 10.6 Update 3 Developer Package)」が必要なので、アップルのデベロッパーサイトからダウンロードしてインストールしておくこと。

と書いてみたものの、やっぱりめんどくさいから

Git, MercurialついでにBazaarいずれもオフィシャルサイトでインストーラーパッケージ(.pkg/.dmg)が配布されているので、そっちを使った方がインストール時間も短くて済んでラクチンである。

さらにGitについては、Xcode 4を入れればいっしょに付いてくるようになった。

GitをGUIで使いたければ、GitHubから「GitHub for Mac」が配布されている。Mercurialには、Mac App Storeで手に入る「SourceTree」が便利。SourceTreeはGitにも使えるので最近はもっぱらこれを使っている。LinuxやWindowsでは「TortoiseHg」だろうか。

Bazaarは、

$ bzr explorer

とすれば、GUIフロントエンドが起動する。

空のパスワードでsudoする方法

Mac OS X 10.4 Tigerではパスワードが空(カラ)のままでも sudo コマンドを実行できていたのだが、Mac OS X 10.5 Leopardからはセキュリティが強化され、パスワードを設定しておかないと sudo 不能になった。面倒くさがり屋のためのパスワード入力を回避する方法メモ。

パスワードなしでもsudoできるようにする方法

シングルユーザーモード(command+S)で起動しておいて、

# mount -uw /
# vi /etc/sudoers

とでもして /etc/sudoers を編集する。

%admin     ALL=(ALL) ALL

の行を、

%admin     ALL=(ALL) NOPASSWD:ALL

に書き換える。

シングルユーザーモードにしなくても書き換える方法が分かってる人は別のやり方でもOK。

Mountain Lionをインストールしていて気付いたが、パスワードを設定した状態で visudo しておいて、後からアカウントのパスワードをリセットするほうが簡単(^^;。

sudoersについても、%adminの行を変更するより、

# %wheel  ALL=(ALL) NOPASSWD: ALL

の行をコメント解除するほうがいいかな。そして、ユーザーをwheelグループに追加する。→ユーザーをグループに追加する方法

ちょっとだけroot

そんなに頻繁にsudoするわけじゃない人は「AppleScript エディタ.app」を開いて、

do shell script "mkdir -p /usr/local/bin" with administrator privileges

のようにしてroot権限でコマンドを実行させればよい。ターミナルから、

$ osascript -e 'do shell script "mkdir -p /usr/local/bin" with administrator privileges'

でもいいけどね。

回避してないで、ちゃんとパスワードを設定しましょう(^^;

Mac OS X v10.5, 10.6:sudo コマンドには非ブランク管理パスワードが必要

2010-03-11

コマンドラインからZIP

情報セキュリティにうるさいIT企業の皆さんはパスワード保護されたzipファイルをメールで送るのがお好きなようだ。

パスワード保護(暗号化)されたzipファイルを作成

example_dirというディレクトリの中身を丸ごとexample.zipという暗号化zipファイルにまとめる場合、ターミナルから、

$ zip -e -r example.zip example_dir

のようにする。

zipファイルを伸張(展開、解凍)

Mac OS X標準のアーカイブユーティリティはパスワード付きのzipファイルを展開しようとするとエラーになるのでunzipコマンドを使う。

$ unzip example.zip

あるいはStuffIt Expanderなど他のユーティリティを使う。

まとめて解凍

たくさんのzipファイルをまとめて解凍するとき、

$ unzip *.zip

じゃなくて、

$ unzip \*.zip

のようにバックスラッシュを付けましょう。

2009-10-26

ResourceForkを除去する

フォルダ内の大量のファイルから一気にリソースフォークを削除する方法。

rsyncを使う

リソースデータを除去したいファイルがたんまり入ったフォルダの名前を「/path/to/src_folder」、除去後のファイルを格納するフォルダが「/path/to/dst_folder」であるとする。

$ rsync -av /path/to/src_folder/ /path/to/dst_folder/

のようにrsyncすることで、リソースフォーク部分を取り除いてデータフォークだけを目的のフォルダ内にコピーすることができる。(-E オプションを付けるとリソースフォークも一緒にコピーできる。あたりまえだが、今回は付けてはいけない。途中経過を気にしないのであれば、vオプションも省いてよい。)

なぜそんな必要が?

Webサーバーの引っ越しで、データを移し替えていたところ怪現象に遭遇。 MacではメジャーなFTPソフト、アヒル隊長こと「CyberDuck」で、サイト全体のデータファイルをダウンロードしたのだが、サーバー上では35.1MB程度のデータ量だったのが、ダウンロードしたフォルダの容量をチェックすると348.9MB?! ファイル数は代わらないが、なんと容量が10倍近くに膨れ上がっていた。 原因を調べるため、テキストファイルの一部について属性を見てみると、

$ ls -@l robots.txt
-rwxr-xr-x@ 1 poohtaro  staff  129  5 31  2007 robots.txt
       com.apple.FinderInfo    32 
       com.apple.ResourceFork 117265 

なぜかリソースフォークが……
どうやらリソースデータはカスタムアイコンのようだ。CyberDuckが付けたのか? しかも全てのファイルに? そりゃデータ量も10倍に肥大化するわな。なんという余計なお世話。

その数2,700もあるファイルのカスタムアイコンをいちいちFinderから手作業で取り除いていたら日が暮れるのでrsyncを使う方法を試してみたというわけ。

2009-10-08

Dockを終了する

killallでもいいんだけど

Mac OS XのDock(ドック)をリセットする方法として、よく、

$ killall Dock

というのを見かけるが、これって、ちょっと乱暴ではあるまいか。

$ osascript -e 'tell application "Dock" to quit'

としてはどうか。

Dockを初期状態に戻す

AppleScriptを使ってDockを初期状態に戻してみよう。※Dockに自分が独自に追加/削除したアプリケーションアイコンとかきれいさっぱり失われるので、そうしたくない人は間違っても実行しないこと。

tell application "Dock" to quit
do shell script "rm ~/Library/Preferences/com.apple.dock.plist"

LeopardのDockを2D表示に」も参照。

2009-07-19

言語を指定してアプリを起動

Mac OS Xで、言語環境の設定に関係なく指定したロケールに対応したUIでアプリケーションを起動する方法。

起動オプション -AppleLanguages を指定する。

例えば言語環境が日本語に設定されているとき、無理矢理英語のUIでSafariを起動するにはターミナルから、

$ /Applications/Safari.app/Contents/MacOS/Safari -AppleLanguages "(en)"

のようにする。

2009-07-03

仮想記憶をOFFにする

Mac OS Xで仮想記憶を切る方法

切る方法と見出しを付けといてなんだが、残念ながらMac OS Xでは仮想記憶を切ることはできない。旧Mac OS 9.xと違って、Virtual MemoryをOFFにはできないのだ。

スワップファイルを作らせない

仮想記憶自体を無効にはできないが、ディスクへのスワップは抑止できる。 Mac OS XはLinuxと違ってスワップ領域を通常のファイルシステム内のファイルとして作成する。 /var/vm/swapfile0のような名前でスワップファイルが作られていく。メモリを大量に使う処理を実行すると、swapfileの後ろの数字が増えてswapfile1, swapfile2という具合で、順にファイルが増えていく。 これが、お気に召さない方も多いようでdynamic_pagerという、スワップファイルの作成を担当しているプログラムを変更してswapfileが増えないようにしてしまえという強者もいらっしゃったりするが、Mac OS X 10.5 Leopardではそこまでしなくてもswapfileを作らせない方法がある。

dynamic_pagerを無効に

仮想メモリの一部を処理している、dynamic_pagerそのものを無効にする(起動しないようにする)のだ。スワップファイルが増えていくのがイヤだという人は次のようにすれば良い。

$ sudo /usr/libexec/PlistBuddy -x -c "Add :Disabled bool true" /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

と書いたが、

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

のようにlaunchctlコマンドを使うのがまっとうなやり方かな。

その後、再起動して/var/vm内のスワップファイルを削除すれば次から作られることはない。メモリが不足すると、すごく不幸な目にあうかもしれないので自己責任で。