39 MacPorts で古い port をインストールする

MacPorts で port を更新した結果、うまく動かなくなった場合、 古い port の方を activate する、ということが出来る、 というのは以前にも書いた。


つい先日やったのは、ghostscript の更新があった後、 latex2html が動かなくなったので、一つ前に戻した、というもの。
$ port installed ghostscript
The following ports are currently installed:
  ....
  ghostscript @9.27_1+x11
  ghostscript @9.50_0+x11 (active)
$ sudo port activate [email protected]_1+x11
$ port installed ghostscript
The following ports are currently installed:
  ....
  ghostscript @9.27_1+x11 (active)
  ghostscript @9.50_0+x11

ところで、(何か問題が起こって) MacPorts をインストールし直す場合、 「MacPorts の更新」 の 4 (a) のようなことをしたりするが、 その場合 ghostscript は現在の最新版がインストールされる。 古いバージョンが activate されていても、 そのバージョンがインストールされるわけではない。 古いバージョンのファイルはディスク上に存在しないので、 それを activate することは出来ない。


おっとっと。これは困った。

仕方なく、 ”How to install an older version of a port” に書いてあることをやるハメに。 …とても分かりにくかった。メモを書いておく。

  1. 現在インストールされているバージョンを調べる (これはもう知っているが、 普通はここからスタートする、ということで)。
    $ port installed ghostscript
    The following ports are currently installed:
      ghostscript @9.50_0+x11 (active)
    
  2. リポジトリ The MacPorts ports tree を見る。 問題となっている print/ghostscript にアクセスして、 \fbox{History} ボタンを押すと。 “History for macports-ports/print/ghostscript” が読める。
    Image macports-port-ghostscript
    そこでバージョン 9.50 の前のコミット “Commits on Jun 27, 2019” を見つける。 18bbe41 という番号が意味深風だけれど、使わない。 \fbox{$<>$} というボタンを押して、 “GitHub - macports/macports-ports at 18bbe41545115d7928e7fb4507023b455e0073ae” (URL は https://github.com/macports/macports-ports/tree/18bbe41545115d7928e7fb4507023b455e0073ae) というページに飛ぶ。末尾の 18bbe41545115d7928e7fb4507023b455e0073ae が重要で (これはタイトルに書いてあるわけだが、 長いタイトルは見たりコピーが難しいので、 URL からコピーするのが良いだろう)、 次項でこれを使って checkout する。
  3. ターミナルで作業する。適当なディレクトリィに git clone して、 checkout し、そこでインストールする。
    $ mkdir ~/macrports
    $ cd ~/macrports
    $ git clone --single-branch https://github.com/macports/macports-ports.git
    $ cd macports-ports
    $ git checkout 18bbe41545115d7928e7fb4507023b455e0073ae
    $ cd print/ghostscript
    $ sudo port install
    

出来た。胸をなで下ろす。


感想: こんなことに詳しくなりたくない。

桂田 祐史
2020-04-20