某月某日、子羊が来た。 訴えは GLSC3D のインストールがうまく行かない、だったけれど、 原因というか本当の問題は、 MacPorts のアップデートに失敗していた、ということだった。
この機会に MacPorts 関係のことをまとめておくべきと考え、 少し書いてみた (書いてみたら結構ぐちゃぐちゃだ)。
MacPorts の入手
MacPorts Project が総本山。 英語がすらすら読めるならば、それで十分 (かもしれない…)。
Installing MacPorts から、 自分の Mac の macOS のバージョンに適合した MacPorts を選んでダウンロードする。 例えば、HighSierra の場合、 MacPorts-2.4.3-10.13-HighSierra.pkg というパッケージをダウンロードすることになる。
MacPorts の情報
やはり、 MacPorts Project にある Guide (documentation) が一番信頼がおける。
Xcode のインストール
MacPorts をインストールするには、 Xcode のコマンドライン・ツール (command line tools) が必要である。 現象数理学科 Mac にはインストールされているはずであるが、 macOS のアップグレードをして古くなっていたり、 削除されてしまっている学生が少なくない。 そういう場合は、Xcode の更新 (再インストール) が必要になる。
(蛇足: Xcode をインストールするだけでは、 command line tools はインストールされないし、 Xcode をインストールせずに、 command line tools だけをインストールすることも可能である。 command line tools だけをインストールした状態で、 MacPorts を使い出すと、頻繁に警告が出るけれど、 一応使えているようにも見える。 そういう意味では、Xcode をインストールすることは、 必要条件でも十分条件でもないのかも。)
xcode-select --install |
MacPorts のインストーラー (pkg ファイル) を実行すると、 (ターミナルで使う) シェルの設定ファイルが書き換えられて、 PATH に /opt/local/bin が追加される。 自動的にやってくれるわけであるが、 正しく設定されたかをチェックする必要があるかもしれない。 ターミナルで
which port(port で実行されるコマンドはどれ?) |
注意: 設定ファイルを書き換えても、すでに起動済みのシェルに反映されない。 シェルを新しく起動するか (ターミナルを起動し直せばシェルも新しく起動される)、 source コマンドで設定ファイルを再実行すると良い。 例えば、 多くの人は ~/.profile が設定ファイルになっている。 その場合は
source ~/.profile |
MacPorts の更新
MacPorts とその ports の更新は、日常的には、ターミナルから
更新のおまじない |
sudo port selfupdate sudo port upgrade outdated |
しかし、macOS をアップグレードしたときは、 (学生にありがちなのは、macOS 自体は自分でアップグレードするが、 Xcode や MacPorts のアップデートはしないので、 使えない状態になっている、というパターン)、 上のやり方ではうまく行かない。
MacPorts とそれでインストールした ports を更新するための手順は、 MacPorts のサイトの “Migrating a MacPorts installation” で説明されてある。
注意: 単純に新しいものを上書きインストールするのでは、 うまく行かない場合がある、ということである。
どうすべきか、次の2つの選択肢がある。
私のオススメは (i) である (トラブルが生じにくい)。 しかし、(i) を知らずに、 新しいものを上書きインストールしてハマっている人がいて (自分もそうしたことがある)、 そういう場合は (ii) に近いことをする必要があるであろう。
以下では (ii) について説明する。
MacPorts のアンインストール
“Migrating a MacPorts installation” の 2.4. Uninstall によると、
MacPorts をアンインストールする手順 |
sudo port -fp uninstall installed sudo rm -rf \ /opt/local \ /Applications/DarwinPorts \ /Applications/MacPorts \ /Library/LaunchDaemons/org.macports.* \ /Library/Receipts/DarwinPorts*.pkg \ /Library/Receipts/MacPorts*.pkg \ /Library/StartupItems/DarwinPortsStartup \ /Library/Tcl/darwinports1.0 \ /Library/Tcl/macports1.0 \ ~/.macports(まず ports を削除して、それから MacPorts 自身を削除する。) |
(2018/9/13) 本当にそんなにあちこちにあるのだろうか?最近は
sudo rm -rf /opt/local /Applications/MacPorts /Library/Tcl/macports1.0 |
注意すべきは、MacPorts が古くなっていると、 最初の port コマンドが動かないことである。 それをさぼって rm するだけだと、ゴミが残る可能性がある。
sudo port -fp uninstall installed を実行するためには、
今の場合、(1) が無理な場合が多く、そのときは (2) をすることになるだろう。
書いていて「大変だなあ」と思うが、 やっていること (数多くの ports -- ソフトウェアを一斉に更新する) を考えると、仕方がないであろう。
私がインストールしているパッケージ
sudo port install lha sudo port install a2ps-j sudo port install nkf sudo port install jpeg2ps sudo port install lv sudo port install gsed sudo port install wget sudo port install gnupg2 sudo port install gv sudo port install ghostscript-fonts-hiragino sudo port install xpdf-japanese +autoactivate sudo port install kochi-substitute sudo port install netpbm sudo port install gnuplot sudo port install ImageMagick sudo port install ffmpeg +nonfree |
gsed はときどき必要になる GNU の sed、 wget は WWW サイト等からファイルをダウンロードするコマンド、 a2ps-j は日本語テキスト・ファイルを PostScript に変換するコマンド (utashiro a2ps)、 nkf (Network Kanji Filter) は文字コード変換コマンド、 lv はテキスト・ファイルのビューアー (less の上位互換)、 gnupg2 は GNU privacy guard (暗号化ソフトウェア), gv は PostScript ファイルのビューアー (Ghostscript のインターフェイス)、 ghostscript-fonts-hiragino は Ghostscript で Mac に付属しているヒラギノ・フォントを使う設定 (これをするには、 /opt/local/share/fonts/otf/Hiragino にフォントが必要 -- § 参照)、 xpdf は PDF のビューアー (周辺ソフトが便利)、 kochi-substitute は日本語フォント (例えば xpdf で使える)、 netpbm は画像イメージ・ファイルを扱うライブラリィ、 ImageMagick は画像イメージ・ファイルを扱うコマンド集 (convert とか display とか identity)、 gnuplot は(ご存知?)グラフ描き用のコマンド、 ffmpeg は動画ファイル・音声ファイルを扱うコマンド。
以前は上のコマンドを複数行まとめてコピー&ペーストして実行していたが、 最近は途中で色々尋ねられてしまい、うまく動かない。 1行ずつコピー&ペーストして実行するべき?? その方が安全・確実かもしれないが、 次のように -N というオプションをつけると、 尋ねられないはず (今度やってみよう)。
(一度 sudo を実行して、パスワード入力を済ませておくと、
以下がスムーズに進められる。)
sudo port -N install gsed sudo port -N install wget sudo port -N install lha sudo port -N install a2ps-j sudo port -N install nkf sudo port -N install lv sudo port -N install jpeg2ps sudo port -N install gnupg2 sudo port -N install gv sudo port -N install ghostscript-fonts-hiragino sudo port -N install xpdf-japanese +autoactivate sudo port -N install kochi-substitute sudo port -N install netpbm sudo port -N install gnuplot sudo port -N install ImageMagick sudo port -N install ffmpeg +nonfree |
ghostscript-fonts-hiragino では、 /opt/local/share/fonts/otf/Hiragino に次のようなファイルがあると仮定している?
Hiragino Sans GB W3.otf Hiragino Sans GB W6.otf ヒラギノ明朝 Pro W3.otf ヒラギノ明朝 Pro W6.otf ヒラギノ明朝 ProN W3.otf ヒラギノ明朝 ProN W6.otf ヒラギノ角ゴ Pro W3.otf ヒラギノ丸ゴ Pro W4.otf ヒラギノ角ゴ Pro W6.otf ヒラギノ角ゴ ProN W3.otf ヒラギノ丸ゴ ProN W4.otf ヒラギノ角ゴ ProN W6.otf ヒラギノ角ゴ Std W8.otf ヒラギノ角ゴ StdN W8.otf |
(2018/09/19) あれ、また表示できなくなっている。 バージョンを戻す (こういうことをして大丈夫なのか、理解できていない)。
sudo port activate ghostscript @9.23_3+x11 |
ソースプログラムが自動で入手出来ないとき 最近は滅多に起こらないが、 ソフトウェアのソースプログラムの配布ファイルを自動的に入手出来ない場合がある。 そういうとき、マニュアルで入手した配布ファイルを /opt/local/var/macports/distfiles/パッケージ名 に置いてやれば良い。
たまに使うコマンド
どのポートがインストールされているか表示するには
port installed |
古くなって使っていないポートを掃除する。
sudo port -uf uninstall leaves sudo port -p uninstall inactive sudo port -p clean --all all |
桂田 祐史