macOS Sierra バージョンアップ

妻がノートパソコンを購入し,Trend Micro ウイルスバスター(ウイルス対策ソフト)もセットで入手した。ウイルスバスターは 3 台までインストール可能ということで,いつも使っている macOS にも導入することにした。

ところが最新版のウイルスバスターは macOS Yosemite 以降でなければインストールできないとのことで,いい加減思い切って,macOS Mavericks から Sierra にバージョンアップすることにした。OS そのものは Apple AppStore から導入オペレーションを行うと,勝手にアップグレードしてくれて造作無いのだが,バージョンアップ後アプリの調整がいくつか必要であった。忘れないうちに,メモを残しておくこととする。

先日,サーバが壊れ,新しいマシンに FreeBSD 11.1-RELEASE を入れサーバ環境をリニューアルしたばかりで,またぞろ Mac まで手を伸ばしてしまい,面倒なことこの上なく,やり始めてすぐ後悔の念に苛まれた。

Xcode 8.3.3

これは開発環境として必須。Apple AppStore から導入オペレーションを行って,簡単に終わる。

MPEG Streamclip 1.9.3b

Sierra にアップグレードしたら,ビデオデータ編集ソフト MPEG Streamclip において,QuickTime MPEG2 Component がないとのエラーが出て,変換操作ができなくなってしまった。Mavericks にこのソフトをインストールした時も同様の問題が発生したが,その時の対処をすっかり忘却してしまっており,またゴタゴタ調査しなければならなくなった。

結論だけ記しておく。以下を行うことで,QuickTime MPEG2 Component がインストールされ,MPEG Streamclip 変換処理が動作するようになる。

  1. MPEG Streamclip のサイト: SQUARED 5 MPEG STREAMCLIP FOR MAC AND WINDOWS から MPEG Streamclip パッケージ MPEG_Streamclip_1.9.3b.dmg を,tradownload.biz より QuickTimeMPEG2.dmg をそれぞれダウンロードし,開く。
  2. MPEG Streamclip のフォルダに,"Utility MPEG2 Component M. Lion.app" プログラムが添付されている。これを実行して,QuickTimeMPEG2.dmg を開く指示のところまでOKを押下する。
  3. QuickTimeMPEG2.dmg を開いたフォルダにある "For QuickTime 6.4 and later & Intel Macs" フォルダを開き,そこにある QuickTimeMPEG2.pkg を開く。
  4. "Utility MPEG2 Component M. Lion.app" の QuickTimeMPEG2.dmg を開く指示のOKボタンをクリックする。

GNU Emacs 25.2.1

Sierra にバージョンアップしたついでに,一番利用率の高い文房具 Emacs も Version 24 から 25 にアップグレードすることに。自作したキリル文字,ギリシア語文字のインプットメソッドが使えなくなってしまったので,再インストールしなければならなかった。

俺のサイトから Emacs スラヴ語/古典ギリシア語インプットメソッド slavonic-greek-im-1503.tar.gz を取ってきて,解凍し,sudo make -f Makefile.macosx install 一発できちんと動いた。

あとは .emacs の調整だが,これは Emacs 24 のもので何も修正は必要なかった。フォント設定など,参考までに上げておく。

;; -*- coding: utf-8; mode: emacs-lisp -*-
;; .emacs for margarita Emacs-25.2.1
 
;; 
;; 基本設定
;;
 
;;; home directry
(setq inhibit-splash-screen t)
(defun cd-to-homedir-all-buffers ()
  "Change every current directory of all buffers to the home directory."
  (mapc
   (lambda (buf) (set-buffer buf) (cd (expand-file-name "~"))) (buffer-list)))
(add-hook 'after-init-hook 'cd-to-homedir-all-buffers)
 
;;; ロードパスの追加
(let((default-directory (expand-file-name "~/elisp")))
  (add-to-list 'load-path default-directory)
  (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
      (normal-top-level-add-subdirs-to-load-path)))
 
;;; 実行パスの追加
(setq exec-path
      (append
       (list "/usr/local/bin" 
             "/opt/local/bin"
             ) exec-path))
(setenv "PATH"
        (concat '"/usr/local/bin:/opt/local/bin:" (getenv "PATH")))
;;; ツールバーなし
(tool-bar-mode 0)
;;; 行番号の表示
(line-number-mode t)
;;; カーソルの桁位置の表示
(column-number-mode t)
;;; blink しない
(blink-cursor-mode 0)
;;; 初期フレームの設定 
(setq default-frame-alist 
      '((width . 80)
        (height . 46)
        ))
;;; region を反転
(transient-mark-mode t)
;;; その場で式を評価する
(put 'eval-expression 'disabled nil)
;;; モードラインに日付・時刻表示
(setq display-time-day-and-date t
      display-time-24hr-format t)
(setq display-time-format "%m/%d(%a) %H:%M")
(display-time)
;;; tab 4
(setq default-tab-width 4)
;;; 強調
(global-font-lock-mode t)
;;; 対の括弧を明示
(show-paren-mode t)
;;; オープニングメッセージ表示しない
(setq inhibit-startup-message t)
;;; define keys
;;; home キーでバッファ先頭に
(global-set-key [M-up] 'beginning-of-buffer)
;;; end キーでバッファ末尾に
(global-set-key [M-down] 'end-of-buffer)
;;; delete キーで後文字削除
(global-unset-key [delete])
(global-set-key [delete] 'delete-char)
;;; カーソル位置のURLに対しブラウザ起動
(global-set-key "\C-c\C-b" 'browse-url-at-point)
;;; ! で対応する括弧に移動
(global-set-key "!" 'match-paren)
(defun match-paren (arg)
  "Go to the matching paren if on a paren; otherwise insert !."
  (interactive "p")
  (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
        ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
        (t (self-insert-command (or arg 1)))))
;;; ファイル先頭 #! のとき自動的に chmod +x
(add-hook 'after-save-hook
      'executable-make-buffer-file-executable-if-script-p)
;;; バックアップファイルは ~/tmp/edback に取得
(fset 'make-backup-file-name
      '(lambda (file)
     (concat (expand-file-name "~/tmp/edback/")
         (file-name-nondirectory file))
         ))
(if (file-exists-p "~/tmp/edback/")
    (setq auto-save-list-file-prefix "~/tmp/edback/"))
;;; .save.. ファイルを作らない
(setq auto-save-list-file-name nil)
(setq auto-save-list-file-prefix nil)
;;; フレーム設定
(set-background-color "white")
(set-cursor-color "#990033")
(set-mouse-color "#990033")
 
;;
;; 言語設定,デフォルト UTF-8
;;
 
(set-language-environment "Japanese")
;;; Coding system UTF-8
(set-default-coding-systems 'utf-8-unix)
(set-terminal-coding-system 'utf-8-unix)
(set-buffer-file-coding-system 'utf-8-unix)
(set-clipboard-coding-system 'utf-8-unix)
(prefer-coding-system 'utf-8-unix)
 
;;
;; Modes for programming languages
;; 
 
;;; C/C++, Java mode
(autoload 'c++-mode  "cc-mode" "C++ Editing Mode" t)
(autoload 'c-mode    "cc-mode" "C Editing Mode" t)
(autoload 'java-mode "cc-mode" "Java Editing Mode" t)
(setq c-tab-always-indent nil)
(setq c-default-style "bsd")
(setq c-block-comments-indent-p 3)
(setq c-basic-offset  4)
 
;;; perl mode
(autoload 'perl-mode "cperl-mode" "alternate mode for editing Perl programs" t)
(setq cperl-indent-level 4)
(setq cperl-continued-statement-offset 4)
(setq cperl-comment-column 40)
 
;;; PHP mode
(require 'php-mode)
(autoload 'php-mode "php-mode" "PHP editing mode" t)
 (add-hook 'php-mode-user-hook
          '(lambda ()
             (setq tab-width 4)
             (setq indent-tabs-mode t))
          )
 
;;; mmm mode
(require 'mmm-auto)
(setq mmm-global-mode 'maybe)
;;(set-face-background 'mmm-default-submode-face "navy")
 
(mmm-add-classes
 '((html-css
    :submode css-mode
    :front "<style[^>]*>"
    :back "</style>")))
(mmm-add-mode-ext-class nil "\\.html*" 'html-css)
 
(mmm-add-classes
 '((html-js
    :submode javascript-mode
    :front "<script[^>]*>"
    :back "</script>")))
(mmm-add-mode-ext-class nil "\\.html*" 'html-js)
 
;;; 設定した auto-mode-alist を活かす
(setq magic-mode-alist nil)
;;; mode 設定
(setq auto-mode-alist
      (append '(
        ("\\.C$"    . c++-mode)
        ("\\.cc$"   . c++-mode)
        ("\\.cpp$"  . c++-mode)
        ("\\.hh$"   . c++-mode)
        ("\\.c$"    . c-mode)
        ("\\.h$"    . c-mode)
        ("\\.m$"    . objc-mode)
        ("\\.java$" . java-mode)
        ("\\.pl$"   . cperl-mode)
        ("\\.perl$" . cperl-mode)
        ("\\.tex$"  . tex-mode)
        ("\\.sty$"  . tex-mode)
        ("\\.cls$"  . tex-mode)
        ("\\.clo$"  . tex-mode)
        ("\\.dtx$"  . tex-mode)
        ("\\.fdd$"  . tex-mode)
        ("\\.ins$"  . tex-mode)
        ("\\.s?html?$" . html-mode)
        ("\\.php$"  . php-mode)
        ("\\.jsp$"  . html-mode)
        ("\\.css$"  . css-mode)
        ("\\.js$"   . javascript-mode)
        ("\\.el$"   . emacs-lisp-mode)
        ("\\.txt$"  . text-mode)
        ) auto-mode-alist))
 
;;
;; UCS character utility
;;
 
;;; UCS コードポイントで文字を挿入
(global-set-key "\C-c\C-ui" 'ucs-insert)
;;; カーソル位置の文字の情報を表示 
(global-set-key "\C-c\C-ud" 'describe-char)
 
;;
;; フォントフェースの設定
;;
 
(load-file "~/elisp/fonts-mac.el")
 
;;
;; インプットメソッド関数定義
;;
 
(load-file
  "/Applications/Emacs.app/Contents/Resources/lisp/leim/leim-list.el")
;; インプットメソッドを格納してあれば以下を追加するのでも可
;;(register-input-method
;; "slavonic-generic" "Slavonic" 'quail-use-package
;; "СЛ" "Славянская клавиатура - Roman transcription (UNICODE)"
;; "quail/slavonic")
;;(register-input-method
;; "slavonic-church" "Church Slavonic" 'quail-use-package
;; "ЦС" "Славянская клавиатура - Roman transcription (UNICODE)"
;; "quail/slavonic")
;;(register-input-method
;; "greek-polytonic" "Greek-polytonic" 'quail-use-package
;; "ΠΓ" ""
;; "quail/greek-polytonic")
 
;;; Cyrillic generic ロシア語,ウクライナ語,古スラヴ語・教会スラヴ語
(defun set-slavonic-input ()
  "Slavonic general for Russian, Ukrainian, Old Slavonic, etc."
  (interactive)
  (set-input-method "slavonic-church"))
;;; Cyrillic phonetic キリル文字ローマ字音価入力
(defun set-cyrillic-input ()
  "Cyrillic yawerty, Quail original"
  (interactive)
  (set-input-method "cyrillic-yawerty"))
;;; Latin ラテン文字後置アクセント付け方式
(defun set-latin-input ()
  "Latin postfix for European such as French, German, etc."
  (interactive)
  (set-input-method "latin-postfix"))
;;; Greek Polytonic 複式アクセント付ギリシア語
(defun set-greek-input ()
  "Greek-polytonic for Classic and Modern Greek"
  (interactive)
  (set-input-method "greek-polytonic"))
;;; ファンクションキーでインプットメソッド選択
(global-set-key [f5] 'set-slavonic-input)
(global-set-key [f7] 'set-latin-input)
(global-set-key [f8] 'set-greek-input)
(global-set-key [C-f5] 'set-cyrillic-input)
 
;;
;; Aspell
;;
 
(load-file "~/elisp/aspell-new.el")
 
;;
;; Utf82Tex UTF-8 TeXコード変換支援
;;
 
(require 'utf82tex)
(setq utf82tex-path "/usr/local/bin/utf82tex")
(setq utf82tex-rc   "/usr/local/etc/utf82tex/utf82texrc")
(setq utf82tex-out-encoding 'utf-8)
 
;;
;; misima 旧字・旧仮名遣い変換 (local programme)
;;
 
(setenv "CHASENRC" "/opt/local/etc/chasen/chasenrc-ipadic-utf8")
(require 'misima)
(setq misima-path "/usr/local/bin/misima")
(setq misima-rc "/Users/isao/.misimarc")
 
;;
;; misima RESTful Web Service (remote server)
;;
 
(require 'misimaRESTful)
(setq misimaRestUri 
      "http://yasuda.homeip.net/misimaRest/misima/convert")
;;    "http://margarita.local:8080/misimaRest/misima/convert")
(setq misimaUcode "hogehoge")
 
;;
;; URL encoding for LaTeX
;;
 
(defun urlencode (start end)
  "URL encoding for LaTeX"
  (interactive "r")
  (call-process-region
   start end
   "/Users/isao/bin/urlencode" ;; absolute path for urlenc
   t (list t nil) nil
   "-l")
  )
 
;;
;; ルビ・マークアップ
;;
 
;; convertruby for HTML
(defun convert-ruby-html (start end)
  "Convert text to ruby HTML sequence."
  (interactive "r")
  (call-process-region
   start end
   "/Users/isao/bin/mkruby.pl"
   t (list t nil) nil
   "")
  )
;; convertruby for LaTeX
(defun convert-ruby-latex (start end)
  "Convert text to ruby HTML sequence."
  (interactive "r")
  (call-process-region
   start end
   "/Users/isao/bin/mkruby.pl"
   t (list t nil) nil
   "-l")
  )
 
;; end of initializing
;; -*- coding: utf-8; mode: emacs-lisp -*-
;; fonts-mac.el for margarita Emacs-25.2.1
 
;;
;; 文字コード調整
;;
 
;; charset priority
;; とくにキリル文字・ギリシア文字が日本語フォントで食われないため
(set-charset-priority
 'cyrillic-iso8859-5 'greek-iso8859-7 'hebrew-iso8859-8
 'latin-iso8859-1 'latin-iso8859-2 'thai-tis620
 'mule-unicode-0100-24ff
 'japanese-jisx0208 'japanese-jisx0212
 'japanese-jisx0213-1 'japanese-jisx0213-2 'japanese-jisx0213-a
 'japanese-jisx0213.2004-1 'mule-unicode-2500-33ff
 'korean-ksc5601 'chinese-gb2312 'chinese-big5-1 'chinese-big5-2
 'unicode
 )
 
;; char width (for Mew summary)
;;; iso 8859-5
(map-charset-chars
 (lambda
   (range ignore)
   (set-char-table-range char-width-table range 1))
 'cyrillic-iso8859-5)
;;; iso 8859-7
(map-charset-chars
 (lambda
   (range ignore)
   (set-char-table-range char-width-table range 1))
 'greek-iso8859-7)
 
;; Font face フォントフェースの設定
;; デフォルトフォント: DejaVu Sans Mono
(set-face-attribute 'default nil
                    :family "DejaVu Sans Mono"
                    :height 130)
;; Coding system 毎のフォントフェース
;; あとの指定が有効になるため,指定順序には注意が必要
;; 韓国語
(set-fontset-font
 (frame-parameter nil 'font)
 'korean-ksc5601
 '("AppleGothic" . "iso10646-1"))
;; 中国語簡体字 Hiragino Sans GB
(set-fontset-font
 (frame-parameter nil 'font)
 'chinese-gb2312
 '("Hiragino Sans GB W3" . "iso10646-1"))
;; 中国語繁体字 Heiti TC
(set-fontset-font
 (frame-parameter nil 'font)
 'chinese-big5-1
 '("Heiti TC" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'chinese-big5-2
 '("Heiti TC" . "iso10646-1"))
;; 日本語フォント: ヒラギノ角ゴシック ProN W3 
(set-fontset-font
 (frame-parameter nil 'font)
 'japanese-jisx0208
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'katakana-jisx0201
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'japanese-jisx0213-1
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'japanese-jisx0213-2
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'japanese-jisx0213-a
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
(set-fontset-font
 (frame-parameter nil 'font)
 'japanese-jisx0213.2004-1
 '("Hiragino Kaku Gothic ProN W3" . "iso10646-1"))
;; キリル文字フォント: DejaVu Sans Mono
(set-fontset-font
 (frame-parameter nil 'font)
 'cyrillic-iso8859-5
 '("DejaVu Sans Mono" . "iso10646-1"))
;; ギリシア文字フォント: DejaVu Sans Mono
(set-fontset-font
 (frame-parameter nil 'font)
 'greek-iso8859-7
 '("DejaVu Sans" . "iso10646-1"))
;; ヘブライ語文字フォント: Raanana
(set-fontset-font
 (frame-parameter nil 'font)
 'hebrew-iso8859-8
 '("DejaVu Sans" . "iso10646-1"))
;; Unicode フォント: DejaVu Sans
(set-fontset-font
 (frame-parameter nil 'font)
 'mule-unicode-0100-24ff
 '("DejaVu Sans" . "iso10646-1"))
;; タイ語文字フォント: Ayuthaya
(set-fontset-font
 (frame-parameter nil 'font)
 'thai-tis620
 '("Ayuthaya" . "iso10646-1"))

MacPorts

Mac 付属 perl のバージョンが上がったため諸処のパッケージが動かなくなり泡を食って MacPorts を再調整する羽目に。これが一番面倒であった。Migrating a MacPorts installation の "Migration procedure" に従って,MacPorts を再インストール・調整を行う。導入済みパッケージの削除と再インストールにかなりの時間を要し,ホント,ウンザリ。cpan コマンドで入れ込んでいた perl モジュールの再インストールも必要で,さらにゲンナリ。

茶筌 2.4.5

自作の旧字・旧仮名遣い変換プログラム misima が前提としている日本語形態素解析ソフトウェア・茶筌 perl モジュールを cpan でインストールするもリンクエラー。cpan -i Text::ChaSen ではライブラリのパスについて,/usr/local/lib を見に行ってくれないようだった。しようがなく,ソースからビルドすることに。darts-0.32chasen-2.4.5 アーカイブを茶筌サイトから取得してインストール。途中,darts のインクルードファイルが見つからない configure エラーが出たりと,これもすんなりとは行かず。

$ cd ~/tmp
$ tar ~/Downloads/darts-0.32.tar.gz
$ cd darts-0.32
$ ./configure; make; sudo make install
$ cd ~/tmp
$ tar ~/Downloads/chasen-2.4.5.tar.gz
$ cd chasen-2.4.5
$ env CC=clang CXX=clang++ CFLAGS="-O2 -Wall" \
 ./configure --with-darts=/usr/local/include
$ make; sudo make install
$ cd perl
$ vi Makefile.PL
'LIBS' => ['-lchasen'] を
'LIBS' => ['-L/usr/local/lib -lchasen'] に書き換え
$ perl Makefile.PL
$ make; sudo make install

茶筌が使用する辞書 UTF-8 版 ipadic については,バージョンアップ前に既にインストールされているものを使えばよかった。

もういい加減,再調整のために計算機に使われるのが耐えられない齢になった。