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がそうでした。このような場合は、上手くビルド出来そうなバージョンに戻ることが必要です。

0 件のコメント:

コメントを投稿