# Ubuntu 24.04用ローカル検証パッケージ Ubuntu 24.04 amd64向けのDebianパッケージを作成した。Qt SDK、PDFium、qpdf、libzipを`/opt/docview`へ配置し、`/usr/bin/docview`が必要な実行時パスを設定する。呼び出す側で環境変数を設定する必要はない。現在の検証版は、修正版PDFiumを含む[validation4](../tests/results/pdfium-intent-context/ubuntu-package/README.md)。一般公開用のリリースではない。 [debファイル](../tests/results/pdfium-intent-context/ubuntu-package/guest/package/package/docview_0.1.0~validation4_amd64.deb)は123,417,928バイト、SHA-256は `bd4f00912078d406cb466cd6910ed01c0c9fdd32b76cb2f47b74cfb9719f1bd9`。 ## インストールと起動 Ubuntu 24.04 amd64のデスクトップ環境で実行する。 ```sh sudo apt install ./docview_0.1.0~validation4_amd64.deb docview docview '/path/to/日本語の文書.pdf' ``` PDF、HTML、HTML ZIP、EPUBを開ける。アプリケーションメニューにはDocViewを登録する。基本操作と設定は[README](../README.md)を参照する。 共有システムライブラリーはDebian依存情報に記載した版以上を要求する。日本語代替フォントとして`fonts-noto-cjk`、ラテン文字用に`fonts-dejavu-core`を要求する。同梱ライブラリーだけでOSの依存をすべて代替する構成ではない。 `/etc/apparmor.d/docview`は同梱`QtWebEngineProcess`の正確な実行パスに対するプロファイルで、Ubuntuのuser namespace制限下でChromiumの隔離を起動するために使う。インストール時に読み込み、削除時に解除する。カーネルのuser namespace制限を無効にせず、アプリのsandbox無効化オプションも設定しない。 ## 削除 ```sh sudo apt remove docview sudo apt purge docview ``` `remove`は実行ファイル・同梱ランタイム・メニュー登録を削除し、システム設定ファイルを保持する。`purge`は保持されたAppArmor設定も削除する。どちらも利用者の文書・設定・読書履歴を削除しない。 ## 生成と照合 収集器と梱包処理の限定試験は次のコマンドで実行できる。通常の本体CTestとは別の結果として保存する。 ```sh python3 tests/test_ubuntu_validation_runtime.py -v python3 tests/test_ubuntu_package.py -v ``` 生成はUbuntu 24.04 amd64で行う。ビルドとSDKの準備は[専用VM手順](../tests/ubuntu_vm/README.md)、候補prefixの選択は[修正版PDFiumの手順](PDFIUM-CANDIDATE.md)を参照する。以下は候補を選択して配置した `$HOME/docview-context-install` を入力にする。入力するSDK告知とQt LICENSESは、[元SDK・ソースとの照合済み資料](../tests/results/source-archives/QT-SDK-NOTICES.md)を使う。 ```sh python3 tools/package_ubuntu.py \ --prefix "$HOME/docview-context-install" \ --version '0.1.0~validation4' \ --qtpaths /opt/docview-qt/6.11.2/gcc_64/bin/qtpaths \ --dependency-prefix /opt/docview-deps \ --source-root "$HOME/dependency-sources/qpdf-12.4.1" \ --source-root "$HOME/dependency-sources/libzip-1.11.4" \ --input-manifest "$HOME/incoming/sdk-downloads.json" \ --sdk-notices tests/results/source-archives/qt-sdk-notices-final \ --sdk-supplement tests/results/qt-notice-supplement/collection \ --qt-licenses tests/results/ubuntu-package/inputs/qt-licenses \ --output "$HOME/validation/new-ubuntu-package" python3 tools/verify_ubuntu_package.py \ --archive "$HOME/validation/new-ubuntu-package/docview_0.1.0~validation4_amd64.deb" \ --output "$HOME/validation/new-ubuntu-package/verification.json" ``` 生成先は毎回新しいディレクトリーを指定する。生成器は固定入力のハッシュを確認し、ランタイムの通常ファイルだけをコピーする。シンボリックリンクは参照先のバイト列を所定のロード名へ配置する。全ファイルのサイズ・モード・SHA-256をmanifestへ記録し、独立した検証器が`.deb`のdata/controlアーカイブを読み戻す。`SOURCE_DATE_EPOCH=0`と所有者・権限を固定し、同じ入力から2回生成した結果が一致した。 Qt SDKの抽出告知129entry、対応する105本文、QtのLICENSES 64ファイルと実行時依存の部分台帳を含む。validation3はさらに、生成器が除外していたWebM/WebPのPatentファイル2件(同一本文)と出典メタデータ4件を補う。補足台帳・元台帳・実行時ファイル・全補足原文のハッシュを確認し、一致しない入力では生成を拒否する。元SBOMの不整合や除外範囲、全対応ソースと公開ライセンスの未確定事項は解消済みとはしない。告知文書内のArch用開発パッケージ説明は従来の別方式を説明するものであり、このUbuntuパッケージの起動手順は本書に従う。 ## validation4の検証 候補を明示的にリンクしたUbuntu新ビルドは全24試験群、実debを含む候補境界13試験、色probe972点が成功した。生成2回のdebが一致し、archive内の2,100ファイルを検証した。候補library、ヘッダー、BUILDINFO、固定ビルド記録、パッチ、補足告知の対応も検証する。参照CMMは色probe専用で、配布物には追加していない。 ビルド環境ではSDK・依存・旧新のbuild/install/prefixを隠し、配置後2,095ファイルと131 ELFを確認した。X11・Wayland各6条件の起動とinstall/remove/purgeが成功した。[SDKのない既存試験VM](../tests/results/pdfium-intent-context/ubuntu-package/clean-vm/README.md)でも同じ12条件、配置の照合、remove/purgeと4つの利用者データprobe保持が成功した。このVMには過去の試験ツールが残っており、新規OSでの試験とは扱わない。2台とも試験後に正常終了した。 ## validation3の検証履歴 validation3は補足告知を追加した版で、本体・両ワーカー・同梱ランタイムはvalidation2と同じバイト列である。[今回の記録](../tests/results/qt-notice-supplement/README.md)で、Arch/Ubuntu各8試験、独立したdeb生成2回の一致、全2,016ファイルのarchive検証を確認した。 SDKのない既存試験VMでも、インストール後2,011ファイルと131 ELFの依存、X11/Waylandの起動12条件、remove/purge・ユーザーデータ保持が成功した。このVMには前回の試験ツールが残っている。新しいOSでの検証と、validation2で行った実portal試験の範囲は以下の履歴に分ける。 ## validation2の検証履歴 validation2は日本語・空白等を含むHTML名のURL比較を修正した版である。[修正後の全22群と実portal](../tests/results/portal/README.md)はArch・UbuntuおよびUbuntu X11/Waylandで確認した。debは約123 MB、2回生成が同一で、SDKのない試験VMの旧版からの更新・配置ファイル/依存の照合も成功した。 X11/Waylandで通常起動12条件、実OSファイル選択の取消と4形式の表示10ケース、remove/purgeと4つのユーザーデータprobe保持を確認した。全Chromium告知・対応ソース・公開ライセンス、Windowsと物理環境の受入は未完了である。 ## 旧版validation1での配置検証 専用Ubuntu VMでインストール・再インストール・削除・完全削除を確認した。元のQt SDK、依存ライブラリー、build/install先を私有マウント名前空間内で隠し、通常ユーザーの空の実行時環境からX11とWaylandの各6条件を起動した。131個のELFの依存解決、配置された2,004ファイルの所有者・権限・バイト列も確認した。 さらに、元のUbuntu cloud imageから作った[新しいVM](../tests/results/ubuntu-package/clean-vm/README.md)でも、SDKやコンパイラーを別途導入せずにインストール・依存解決・同じ12条件の起動・remove/purgeが成功した。共有ライブラリーの解決はGUI試験ツール追加前に確認した。この節の結果は旧版validation1の記録であり、修正版の実OSファイル選択は別記録で検査する。実GPU・物理表示、Windows、署名・公開配布条件の受入は残る。パッケージの再現性は梱包工程の一致であり、依存ライブラリーのソースからの再現ビルドを意味しない。