TeXとかhomebrewとか
以前、TeXを使おうと思ってMacに導入したんだけどうまく行かなかったという話をしたの、覚えてはりますかね。この記事なんですけども。
その問題は結局解決したんですが、どうやら1つのPCの中に何故かバージョンの違うTeXが2つあるという事が判明し、それを取り除くための作業を教えてもらいながら進めることにしました。最後の最後で本質的な問題っぽい事が発生したので、その対策でいろいろやった記録をメモとして残しておきたいと思います。
誰かの参考になれば……なるのかな?
その① Configuration file texmf.cnf not found! に遭遇した
そもそも、1つのPCに2つのTeXが存在していたという状態が事の発端だったわけです。
$ echo $PATH /usr/local/bin:/usr/local/texlive/2015/bin/うんぬん
これが僕のPCのPATHなのですが、どうやら /usr/local/bin にもTeXで用いるコマンドが入っていたらしく、そこから読み取っていたため発生したエラーだったわけです。本当はtexlive/2015/bin のとこに入っているので、本当はそっちから読み取ってほしいわけ。
これの対処法は簡単で、
$ echo $PATH /usr/local/texlive/2015/bin/うんぬん:/usr/local/bin
こうやってPATHを先に記述するだけで良かったらしい。
九条駅の例えは前回のあれでも言いましたが、もうちょっとわかりやすく言うと、
A「西大寺から出発して九条駅を探して欲しい」 B「わかりましたー」
というわけです。
ただ、Aさんは「①奈良線・阪神線、②橿原線、③京都線」の順番で探して欲しかったのに、Bさんは「①橿原線、②奈良線・阪神線、③京都線」の順番で探してたため、お互いが想定している駅が全く違い、その後の会話に齟齬が発生したというわけ。
A「駅前に阪神高速あるやろ?」 B「いや、溜池しかないけど」
みたいな。
まあとりあえず解決できて良かったです。
何日も悩んでいた割には、あっさりとした終わり方でした。
その② /usr/local/bin に紛れ込んだ TeXを削除する
TeX関連の問題は①ですべて解決してしまったんですが、やっぱり手元に別バージョンのモノが2つも存在しているのは気分の良い話ではないです。
①の方法を教えてもらった方に「どうせなら古いバージョンのTeX消しちゃいません?」と提案され、それならばと教えてもらいながら進めました。
まずはその方法について、簡単に記しておきます。
① /usr/local/ に存在しているものを、新たに作成したディレクトリに移動
mv /usr/local/[a-su-z]* /usr/local/*****/
*****は任意のディレクトリ名です。
texliveとか大文字のディレクトリが残っていればOKですよ。
② *****へ移動し、ファイルリストを作る。
find [a-su-z]* -type l -ls | awk '/ -> / && /\/Cellar\// { gsub(/ ->.*/, ""); gsub(/.* /,""); print}' > /tmp/brew-files
ぶっちゃけた話、これは何をしてるのかよくわからなかった。
こんなのよく思いつくなあという感じです。条件に該当するファイルを find して /tmp/brew-files に print していると言う感じでしょうか。ディレクトリごと移動したので、そこから必要な物だけ抽出するためのリストって感じでしょうね。
そして、その後
echo bin/brew >> /tmp/brew-files
その③ fatal: git-write-tree: error building treesに遭遇した
brew update を行うと、エラーが発生してupdate出来なくなりました。
これがとても困った困った。とりあえずエラー文貼ります。
share/doc/homebrew/brew.1.html: needs merge share/man/man1/brew.1: needs merge share/doc/homebrew/brew.1.html: needs merge share/man/man1/brew.1: needs merge share/doc/homebrew/brew.1.html: unmerged (148feeca33d802c37fb9a06f39d5765b36f8f368) share/doc/homebrew/brew.1.html: unmerged (eb15e764fc5a9cee86b91ba0acdb9425fef39a41) share/man/man1/brew.1: unmerged (aa8175eda907017362d98f99443c8bfb06aa12f2) share/man/man1/brew.1: unmerged (3e75ccb3f278bfcc98119ddae725b238566d899d) fatal: git-write-tree: error building trees Cannot save the current index state Error: Failure while executing: git stash save --include-untracked --quiet
なんとかしないとhomebrewが使えないのでとても面倒なことになってしまうわけです。ということでここを参考に解決を試みます。
っていうかぼくGit入れた覚え無いんだけどなあ。*1
$ cd /usr/local $ git add . $ git stash $ git reset --hard
これを順番通りに行っていくと、git stashを行った時点で
Permission denied (publickey).
やら
HEAD is now at 128f031 pandoc: disable aesni on <= 10.7
というエラーが。
Permisson denied と言われても、そもそも拒否られるような事した覚えがないし、許可した覚えもない。GitHubに公開鍵登録したら解決するらしいんだけど、じゃあ今までそんなことしてなかったのになんで今更?という思いのほうが強くなるばかり。
あ、ここ参考にしました。sbkro.hatenablog.jp
うん、まあ素直に登録しときゃあ良いのかもしれないけど、今まで brew update 出来ていたのに何故突然?という気持ちのほうが強かったし、GitHubを意図的に使ったことはなく*2、あまりこれ以上手を広げて事態をややこしくしたくなかったというのが本音。
Head is...の方なんて、調べると英語のサイトしか出て来ないし、うわあ英語サイトかあ、でもまあ仕方ないかあと思って開いてもどこにも見当たらない*3。もう一度、ダメ元で brew update をしても堂々巡りである。
その③ HEAD is now at 128f031 pandoc: disable aesni on <= 10.7
正直な所、詰んでいる。
Gitをインストールしなおせば良いのかな?と思って実行してみたが、Git が最新バージョンになっただけでエラーは変わらず。となるとやるべき手段は homebrew の再インストールである。むかし、ruby を齧ってみようと思ってその環境を整えるために導入したのが確かhomebrewだったので、そのサイトをもう一度読みながらインストールすることにした。ちなみにrubyは齧ったまましばらくほったらかしである。
消す前に「ここ消えるけど良いの?」と言われたところだけバックアップしておき、一度アンインストール。その後インストール。ここはまあ割と簡単に終わった。ちなみにバックアップしたのは /usr/local/Cellar と /usr/local/Library だったと思う。
インストールが終わった後、これらのディレクトリを無理やりコピペして上書きした。
そのあと、
brew doctor
をすると幾つかがlinkされてなかったので、
brew link rbenv
みたいな感じでlinkされて無かったのをlinkしました。最後にbrew doctorをすると、「異常はないよ」と言ってきたのでこれでなんとかなったっぽいです。ここまでで1週間と何日かかかりました。とりあえず、同じような状況で困っている人がいたら参考にしてみてください。参考になるかは分からないけど。
ほかに何か思い出したら追記しておきます。
あと後半はちょっと雑なのでまた体裁は整え直します。