4 パッケージの依存性を解く: EDOS から Mancoosi まで

Ralf Treinen

PIC
____________________________________________________________________

注 ) Ralf Treinen さ ん の 発 表 用 ス ラ イ ド を 、 簡 単 か つ 適 当 に 抄 訳 し ま し た 。 英 語 が 苦 手な方は、 発表前にざっと読んで内容を 把握しておいてください。 訳の間違いなど、 苦情は倉敷まで。

4.1 Mancoosi プロジェクト

4.2 EDOS と Mancoosi の目的

4.3 なぜ科学研究者が F/OSS に興味をもつのか?

F/OSS インフラストラクチャが特に興味深いのは:

4.4 なぜ F/OSS が科学の研究成果に興味をもつのか?

F/OSS における品質保証の現状は:

4.5 パッケージの依存関係における EDOS workpackage

焦点:リリース管理者の観点によるディストリビューションの一貫性

質問:規定のリポジトリにあるパッケージしか使えない場合に、 ユーザが選択したパッケージはインストール可能だろ うか?

リリース管理者や品質保証チームが、 問題のある、 もしくは無用なパッケージを見つける助けになる質問

4.6 パッケージのインストーラビリティ as SAT (命題論理の充足可能性判定問題)

パッケージの関係について、 命題論理に基いて数学的なモデルを作ることから始めた。

定 理 :

あるパッケージp のバージョンv は、 pv を真とする真偽値が存在し、 リポジトリの記号化を満足すれば、 「インストール可 能」 である

4.7 パッケージインストールの容易さ as SAT − 例

平均的な式は 400 の定数を持つ。 KDE のインストールでは 32000

4.8 EDOS ツールチェイン

EDOS を通じていくつかのツールが開発された (OCaml で 110000 行のコード)

edos-debcheck

パッケージのインストーラビリティをチェックするコマンドラインツール

pkglab

インタラクティブなコンソール環境で、 リポジトリの検査用

ceve

パッケージリストの複数フォーマットをパース/変換する

tart

リポジトリを分割 (メディアなど) する。 この時、 i 番目のメディアに含まれているパッケージは、 i 番目まで のメディアを使えばインストール可能となる

いくつかを詳細に見てみよう……

4.9 edos-debcheck

カスタマイズされた SAT 解決器がベースになっていて、 とても高速: testing/amd64 の main にある全パッケージのインス トーラビリティのチェックにかかる時間は、 エントリーレベルのマシン上で 5 秒。

大きな成功例

emdebian ではパッケージのアップロード前に edos-debcheck を使って、 壊れたパッケージをアーカイブに アップロードしないようにしている

Debian のパッケージ名: edos-debcheck, edos-rpmcheck

4.10 pkglab

pkglab はインタラクティブな、 コンソールベースの環境で、 パッケージベースのソフトウェアディストリビューションのリポ ジトリを調査するもの

機能:

Debian のパッケージ名: dose2 (基本のライブラリ), ceve (パッケージリストのパーサ/コンバータ), pkglab (インタラク ティブ環境), edos-debcheck (debian 向けのインストーラビリティチェッカ), edos-rpmcheck (RPM 向けのインストーラビリ ティチェッカ)

4.11 Debian で、 インストールできないパッケージを見つける

Debian, Skilelinux, Debian GNU/kFreeBSD において、 毎日 edos-debcheck を使ってインストール不可能なパッケージをモ ニターしている: http://edos.debian.net/edos-debcheck

インストールできないパッケージの頻出ケース:

  1. autobuilder の追随 (例えば、 arch:all のパッケージが arch:any のパッケージと同時にアップロードされ、 autobuilder が遅延している) :通常の一過性のインストール不可状態
  2. a が b に依存しており、 全アーキテクチャに b がない: b のビルドに問題があったり、 a において、 とっても おおらかなアーキテクチャ指定がなされている (厳密にすべき)
  3. 深刻なパッケージのバグで、 実際に修正する必要がある :-)

4.12 Debian で、 宣言されていない衝突を見つける

ユーザにこういったエラーを見せる前に取り除く。

  1. 愚直に:パッケージ全部 (200,000,000) を同時にインストールしてみる……そんなバカな!
  2. 少なくとも 1 ファイルを共有しているペアのみ考慮 (Contents を使えば簡単) : 867 ペア (2008/4/16 の amd64/sid)
  3. 依存性のうえで同時インストール可能なペアに絞る (pkglab を使えば簡単) : 102 ペア
  4. diversion によって誤検知されているかも:ペアでのインストールを chroot 環境でテスト: 27 のバグもちパッ ケージペアが検出された

レポート: http://edos.debian.net/missing-conflicts/

BTS:ユーザtreinen@debian.org、 タグ edos-file-overwrite

4.13 Mancoosi プロジェクト

アップグレード問題 = インストールされたパッケージのローカルなステータスを変更するようメタインストーラが要求するこ と で 発 生 す る 問 題 。

アップグレード問題の解決は、 いくつかの理由で失敗し得る:

Mancoosi は 2 つの側面からアップグレード問題に取り組もうとしている:

ロールバックのサポート

想定外のエラー (メンテナスクリプトなど) があった場合、 事後のリカバリが唯一の解決策

依存性解決

メタインストーラが最新の水準を満たしていない (例えば、 不完全性: when there is one、 解決法を見つける ことができない) :我々がうまくやらねば!

4.14 依存性の解決に必要なもの

完全性

アップグレード問題への解決法が存在するなら、 メタインストーラはそれを発見できなくてはならない

最適性

同等の異なる複数の解決法を区別するため、 最適化の基準を指定できる必要がある。 例えば:

効率

依存性の解決は、 可能な限り高速でなくてはならない

4.15 依存性解決法の competition

我々は、 依存性解決における魔法の銀の弾丸となるアルゴリズムを探そうとしているわけではもちろんないが、 依存性解決の competition 運営につながる助けとなることができる

SAT 解決自体のような関連分野において、 同様の competition が技術水準を最新に押しあげるのに大いに寄与しています。 なぜこの分野でやらないのでしょう?

第 23 回関西 Debian 勉強会 2009 年 4 月
____________________________________________________________________________________________