昨日の記事ブートディスクのバックアップに書かなかった小さな問題についての話です。実は ChronoSync で複製したブート可能なパーティションからブートしたら、動作が異様に遅かったのです。ちょっと調べたところ、動的リンクライブラリの環境が壊れているためにキャッシュへのアクセスに失敗しているようでした。たとえば、ターミナルを起動すると起動するコマンドごとに以下のエラーが出力されます。
dyld: shared cached file was build against a different libSystem.dylib, ignoring cache
対応は簡単で、動的リンクライブラリのキャッシュを消去するために以下のコマンドを実行するだけです。
sudo update_dyld_shared_cache
数秒でキャッシュが消去され、そのあとからは快調に動作します。パーティションの複製を作成するごとにこのエラーが出るようならば、ブートするときに上のエラーが出るかどうかを確認の上、必要ならばキャッシュを消去するスクリプトを用意した方がいいかもしれません。
もっと賢いのは、パーティションの複製を作成するときに動的リンクライブラリのキャッシュを作成しないことなのですが、それってどうやって調べればいいんでしょ?dyld のマニュアルには ”DYLD_SHARED_CACHE_DIR” という環境変数があるようですけれども、これってどこで設定されているの?