pnpmがTMPDIRソケット・バジェットの修正を受け入れ

pnpmに関する最近のフィールドテストの結果、アップストリームでの採用が決まりました。これは、境界(boundary)に焦点を当てた修正にとって大きな勝利です。

問題はパスの長さに関するものでした。

pnpmがパッケージをインストールする際、TMPDIRパスを設定します。一部のパッケージはセットアップ中にライフサイクルツールを実行します。これらのツールは多くの場合、IPCソケットを作成します。pnpmのTMPDIRパスが長すぎると、ソケットの総パス長がUnixの制限を超えてしまいます。これにより、Nodeがエラーを報告する原因となります。

このエラーはNodeやツールの失敗のように見えますが、真の原因はパス・バジェット(path budget)の問題です。

pnpmはUnixソケットの制限を管理しているわけではありません。 pnpmはライフサイクルツールを管理しているわけではありません。 pnpmは、自身が提供する一時ディレクトリのパスを管理しています。

この修正は、pnpmが制御可能な範囲のみに焦点を当てています。

修正内容は、パスのうちpnpmが所有する部分を短縮することです。Nodeネイティブの fs.mkdtemp() を使い、コンパクトなプレフィックスを使用します。これにより、一時ディレクトリをpnpmストア内に保持しつつ、使用するスペースを削減します。

このアプローチは、3つのルールに従っています:

これは、限定的かつ効果的な修正です。考えられるすべてのソケットエラーを修正しようとするものではありません。pnpmの権限実行方法を変更するものでもありません。単に、pnpmがパス・バジェットを浪費するのを防ぐものです。

pnpmのメンテナーは、2026年6月16日にこれを承認し、マージしました。

この成功は、Scarab/SDSメソッドが有効であることを証明しています。私たちは、自身が管理する領域(owned surface)を特定します。最も顕著な症状(loudest symptom)を回避します。パッチを小さく保ちます。そして、プロジェクトの境界を維持します。

このテストのField Labステータスは現在、upstream-accepted です。

Source: https://dev.to/scarab-systems/scarab-diagnostic-field-test-024b-pnpm-accepted-the-cafs-tmpdir-socket-budget-repair-34bb

Optional learning community: https://t.me/GyaanSetuAi