升級 OS X 10.11(EI Capitan) 的用戶請注意

暈……寫完才被 @江疆 提醒,發現這篇文章是個不大不小的烏龍。以下是修改過後的文章。

因為我一直沒有升級 EI Capitan(實際上還停留在 Mavericks),所以這個問題一直沒注意到,直到 @汪照東 告訴我。

Apple 在 EI Capitan 中新增了所謂 rootless 的配置,並默認啟用。什麼叫做 rootless 呢?你可以這麼理解:即使用 sudo 調取系統 root 許可權,Apple 也不允許你把數據寫在 /usr/ 之類的根目錄下(唯一的例外是 /usr/local/ 目錄)。Apple 這個設計的目的,是保護在根目錄下儲存的系統文件的安全。

MacTeX 2014 及以前的版本默認在 /usr/texbin/ 目錄下寫入了所有 TeX 的二進位可執行文件,並將其添加進系統環境變數 PATH。然而,EI Capitan 禁止在除 /usr/local/ 之外的 /usr/ 目錄里寫入內容;於是,如果你是從 MacTeX 2014 及以前版本手工升級到 MacTeX 2015 的用戶,在從 Yosemite 升級到 EI Capitan 的過程中,/usr/texbin/ 目錄及其下所有內容,都被毫無聲息的刪除了。其後果,就是嘗試調用 TeX 編譯手稿時,系統會提示 command not found。安裝今年 6 月 9 日釋出的 MacTeX 2015 的用戶,也可能遇到這個問題。

如果你已經升級並遇到這個問題,或者決定升級,那麼可以有以下一些方式進行補救:其一,參考 TUG 的 文章,更新環境變數 PATH;其二,使用 tlmgr 重新生成二進位可執行文件的軟鏈接,並將其添加進環境變數 PATH 中(違背 TUG 推薦的方案,非高級用戶不推薦);其三,關閉 rootless 功能,在 /usr/texbin/ 目錄下重建軟鏈接(破壞 Apple 的安全策略,非高級用戶不推薦)。

方案一

重新下載安裝 MacTeX 2015;或將 /Library/TeX/texbin 加入環境變數 PATH 後,閱讀 文章 更新 GUI 程序的設置。

echo "export PATH=$PATH:/Library/TeX/texbin" >> ~/.bash_profilen

方案二

cd /path/to/texlive/2015/bin/x86_64-darwin/nsudo ./tlmgr option sys_bin /usr/local/texbinnsudo ./tlmgr path addnecho "export PATH=$PATH:/usr/local/texbin" >> ~/.bash_profilen

方案三

sudo nvram boot-args="rootless=0" && sudo rebootncd /path/to/texlive/2015/bin/x86_64-darwin/nsudo ./tlmgr option sys_bin /usr/texbinnsudo ./tlmgr path addn

推薦閱讀:

TAG:AllaboutTeXnique | 江疆 | 汪照东 | 文章 |