8.3 KiB
Ubuntu 24.04用ローカル検証パッケージ
Ubuntu 24.04 amd64向けのDebianパッケージを作成した。Qt SDK、PDFium、qpdf、libzipを/opt/docviewへ配置し、/usr/bin/docviewが必要な実行時パスを設定する。呼び出す側で環境変数を設定する必要はない。現在の検証版は、修正版PDFiumを含むvalidation4。一般公開用のリリースではない。
debファイルは123,417,928バイト、SHA-256は bd4f00912078d406cb466cd6910ed01c0c9fdd32b76cb2f47b74cfb9719f1bd9。
インストールと起動
Ubuntu 24.04 amd64のデスクトップ環境で実行する。
sudo apt install ./docview_0.1.0~validation4_amd64.deb
docview
docview '/path/to/日本語の文書.pdf'
PDF、HTML、HTML ZIP、EPUBを開ける。アプリケーションメニューにはDocViewを登録する。基本操作と設定はREADMEを参照する。
共有システムライブラリーはDebian依存情報に記載した版以上を要求する。日本語代替フォントとしてfonts-noto-cjk、ラテン文字用にfonts-dejavu-coreを要求する。同梱ライブラリーだけでOSの依存をすべて代替する構成ではない。
/etc/apparmor.d/docviewは同梱QtWebEngineProcessの正確な実行パスに対するプロファイルで、Ubuntuのuser namespace制限下でChromiumの隔離を起動するために使う。インストール時に読み込み、削除時に解除する。カーネルのuser namespace制限を無効にせず、アプリのsandbox無効化オプションも設定しない。
削除
sudo apt remove docview
sudo apt purge docview
removeは実行ファイル・同梱ランタイム・メニュー登録を削除し、システム設定ファイルを保持する。purgeは保持されたAppArmor設定も削除する。どちらも利用者の文書・設定・読書履歴を削除しない。
生成と照合
収集器と梱包処理の限定試験は次のコマンドで実行できる。通常の本体CTestとは別の結果として保存する。
python3 tests/test_ubuntu_validation_runtime.py -v
python3 tests/test_ubuntu_package.py -v
生成はUbuntu 24.04 amd64で行う。ビルドとSDKの準備は専用VM手順、候補prefixの選択は修正版PDFiumの手順を参照する。以下は候補を選択して配置した $HOME/docview-context-install を入力にする。入力するSDK告知とQt LICENSESは、元SDK・ソースとの照合済み資料を使う。
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でも同じ12条件、配置の照合、remove/purgeと4つの利用者データprobe保持が成功した。このVMには過去の試験ツールが残っており、新規OSでの試験とは扱わない。2台とも試験後に正常終了した。
validation3の検証履歴
validation3は補足告知を追加した版で、本体・両ワーカー・同梱ランタイムはvalidation2と同じバイト列である。今回の記録で、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は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でも、SDKやコンパイラーを別途導入せずにインストール・依存解決・同じ12条件の起動・remove/purgeが成功した。共有ライブラリーの解決はGUI試験ツール追加前に確認した。この節の結果は旧版validation1の記録であり、修正版の実OSファイル選択は別記録で検査する。実GPU・物理表示、Windows、署名・公開配布条件の受入は残る。パッケージの再現性は梱包工程の一致であり、依存ライブラリーのソースからの再現ビルドを意味しない。