**Arch Linux パッケージ管理(ALPM)プロジェクトでの1年間の取り組み**

2026/01/11 11:08

**Arch Linux パッケージ管理(ALPM)プロジェクトでの1年間の取り組み**

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

ソウバリン・テック・ファンドの15か月にわたるALPMプロジェクトは、Arch Linux のパッケージ管理用 Rust ベースのフレームワークを完成させ、リリースしました。主なマイルストーンは以下の6点です:

  1. パッケージングデータ形式の正式仕様化;
  2. ステートレスディレクトリ階層で状態を持たない GnuPG キーリングを置き換える OpenPGP ベースの検証システム (
    voa
    ) の実装;
  3. 個別パッケージ用、システムパッケージ管理用、パーサー用の Rust ライブラリ(
    alpm-types
    alpm-parsers
    alpm-solve
    alpm-compress
    alpm-package
    、および
    rootless-run
    を含む);
  4. PyPI 上で公開されている Python バインディング (
    python-alpm
    ) により、AURweb などのプロジェクトにこれらのライブラリを提供;
  5. パブリックドキュメントサイト(https://alpm.archlinux.page/lints/)を備えた lint フレームワーク (
    alpm‑lint
    ) の実装;
  6. fluent-i18n
    と Weblate を用いた国際化作業、貢献のガイドラインは https://hosted.weblate.org/projects/alpm/ で確認できる。

プロジェクトでは、SRCINFO、PKGBUILD、BUILDINFO、ALPM-MTREE、PKGINFO、DB ファイル、およびリポジトリメタデータを解析・検証・作成するコマンドラインインターフェースも公開しました。VOA ポリシーは各アーティファクトに対して1つのデータ署名を要求し、「trust anchor」モデル(3 つの特定フィンガープリント)を採用、設定は

arch.yaml
に格納します。
voa(1)
CLI は設定の確認、証明書のインポート、検証者一覧表示、およびファイル検証が可能であり、パッケージ署名の検証に成功したことを示しています。

今後は lint の拡張、C‑API エミュレーション追加、リポジトリデータベース全体の実装、rootless-run/libkrun 統合のサポート、安全なアーティファクトダウンロード機能の有効化、VOA バックエンド(例:X.509、signify)の導入、

archinstall
用 Python バインディング拡張、および ALPM 上に新しいパッケージ管理アプリケーションを構築する予定です。2026 年には、Web‑of‑Trust 計算の改善のため VOA に Berblom パス探索アルゴリズムを統合する研究が進められます。

結果として、Rust を中心としたモダンなツールキットが完成し、キー管理の簡素化、安全性の向上、および次世代 Arch Linux ツールの開発速度向上に貢献します。

本文

ALPM プロジェクト – 2024 / 2025 年度概要

2024 年に Sovereign Tech Fund(STF)が ALPM プロジェクトを資金提供しました。
このプロジェクトは Arch Linux のパッケージ管理を支える Rust ベースのフレームワークです。
15 ヶ月間で、ライブラリ・コマンドラインツール・ドキュメント一式を完成させました。


マイルストーン

#フォーカス
1パッケージングデータ形式の正式仕様化
2アーティファクトの基本的な OpenPGP 検証
3個別パッケージを扱う Rust ライブラリ
4
alpm-srcinfo
の Python バインディング
5配布環境に依存しない OpenPGP スタック(アーティファクト検証)
6システムパッケージ管理用 Rust ライブラリ

貢献とコミュニティ

  • 本プロジェクトはフリーソフトウェアエコシステム全体の一部であり、専門分野を超えた価値創造を目指しています。
  • この基盤作りに貢献いただいた STF に感謝します。

統計情報

$ git shortlog --after="2024-10-01" --summary --numbered
 467 David Runge
 252 Arne Beer
 173 Orhun Parmaksız
 117 Jagoda Ślązak
 54  renovate
 16  Laura Demkowicz‑Duffy
 ...
$ tokei
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 Language          Files       Lines        Code    Comments      Blanks
─────────────────────────────────────────────────────────────────────────
 Rust                271       46298       38583        1700        6015
 Markdown             95      10253           0        7000        3253
 ...
 Total               551       92267       54468       21973       15826
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

コアコンセプト

ライブラリ目的
alpm-types
すべてのファイル形式で共有される低レベル型
alpm-common
他のクレートで使用する中心的な trait とユーティリティ
alpm-parsers
winnow
を用いた Arch Linux 独自形式のパーサー
alpm-solve
resolvo
ライブラリに基づく汎用解決器
alpm-compress
パッケージファイルの拡張可能な圧縮/展開
alpm-package
.pkg.tar.zst
ファイルの作成・検査
rootless-run
「root で実行」(fakeroot, rootlesskit) を提供

ファイル形式ライブラリ

Alpm-srcinfo

PKGBUILD(5)
から
SRCINFO(5)
を解析/検証/生成。
Alpm-buildinfo – パッケージ内の
BUILDINFO(5)
を扱う。
Alpm-mtree
ALPM-MTREE(5)
(mtree のサブセット)の読み書き。
Alpm-pkginfo
PKGINFO(5)
メタデータを管理。
Alpm-db – ローカルデータベース (
alpm-db-desc
,
alpm-db-files
) を解析/検証/生成。
Alpm-soname – ELF の soname データからランタイム依存性を抽出。
Alpm-repo-db – リポジトリディスクリプタとファイルリストを扱う。


開発統合

dev-scripts
クレートは次のライブデータソースからテストベッドを提供します:

  • 公式ソースリポジトリ(全公式リポ + AUR)
  • バイナリパッケージリポジトリ

サポートチェック項目:

  • SRCINFO(5)
    の検証
  • バイナリ内の
    ALPM-MTREE(5)
    ,
    BUILDINFO(5)
    ,
    PKGINFO(5)
  • 公式パッケージ全体の OpenPGP 署名
  • ローカルデータベースエントリ (
    alpm-db-desc
    ,
    alpm-db-files
    )
  • リポジトリデータベースエントリ (
    alpm-repo-desc
    ,
    alpm-repo-files
    )

Python バインディング

python-alpm
パッケージ(PyPI)は Rust ライブラリを Python に公開します。
すでに AURweb アプリケーションに統合され、以下をサポート:

  • alpm-srcinfo
    を用いた
    SRCINFO(5)
    の解析/生成
  • alpm-types
    から型へのアクセス

Lint フレームワーク

alpm-lint
クレートは CLI (
alpm-lint
) と中央 lint エンジンを提供。
現在のルールは限定的で、貢献者が追加することを推奨しています。
ドキュメントとルールは https://alpm.archlinux.page/lints/ で公開。


国際化

Fluent +

fluent-i18n
クレートで i18n を実装。
翻訳は Weblate で貢献できます:https://hosted.weblate.org/projects/alpm/


VOA(Verification of OS Artifacts)

動機

Arch Linux の現在の OpenPGP 検証は状態を持つ GnuPG キーリングに依存し、
コンテキスト非独立性・相互運用性の欠如など複数の問題があります。

UAPI 仕様

  • VOA(Verification of OS Artifacts)ファイル階層 – 2025 年 6 月ドラフト。
    多様なバックエンド(OpenPGP, SSH, X.509 等)をサポート。

リファレンス実装

ライブラリ役割
voa-core
検証器への抽象ファイルシステムアクセス
voa-openpgp
OpenPGP 検証(プレーン, trust‑anchor, Web of Trust)を実装
voa-config
中央 VOA 設定ファイル (
voa(5)
) を扱う

例:設定ファイル(arch.yaml)

default_technology_settings:
  openpgp:
    num_data_signatures: 1
    verification_method:
      trust_anchor:
        required_certifications: 3
        artifact_verifier_identity_domain_matches:
          - archlinux.org
        trust_anchor_fingerprint_matches:
          - d8afdda07a5b6edfa7d8ccdad6d055f927843f1c
          - 3572fa2a1b067f22c58af155f8b821b42a6fdcd7
          - 69e6471e3ae065297529832e6ba0f5a2037f4f41
          - 2ac0a42efb0b5cbc7a0402ed4dc95b6d7be9892e
          - 91ffe0700e80619ceb73235ca88e23e377514e00

CLI 利用例

$ voa config show arch
# 現在の OpenPGP 設定を表示(元テキスト参照)

$ voa verify arch package default openpgp /var/cache/pacman/pkg/shadow-4.18.0-1-x86_64.pkg.tar.zst.sig
✅ Verified!

今後の課題

  • Berblom の統合 – Web of Trust 計算用モジュラー経路探索アルゴリズム(2026 年計画)。
  • X.509、Signify など他バックエンドへの対応。
  • ネットワーク上でアーティファクトを安全にダウンロード。

ロードマップのハイライト

分野次のステップ
Lint の拡張
alpm-lint
ルールセットを増やし、公式ビルドツールに統合。
C‑APIALPM ライブラリをベースに libalpm をエミュレート(コミュニティ主導)。
リポジトリ DB 処理
alpm-repo-db(7)
ファイルの作成・読み込み・圧縮・変更全般。
Rootless Run 強化
libkrun
サポートを追加し、隔離性を向上。
アーティファクト取得 & 検証ネットワークフェッチの安全化;VOA を通じたパッケージ・リポジトリ検証。
Python バインディング拡張API をさらに拡充(例:archinstall など)。
新規アプリケーションALPM ライブラリを活用した専門ツール開発をコミュニティへ奨励。

コンタクト & コラボレーション

  • 貢献希望の方は GitHub またはメーリングリストでご連絡ください。
  • FastAPI や AURweb に興味がある Python 開発者もプロジェクトディスカッションに参加歓迎です。

要旨終了

同じ日のほかのニュース

一覧に戻る →

2026/01/11 10:50

**Show HN:Ferrite – Rustで作られたマークダウンエディタ、ネイティブMermaid図描画機能付き**

## Japanese Translation: Ferrite は、egui で構築された軽量でネイティブな Rust テキストエディタで、Markdown、JSON、YAML、および TOML ファイルをサポートします。主な編集機能には、WYSIWYG Markdown 編集、ライブプレビュー、クリックで編集できる書式設定ボタン、40 以上の言語に対応した構文ハイライト、正規表現検索&置換、タブごとの Undo/Redo、およびインライン編集が可能な階層データ用トリービューがあります。 表示モードは Raw エディタ、レンダリングビュー、分割ビュー(可変サイズの区切り線付き)、Zen モード、Raw とレンダリングビュー間の双方向同期スクロールから構成されます。 MermaidJS ダイアグラム描画は完全に統合されており、11 種類のダイアグラムをサポートします;バージョン 0.2.1 では高度なシーケンス制御フローブロックとネストされた状態が追加されました。 ワークスペース機能:フォルダーをファイルツリーで開く、クイックスイッチャー(`Ctrl+P`)、検索‑イン‑ファイル(`Ctrl+Shift+F`)、Git 統合(ステータスアイコン、ステージング、コミット、プッシュ/プル、競合解決)およびセッション永続化により、タブ、カーソル位置、およびスクロールオフセットが再起動時に復元されます。 追加の UI オプションには、実行時切替可能なライト/ダークテーマ、ドキュメントアウトラインパネル、テーマ付き HTML へのエクスポートまたは HTML としてコピー、書式設定ツールバー、JSON/YAML をシェルコマンドでパイプするライブパイプライン、およびカスタム境界なしウィンドウモードがあります。 インストールはプリビルトバイナリ(Windows zip、macOS tar.gz、Linux .deb または tar.gz)またはソースビルド(`cargo build --release`)で利用可能です。Rust 1.70+ とプラットフォーム固有の依存関係が必要です。主なショートカット:ファイル操作は `Ctrl+N/O/S/W`、タブは `Ctrl+Tab/Shift+Tab`、クイックスイッチャーは `Ctrl+P`、フルスクリーンは `F11`、設定は `Ctrl+,` などです。 Ferrite は MIT ライセンスの下でオープンソースであり、Rust 1.70+、egui 0.28、comrak 0.22(Markdown パーシング)、syntect 5.1(構文ハイライト)、git2 0.19(Git 統合)に依存しています。

2026/01/11 3:58

**GhostTyの最大メモリリークを発見し修正する**

## Japanese Translation: Ghostty の長時間にわたるセッションは、`mmap`(スクロールバックバッファに使用される)で割り当てられたページが解放されないため、最大 37 GB の RAM をリークしていました。アプリはターミナルコンテンツを **PageList** に保存します。これは「標準」(プールから取得したもの)または「非標準」(`mmap`)のメモリページで構成される双方向リンクリストです。スクロールバックの削減時に、Ghostty は誤って最も古いページを新しいページとして再利用します:そのメタデータだけを「標準サイズ」にリサイズし、大きな `mmap` 割り当てはそのまま残します。この再利用されたページが後で解放されると、Ghostty はそれを標準とみなし、`munmap` を呼び出す代わりにプールへ返却してしまい、メモリブロックがリークしたままとなります。 このバグは Ghostty 1.0 から存在しましたが、大量のスクロールバックバッファ(例:多くの絵文字とハイパーリンクを含む Claude Code など)を生成する CLI アプリでのみ顕在化し、非標準ページ割り当てをトリガーします。既存のリーク検出器は特定の実行時条件下で発生するため、検知できませんでした。 新しいテストが問題を再現しリークを確認しました。統合された修正では、削減中に **非標準ページを破棄**(`self.destroyNode(first)`)し、プールから新しい標準サイズのページで置き換えるようになっています。この修正は Ghostty 1.3(3 月)に組み込まれます。既に Nightly リリースにはパッチが含まれています。 さらに、macOS のメモリタグ付け(`mach.taggedPageAllocator(.application_specific_1)`)を追加し、PageList 割り当てにタグを付与して修正の検出と確認を簡素化しました。この更新により、長時間ターミナルセッションを実行するユーザー—特に重い CLI ワークロードを扱う開発者は――メモリ使用量が急増する問題が解消され、個人およびプロダクションでアプリに依存している組織の両方に対し、より安定かつ信頼性の高い Ghostty エクスペリエンスを提供します。

2026/01/11 1:56

**HNの投稿:** 「Claude Code を使って100冊の本との関連性を発見しました」

## Japanese Translation: **概要** 本文は、スタートアップのピボットが巧妙な洞察よりもむしろ絶望感から動かされることが多いと主張しています。後知恵バイアスがこれらの反応的シフトを事後的に戦略的計画として見せかけ、意図的な天才像を与える仕方を説明しています。代表例として、Odeo が新しいベンチャーへと変貌するケースが挙げられ、ピボット手法の実践的なテキストブック例として機能します。著者は将来のピボットも短期的圧力によって促される反応的なものに留まる可能性が高いと予測し、このパターンを認識することで、創業者・投資家・チームがスタートアップエコシステム内で戦略やリスクについて考える方法を再構築し、企業が方向転換する理由をより現実的に評価できるよう促すと述べています。

**Arch Linux パッケージ管理(ALPM)プロジェクトでの1年間の取り組み** | そっか~ニュース