portsのダウングレード

FreeBSDのportsやpackageは基本的には最新版をインストールする、または最新版に更新すれば良いのだが、稀に最新版に致命的な問題があって古いバージョンに戻さなければならないとか、連携するアプリケーションの関係で最新版になったら困るということがある。
ところが、ports/packageを考えなしに更新すると最新版にしたくないports/packageも一緒に更新されてしまうことがある。
今回は間違って更新してしまったports/packageを戻したいバージョンにダウングレードする方法を実例で。

ports-mgmt/portdowngradeをインストールしていないなら次2行を実行。
# cd /usr/ports/ports-mgmt/portdowngrade
# make install

ダウングレードは普通のportsツリーから外れて指定したportsを置くので自分のホームディレクトリなどで実行する。

# cd ~
# portdowngrade textproc/kibana6

最初はダウングレードしたい「ports or pkgの名前」または「ジャンルdirとports or pkgの名前」を指定するだけ。 たいていの場合にズラズラ表示される筈。(次)

Choose a revision from this list and run /usr/local/sbin/portdowngrade textproc/kibana6 revision
------------------------------------------------------------------------
r495337 | meta | 2019-03-11 18:28:38 +0900 (Mon, 11 Mar 2019) | 21 lines

textproc/kibana6: Fix do-install again

The previous commit installs few files. Sorry for the breakage.

$ pkg info -l kibana6
kibana6-6.5.4_1:
    /usr/local/etc/kibana/kibana.yml.sample
    /usr/local/etc/rc.d/kibana
    /usr/local/share/licenses/kibana6-6.5.4_1/APACHE20
    /usr/local/share/licenses/kibana6-6.5.4_1/LICENSE
    /usr/local/share/licenses/kibana6-6.5.4_1/catalog.mk
    /usr/local/www/kibana6/bin/kibana
    /usr/local/www/kibana6/bin/kibana-keystore
    /usr/local/www/kibana6/bin/kibana-plugin
    /usr/local/www/kibana6/config
$

PR:             236243
Reported by:    tobik
Reviewed by:    tobik (via ports-committers@)

------------------------------------------------------------------------
r495328 | meta | 2019-03-11 17:08:28 +0900 (Mon, 11 Mar 2019) | 9 lines

textproc/kibana6: Fix do-install I broke in the previous commit

I meant WWWDIR_REL not WWWDIR here but the usage of @mode macro was wrong.
It does not take a file argument. Use COPYTREE_BIN instead to keep
executable permissions for binaries.

PR:             236243
Reported by:    tobik

------------------------------------------------------------------------
r495326 | meta | 2019-03-11 14:43:19 +0900 (Mon, 11 Mar 2019) | 9 lines

textproc/kibana6: Update to 6.5.4

While here,
- Quit using ${CHMOD} during do-install, handle permissions in pkg-plist

PR:             236243
Submitted by:   gettoknowmi <gettoknowmi@yahoo.com>
Reported by:    Yuta MASUMOTO <owata@owatan.jp> (plist issue)

------------------------------------------------------------------------
r484109 | feld | 2018-11-05 01:58:30 +0900 (Mon, 05 Nov 2018) | 2 lines

ElasticSearch6: Update to 6.4.2

------------------------------------------------------------------------
r477876 | feld | 2018-08-24 01:27:11 +0900 (Fri, 24 Aug 2018) | 4 lines

ElasticSearch: Update to 6.3.2

Differential Revision:  https://reviews.freebsd.org/D16597

rXXXXXで始まる行とその周辺を見て、ダウングレードした目的のバージョン/リビジョンを見つける。そのrXXXXXをメモする。(黄色の字の部分)
今回はElasticSearch6の6.4.2に対応した(同バージョンの)Kibana6にしたいので6.4.2というキーワードを探すとr484109がそれであることが判る。そこで2回目はバージョン/リビジョン付きで実行する。(下)

# portdowngrade textproc/kibana6 r484109
Checked out revision 484109.
You should be done-- now cd into kibana6 and you can run
# make deinstall install clean

Please note that portdowngrade no longer modifies the ports tree; the
checked out port is at
/root/kibana6

この例ではホームディレクトリにkibana6というディレクトリが作成されたのでそこに移ってから表示されているコマンド(黄色の字の部分)をコピーして実行する。(下)

# cd kibana6
# make deinstall install clean

これで現在インストールされているports/packageが削除されてダウングレードしたバージョンがインストールされる。 確認してみる。(下)

# portversion -vf | grep kibana
[Reading data from pkg(8) ... - 222 packages found - done]
kibana6-6.4.2               <  needs updating (port has 6.5.4_2) 

予定通り、低いバージョンになっている。 迂闊に更新してしまわないようロックしておく。(次のコマンド)

# pkg lock kibana6-6.4.2
kibana6-6.4.2: lock this package? [y/N]: y
Locking kibana6-6.4.2

これで、特定のports/packageをダウングレードして、ついでにロックできたので一安心。