FreeBSD - メンテナンス・トラブルシュート - pkg・ports アップデート関連 - glib-2.50.3_5,1 → 2.56.1_1,1

 
1. 概要
2. glib を個別にインストール
3. /etc/make.conf を一時的に編集

1. 概要

 発生は 2018年10月1日。  複数件のアップデートが発生していたのですが、最終的に残ったのが以下の項目です。

> pkg version -vl "?"
atk-2.24.0                         <   needs updating (index has 2.28.1)
glib-2.50.3_5,1                    <   needs updating (index has 2.56.1_1,1)
gobject-introspection-1.50.0_1,1   <   needs updating (index has 1.56.1,1)
 上記3件とも同様の状況なのですが

> portupgrade -Rr glib
[Gathering depends for devel/glib20 ......................... done]
[Gathering depends for devel/gobject-introspection ............................................ done]
[Gathering depends for accessibility/atk .......... done]
[Gathering depends for misc/shared-mime-info ............. done]
[Gathering depends for multimedia/gstreamer ........ done]
[Exclude up-to-date packages .................................................................. done]
--->  Upgrading 'glib-2.50.3_5,1' to 'glib-2.56.1_1,1' (devel/glib20)
--->  Building '/usr/ports/devel/glib20'

・・・	略	・・・

Installed packages to be REMOVED:
        glib-2.50.3_5,1

Number of packages to be removed: 1

The operation will free 19 MiB.
[1/1] Deinstalling glib-2.50.3_5,1...
[1/1] Deleting files for glib-2.50.3_5,1: 100%
[Reading data from pkg(8) ... - 356 packages found - done]
--->  Installing the new version via the port
===>  Installing for glib-2.56.1_1,1
===>   Registering installation for glib-2.56.1_1,1 as automatic
pkg-static: Unable to access file /usr/ports/devel/glib20/work/stage/usr/local/share/glib-2.0/codegen/__pycache__/__init__.opt-1.cpython-36.pyc:No such file or directory

・・・	略	・・・

pkg-static: Unable to access file /usr/ports/devel/glib20/work/stage/usr/local/share/glib-2.0/codegen/__pycache__/utils.opt-1.cpython-36.pyc:No such file or directory
*** Error code 74

Stop.
make[2]: stopped in /usr/ports/devel/glib20
*** Error code 1

Stop.
make[1]: stopped in /usr/ports/devel/glib20
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/glib20
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20181001-31777-kxvwem env UPGRADE_TOOL=portupgrade UPGRADE_PORT=glib-2.50.3_5,1 UPGRADE_PORT_VER=2.50.3_5,1 make -DINSTALLS_DEPENDS reinstall
--->  Restoring the old version
Installing glib-2.50.3_5,1...
Extracting glib-2.50.3_5,1: 100%
スキーマファイルが見つかりません: 何もしません。
** Fix the installation problem and try again.
--->  Skipping 'devel/gobject-introspection' (gobject-introspection-1.50.0_1,1) because a requisite package 'glib-2.50.3_5,1' (devel/glib20) failed (specify -k to force)
--->  Skipping 'accessibility/atk' (atk-2.24.0) because a requisite package 'glib-2.50.3_5,1' (devel/glib20) failed (specify -k to force)
** Listing the failed packages (-:ignored / *:skipped / !:failed)
        ! devel/glib20 (glib-2.50.3_5,1)        (install error)
        * devel/gobject-introspection (gobject-introspection-1.50.0_1,1)
        * accessibility/atk (atk-2.24.0)
 glib 以外の2件は、glib の影響のように思われます。

2. glib を個別にインストール

 こういうケースではよくやる手ですが、glib を個別にインストールしなおしてみます。

cd /usr/ports/devel/glib20
make deinstall clean
make
make install
 ところが make install の時点で

> make install
===>  Installing for glib-2.56.1_1,1
===>  Checking if glib already installed
===>   Registering installation for glib-2.56.1_1,1
pkg-static: Unable to access file /usr/ports/devel/glib20/work/stage/usr/local/share/glib-2.0/codegen/__pycache__/__init__.opt-1.cpython-36.pyc:No such file or directory

・・・	略	・・・

pkg-static: Unable to access file /usr/ports/devel/glib20/work/stage/usr/local/share/glib-2.0/codegen/__pycache__/utils.opt-1.cpython-36.pyc:No such file or directory
*** Error code 74

Stop.
make[1]: stopped in /usr/ports/devel/glib20
*** Error code 1

Stop.
make: stopped in /usr/ports/devel/glib20
 ここで「cpython-36」に着目。  他のメッセージも合わせて、どうも、glib20 は python3.6 に対応していないようです。

3. /etc/make.conf を一時的に編集

 しょうがないんで

/etc/make.conf
 を一時的に編集します。

DEFAULT_VERSIONS+=python=3.6 pythonr3=3.6
 の行の先頭に # をつけて一時的に無効にして

cd /usr/ports/devel/glib20
make deinstall clean
make
make install
 これで、glib20 がうまくインストールできましたので /etc/make.conf で一時的に無効にしていた python3.6 のコメントを元に戻します。  後は、すんなりアップグレードできるようになりました。