2018/02/17

北海道&東日本パス北海道線特急オプション券

2018年春季限定で「北海道&東日本パス」に「北海道&東日本パス北海道線特急オプション券」という切符が別売りになるそうです。「「北海道&東日本パス北海道線特急オプション券」の使いこなしを考える」という記事で存在を知りました。

記事にも書かれていますが、発売される名目は「北海道命名150年を記念」ということになっています。今のところ利用できるのは2018年春季限定ですが、評判が良ければ将来的には継続されるかもしれません。

「青春18きっぷ」にしろ「北海道&東日本パス」にしろ、北海道内を普通列車だけで廻るのは、スケジュール的に厳しくなっています。北海道新幹線開業により急行はまなすが廃止になったのも、痛手です。しかも函館方面から札幌に向かうには、長万部で長時間待たなければなりません。逆方向も同様です。このため道東の帯広方面や道北の稚内方面に向かうのは、都市間パスを使うなどの方法を併用しないと、困難です。

北海道新幹線が開業した時に、青春18きっぷと併用するための「青春18きっぷ北海道新幹線オプション券」が登場したのと似たような発想ではないかと思います。出来れば2018年春季限定と言わず、継続的に利用できることを願います。

2018/02/13

pkg_rolling-replace -rusv完了

2018年2月5日の朝から始めたpkg_rolling-replaceが2018年2月13日の夜に終わりました。途中でエラーが出て、対処方法を考えていたりしたので、連続して動かしていたわけではありませんが、何のかんのと、ほぼ一週間かかったことになります。

# date
Tue Feb 13 18:53:30 JST 2018
# pkg_rolling-replace -rusv ; date
RR> Checking for mismatched installed packages using pkg_chk
RR> Excluding the following mismatched packages:
rr> EXCLUDE=[]
RR> Checking for rebuild-requested installed packages (rebuild=YES)
RR> Checking for unsafe installed packages (unsafe_depends_strict=YES)
RR> Packages to rebuild:
rr> MISMATCH_TODO=[]
rr> REBUILD_TODO=[]
rr> UNSAFE_TODO=[]
RR> No more packages to replace; done.
Tue Feb 13 19:14:22 JST 2018
pkg_info -aの出力が468行ですから、それだけのパッケージが入っていることになります。これらを全て更新しているわけではありませんが、それでも相当数のパッケージが更新されたと思います。

エラーもなく順調に処理が進めば有り難いのですが、そういう訳にも行かず、途中で何度も止まりました。失敗した原因を探り、対処方法を考えつつ、先に進む必要がありました。典型的な失敗と、その対応は、次の通りです。

  1. ビルド中にディスクが溢れてしまうことが、よくありました。dynabook SS SX/15Aの内蔵HDDは60Gしかありません。パーティションを切っているので/usrに割り当てているのは20Gほどで、しかも約10Gは使用済みです。そうなるとビルド中にdisk fullになることも多々ありました。これはpkgsrcの各パッケージにあるworkディレクトリを消すとか、余分なファイルを見つけて消すなど、地道な方法しかありません。
  2. パッケージのバージョンが更新されると自動的に追従して更新してくれるのが基本です。しかし依存関係にあるパッケージによっては、バージョンの不整合が起きてしまうことがありました。このような場合はpkg_rolling-replaceを使わずに、問題のパッケージのディレクトリで個々にmakeするしかありません。
  3. 上述した状況では旧いパッケージをpkg_deleteで消すことになりますが、さらに依存パッケージが残っていると消せなくなります。そこで-fオプションを指定して無理矢理消してしまおうとするのですが、こういうことを繰り返していくと、次第にパッケージを管理している情報がおかしくなっていくようです。その結果「pkg_info: cannot read meta data file +CONTENTS of package mono-2.10.9nb18: No such file or directory」のようなエラーが出てきたりします。こうなったらpkg_adminrebuildrebuild-treeをしておくと良いようです。
  4. エラーメッセージを見ても、何のことやら手も足も出ないことがあります。monoがそうでした。そういう場合は、ビルド済みのパッケージを探してきてインストールしました。自前でビルドするのは諦めます。
  5. ビルド済みのパッケージが見つからないこともありました。mozcがそうでした。このような場合は、上手くビルド出来そうなバージョンに戻ることが必要です。

mozc 2.17.2313.102nb7を入れて対処した

NetBSD/i386でpkgsrcにあるmozc関連パッケージがビルドできない問題は、バージョンを落とすことで解決を図りました。

今回の一連のビルドで使用したpkgsrcはCVSで取得したcurrent版です。stable版ではないので安定性に欠ける恐れがあるのは否めません。調べてみたところpkgsrc-2017Q3.tar.gzにはビルドできるmozcが入っていました。2017Q4では新しいバージョンになってしまうようです。

ひとまず旧いmozcを入れておくことにします。そのうち新しいバージョンでもビルド出来るようになるでしょう。
ibus-mozc-2.17.2313.102nb2 Japanese inputmethod Mozc engine for IBus
mozc-server-2.17.2313.102nb7 Japanese inputmethod Mozc engine for IBus
mozc-renderer-2.17.2313.102nb7 Japanese inputmethod Mozc engine for IBus
mozc-tool-2.17.2313.102nb7 Japanese inputmethod Mozc engine for IBus

2018/02/12

mozc-tool-2.20.2673.102.tgzが見当たらない

dynabook SS SX/15Aに入れたNetBSD/i386のpkgsrc更新を続けています。今度はmozc-toolでエラーになりました。
ld: warning: libstdc++.so.7, needed by /usr/X11R7/lib/libGL.so.2, may conflict with libstdc++.so.8
ld: BFD (NetBSD Binutils nb1) 2.27 assertion fail /usr/src/external/gpl3/binutils/lib/libbfd/../../dist/bfd/elflink.c:2694
ld: BFD (NetBSD Binutils nb1) 2.27 assertion fail /usr/src/external/gpl3/binutils/lib/libbfd/../../dist/bfd/elflink.c:2694
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
  File "build_mozc.py", line 1263, in <module>
    main()
  File "build_mozc.py", line 1250, in main
    BuildMain(cmd_opts, cmd_args)
  File "build_mozc.py", line 881, in BuildMain
    BuildWithNinja(options, targets)
  File "build_mozc.py", line 855, in BuildWithNinja
    RunOrDie([ninja, '-C', build_arg] + ninja_targets)
  File "/usr/pkgsrc/inputmethod/mozc-tool/work/mozc-2.20.2673.102/src/build_tools/util.py", line 104, in RunOrDie
    '==========']))
build_tools.util.RunOrDieError:
==========
 ESC[31mERRORESC[0m: ninja -C out_bsd/Release mozc_tool
==========
*** Error code 1

Stop.
make[1]: stopped in /usr/pkgsrc/inputmethod/mozc-tool
*** Error code 1

Stop.
make: stopped in /usr/pkgsrc/inputmethod/mozc-tool
*** 'make replace' failed for package mozc-tool.
エラーを見ても対応が難しそうなので、バイナリ・パッケージを入れて済まそうと考えました。ところがWebで探してみても、欲しいバージョンのパッケージが見当たりません。The NetBSD Packages Collection: inputmethod/mozc-toolを見ても、powerpcとかx86_64ならmozc-tool-2.20.2673.102.tgzがあるのに、i386ではmozc-tool-2.17.2313.102nb?.tgzしかありません。

さぁ、どうしよう。

2018/02/09

'make replace' failed for package mono.

dynabook SS SX/15Aに元々入っていたWindows VistaをNetBSD/i386に入れ換えて使っています。不具合が無いわけではありませんが、解決策を探すのも楽しみの一つと思いながら、使っています。ただ気になっているのは、OS本体もpkgsrcから入れたアプリケーションも、定期的に更新すべきだと思うが、出来ていないという事です。

半年ほど前に更新作業をおこないましたが、それ以降は手つかずでしたので、久しぶりに更新することにしました。OS本体は/usr/src/build.shを使い、出来上がったtgzファイルで全体を入れ替えました。

pkgsrcから入れたアプリケーションはpkg_rolling-replaceを使って更新することにしています。月曜日から始めているのですが、インストールされているパッケージが多く、コンパイルに時間がかかります。さらに時々エラーで止まるので、解決策を模索しつつ、更新を続けているので、まだ最後まで終わっていません。

エラーが出たとしても、対処できるパターンもあるのですが、まったくお手上げの場合もあります。基本的にはソースからコンパイルしてインストールしたいのですが、解決できず、やむを得ずバイナリ・パッケージを利用して凌いだ場合もあります。lang/mono2がその一つです。

mono-2.10.9は「Open source implementation of the .NET Development Framework (v2)」というもので、KeePassというアプリケーションのために必要になるようです。これをコンパイルすると、以下のようなエラーが出てしまいます。直接的な原因は「ファイルが見つからない」というものです。それでは対象方法が何かと考えても、出来ることは何もなさそうです。Webを検索しても、解決の糸口になりそうな情報は見つかりませんでした。

gmake[8]: Entering directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs/tools/gacutil'
MCS     [basic] gacutil.exe
mv gacutil.exe ./../../class/lib/basic/gacutil.exe
mv: rename gacutil.exe to ./../../class/lib/basic/gacutil.exe: No such file or directory
../../build/executable.make:105: recipe for target '../../class/lib/basic/gacutil.exe' failed
gmake[8]: *** [../../class/lib/basic/gacutil.exe] Error 1
gmake[8]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs/tools/gacutil'
../../build/rules.make:132: recipe for target 'do-all' failed
gmake[7]: *** [do-all] Error 2
gmake[7]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs/tools/gacutil'
../build/rules.make:153: recipe for target 'all-recursive' failed
gmake[6]: *** [all-recursive] Error 1
gmake[6]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs/tools'
build/rules.make:153: recipe for target 'all-recursive' failed
gmake[5]: *** [all-recursive] Error 1
gmake[5]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs'
Makefile:95: recipe for target 'profile-do--basic--all' failed
gmake[4]: *** [profile-do--basic--all] Error 2
gmake[4]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs'
Makefile:91: recipe for target 'profiles-do--all' failed
gmake[3]: *** [profiles-do--all] Error 2
gmake[3]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/mcs'
Makefile:490: recipe for target 'all-local' failed
gmake[2]: *** [all-local] Error 2
gmake[2]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9/runtime'
Makefile:415: recipe for target 'all-recursive' failed
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory '/usr/pkgsrc/lang/mono2/work/mono-2.10.9'
Makefile:340: recipe for target 'all' failed
gmake: *** [all] Error 2
*** Error code 2

Stop.
make[1]: stopped in /usr/pkgsrc/lang/mono2
*** Error code 1

Stop.
make: stopped in /usr/pkgsrc/lang/mono2
*** 'make replace' failed for package mono.
*** Please read the errors listed above, fix the problem,

半年前に更新作業をした時にも、ここで躓きました。その時と今回とは、エラーの出るところが微妙に違うのですが、「ファイルが見つからない」というのは同じです。根本的に原因を突き止めて解決したい気持ちはあるのですが、大変そうなので、自前でコンパイルすることを諦めて、コンパイル済みのバイナリ・パッケージを入手して済ませることにしました。
# pkg_info -a | grep mono
mono-2.10.9nb19     Open source implementation of the .NET Development Framework (v2)
# pkg_delete -f  mono-2.10.9nb19
Package `mono-2.10.9nb19' is still required by other packages:
        KeePass-2.23nb4
# pkg_add mono-2.10.9nb22.tgz
pkg_add: Warning: package `mono-2.10.9nb22' was built for a platform:
pkg_add: NetBSD/i386 7.0 (pkg) vs. NetBSD/i386 8.99.12 (this host)
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/2.0/Browsers/Compat.browser to /usr/pkg/etc/mono/2.0/Browsers/Compat.browser
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/2.0/DefaultWsdlHelpGenerator.aspx to /usr/pkg/etc/mono/2.0/DefaultWsdlHelpGenerator.aspx
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/2.0/machine.config to /usr/pkg/etc/mono/2.0/machine.config
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/2.0/settings.map to /usr/pkg/etc/mono/2.0/settings.map
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/2.0/web.config to /usr/pkg/etc/mono/2.0/web.config
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/4.0/DefaultWsdlHelpGenerator.aspx to /usr/pkg/etc/mono/4.0/DefaultWsdlHelpGenerator.aspx
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/4.0/machine.config to /usr/pkg/etc/mono/4.0/machine.config
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/4.0/settings.map to /usr/pkg/etc/mono/4.0/settings.map
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/4.0/web.config to /usr/pkg/etc/mono/4.0/web.config
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/browscap.ini to /usr/pkg/etc/mono/browscap.ini
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/config to /usr/pkg/etc/mono/config
mono-2.10.9nb22: copying /usr/pkg/share/examples/mono/mconfig/config.xml to /usr/pkg/etc/mono/mconfig/config.xml
===========================================================================
$NetBSD: MESSAGE,v 1.1 2013/06/17 12:43:28 wiz Exp $

To enable using System.Drawing or Windows.Forms, the following packages
will need to be installed:

    libgdiplus  Implementation of the GDI+ API
===========================================================================
# pkg_info -a | grep mono
mono-2.10.9nb22     Open source implementation of the .NET Development Framework (v2)
コンパイル済みのパッケージが存在するということは、本来であれば問題なくコンパイルできるということなのでしょう。それならば何故エラーが出るのでしょうか。この問題を解決するのは、かなり難しそうです。