世はゴールデンウィークまっただ中である.完全な10連休ではないが,それなりに長い休みとなるので,この機会に,ようやく Sierraから Mojave にupgradeすることにした.ついでにEmacsも26.1から 26.2にupgradeした.今回は,このupgradeの際に遭遇したトラブルについてまとめる.
Upgrade to Mojave from Sierra
Ref: macOS Mojave にアップグレードする方法
結論から言うと,拍子抜けするぐらい簡単であった.AppStoreで適当にクリックするとすぐにMojaveがダウンロードされて,インストーラーが起動した.これをクリックしてインストールを始めると,此処から先は完全自動状態で,ひたすら待った.というか,違うことをしていた.何回も再起動していたようだが,実際には1時間ぐらいで終了したような気がする.手間いらずであった.R, Rstudio, ImageJ, Emacs, LaTeXが動いて画像編集,動画編集ができれば,とりあえず文句はないので,まずそのあたりをチェックしてみると,R, Rstudio, ImageJ, 画像編集,動画編集は問題なく動いた.EmacsとLaTeXについては以下に述べる.
Upgrade to Xcode 10.2.1
早速brewでemacsをupgradeしようとしたのだが,xcodeが古いと叱られたので,まず,xcodeをApp Storeからupgradeした.そして brew install すると以下のようなエラーが出る.
$ brew install hogehoge
.........
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
これは,「macOS を Mojave にあげた後に Homebrew を使うとエラーが出る問題」にあるようにcommand line developer toolsを再インストールすれば直る.同サイトに詳細が記載されている.
xcode-select --install
さぁ,これでようやくと思って,再度 brew install すると,またもエラーである…..(ToT)
$ brew install hogehoge
..........
Error: parent directory is world writable but not sticky
Please report this bug:
https://docs.brew.sh/Troubleshooting
調べてみるとpermissionの問題で,tmp directoryの状態を調べれば良いことがわかった.
Ref 1: brew で `Error: parent directory is world writable but not sticky`
Ref 2: Error: parent directory is world writable but not sticky
上記サイトの記載に従って,ls -ld /tmpを行うと以下のようになる.
$ ls -ld /tmp
lrwxr-xr-x@ 1 root wheel 11 4 27 18:45 /tmp@ -> private/tmp
これは,tmp directoryはprivate/tmpを使用しているということであり,以下のようにしてpermissionを付与する.
$ sudo chmod +t /private/tmp
私の場合はこれでbrewが働くようになった.これらの操作は,今後のmajor upgradeの際にはまた必要になりそうなので,ここにまとめておく.
Upgrade to Emacs 26.2 from 26.1
ようやくEmacsのupgradeである.mojaveにupgradeした直後にemacs26.1を起動してみるとキーが効かなかったような気がするが,26.2にupgradeするので,気にせず先に進んだ…..(^^;;; 以前の記事(Emacsのインストール)に書いたようにhomebrewでemacs-macを入れればよいのだが,念の為に単なるupgradeは避けて,Emacs 26.1をuninstallし,~/.emac.dも退避させてから,インストールし直すことにした.Emacs Mac Portの最終更新はわずか2週間前でありいろいろな問題が解決されていると期待してのupgradeである.
$ cd
$ mv .emacs.d .emac.d.old # change name of old .emacs.d
$ brew tap railwaycat/emacsmacport
$ brew uninstall emacs-mac # uninstall old emacs-mac
$ brew install emacs-mac --with-modern-icon --with-imagemagick # install new emacs-mac
$ ln -s /usr/local/opt/emacs-mac/Emacs.app /Applications
これで,
/usr/local/Cellar/emacs-mac/emacs-26.1-z-mac-7.1 (4,009 files, 114.6MB)
から
/usr/local/Cellar/emacs-mac/emacs-26.2-z-mac-7.6 (4,010 files, 114.8MB)
へのupgradeが終了した.
あとは,以前に書いた以下の記事に従ってセットアップした.
Emacsの設定(その1)Preludeの導入(2018年10月9日修正)
Emacsの設定(その2)設定ファイル(init.el)をorg-modeで管理する
Emacsの設定(その3)ようやくinit.orgの記述: 日本語の設定,inline-patchの設定など
LaTeX
これについては,以前の記事「LaTeXをインストールし,texファイルが変更されると,自動的にcompileしてskimでのpdfも自動で更新されるようにする(2018年9月1日追記)」で書いたとおり MacTeX 2018 のままである.正確に言うと,mojaveにupgradeする直前に以下のようにして最新版にアップデートしておいた.
$ sudo tlmgr update --self --all
400個ぐらいのパッケージのアップデートに30-40分を要した.
ヒラギノフォントの埋め込み についても上述の記事に書いたように,既に,bibunsho7-patchを適応済みなので,問題ないと考えた.
mojaveにupgradeしてから,latexmkによるcompileやorg-modeからのlatex exportなどを試してみたが,pdfの生成に特に問題なく,また,pdfへのヒラギノフォントの埋め込みも問題なくできていた.
pdfにフォントが埋め込まれているかどうかを確認する方法
-
Ref: PDFのフォント埋め込み
-
以下のようにhomebrewでpopplerをインストールすれば,その中の pdffonts というコマンドを使って確認することができる.このpopplerは以前の記事(Emacsでpdfを読む (pdf-tools))で既にインストールしているが,もう一度書いておく.
$ brew install poppler
-
たとえば,latexで生成したhogehoge.pdfのフォントの埋め込みを調べるためには,pdffontsを以下のように使う. emb の項目で埋め込みの有無がわかる.
$ pdffonts hogehoge.pdf name type encoding emb sub ------------------------------------ ----------------- ---------------- --- --- KQKHHV+LMSans10-Bold Type 1C Custom yes yes JQHYHW+LMRoman17-Regular Type 1C Custom yes yes FENZQQ+HiraMinProN-W3-Identity-H CID Type 0C Identity-H yes yes ZHPQAJ+LMRoman12-Regular Type 1C Custom yes yes BMLTDB+HiraKakuProN-W6-Identity-H CID Type 0C Identity-H yes yes NOWECW+LMRoman12-Regular Type 1C Custom yes yes SIHLPZ+LMRoman8-Regular Type 1C Custom yes yes
-
確かに,すべてのフォントは emb = yes になっており,埋め込まれているのが確認できた.
感想
ネットでは,いろいろ問題ありとの情報が多く様子見をしていたのだが,待ってる間に色々と解決した部分も多いのか,ほとんど大きなトラブルもなくアップグレードできた.なお, Time Machine によるバックアップも問題なくできている.「案ずるより産むが易し」であった.