ToDo:
一部のパッケージのエントリが壊れているようで、アップグレード時のdelete操作でエラーが出て消えない orz
色々試したが、どうにもならないっぽぃ…
流石に、pkgが管理してるデータベースの内部構造を調べて、エントリ単位の整合性検査・修復は面倒過ぎる
データベースを削除して、インストール済みのportsをすべて入れ直せば良いはずなのだが、コンパイル時間がネック
/usr/localを残したまま作業すると、依存性チェックによる依存portsのインストールが発動しないケースがでるはずなので、インストール順と一部のFLAVOR付きportsに注意が必要(py27/py36の共存系が…)
テスト始めたけど、bison依存のportsが壊れる
症状的には、一部の文法ファイル処理中にbisonがSEGVするので、構文解析器の生成をbisonに依存しているportsが壊れる
手元で判明している事例
あと、これらのportsに依存するportsもportmaster経由だと依存portsの自動更新で引っかかる 特に、default onなDOCSオプションでdoxygenに依存しているportsが多い
手元では、Ryzen 3800XとCore i7 4790Sで確認しれいるので、CPU依存では無さそう
また、12.2-STABLE環境で動いているbison packageを持ってきてもSEGVするので、カーネルかリンクされた共有ライブラリが怪しい
/usr/local/lib/libtextstyle.so.0の挙動の違いと特定
12.2-STABLE環境
% ldd /usr/local/lib/libtextstyle.so.0 /usr/local/lib/libtextstyle.so.0: libm.so.5 => /lib/libm.so.5 (0x800725000) libncurses.so.8 => /lib/libncurses.so.8 (0x800757000) libc.so.7 => /lib/libc.so.7 (0x80024e000)
13-STABLE環境
% ldd /usr/local/lib/libtextstyle.so.0 /usr/local/lib/libtextstyle.so.0: libm.so.5 => /lib/libm.so.5 (0x800720000) libncursesw.so.9 => /lib/libncursesw.so.9 (0x800753000) libc.so.7 => /lib/libc.so.7 (0x800263000)
なんかリンクされてる ncursesが違う?
12.2-STABLE環境
% ls -l /lib/libncurses* -r--r--r-- 1 root wheel 348400 2月 7 22:25 /lib/libncurses.so.8 -r--r--r-- 1 root wheel 385744 2月 7 22:25 /lib/libncursesw.so.8
13-STABLE環境
% ls -l /lib/libncurses* -r--r--r-- 1 root wheel 348400 2月 8 22:04 /lib/libncurses.so.8 -r--r--r-- 1 root wheel 385744 2月 8 22:04 /lib/libncursesw.so.8 -r--r--r-- 1 root wheel 459464 2月 8 23:20 /lib/libncursesw.so.9
so.8系は、upgrade前の12.2-STABLE環境からきてるぽぃ
/usr/local/lib/libtextstyle.so.0を含んでる devel/libtextstyleを更新してみるが、状況は変わらない
どうも、13-STABLEからsystemのncursesがwide character対応版のみになってるぽぃが、devel/libtextstyle側が対応できてない?
おそらく、ncursesのAPI非互換性
12.2-STABLEはncurses 5.xベース、13-STABLEはncurses 6.xベースで、ncurses自体に5.x->6.x間でAPI compatibility breakがある模様
手元の環境で、問題が起きるのは libtextstyleに依存している gettext-toolsとbisonのみ
devel/ncurses (ncurses 6.2)が入っているとbaseではなくports優先となるので、試してみた(devel/ncursesを入れてlibmap or libtextstyle rebuild)
devel/ncursesだと /usr/local/lib/libncursesw.soは libncurses.soへの symbolic linkの模様
devel/ncurses + devel/libtextstyle環境だと NGなので、ncursesの API compatibility breakが原因と確定
したがって、正道は
邪道は、
なんか、これでも動くので misc/compat12xをインストールして、 /usr/local/etc/libmap.d/libtextstyle.confに以下の設定追加するのが一番早いぽぃ
[/usr/local/lib/libtextstyle.so.0] libncursesw.so.9 libncurses.so.8
カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記