Skip to content

fix(nix-on-droid): proot-termux修正版を参照してインストールの権限エラーを解消#1217

Draft
ncaq wants to merge 2 commits into
masterfrom
nix-on-droid
Draft

fix(nix-on-droid): proot-termux修正版を参照してインストールの権限エラーを解消#1217
ncaq wants to merge 2 commits into
masterfrom
nix-on-droid

Conversation

@ncaq

@ncaq ncaq commented Jun 5, 2026

Copy link
Copy Markdown
Owner

26.05へ移行してglibc2.42になって以降、
Nix-on-Droidでのインストールが以下の権限エラーで失敗するようになっていました。

error: getting pseudoterminal attributes: Permission denied

原因はglibc 2.42isattytcgetattrTCGETS2 ioctlを使うようになったのに対し、
Nix-on-Droidが同梱する古いproot-termuxがTCGETS2を処理できないことです。
ビルダー起動時のtcgetattrEPERMを返してインストールが中断していました。

当初はnixpkgshome-managerをNix-on-Droid専用にglibc 2.4025.11へ固定する案を検討しました。
しかし共有のhome設定がprograms.claude-codeprograms.ssh.settingsなど、
26.05専用のhome-managerオプションを多用しており、
25.11では評価が壊れて二重保守のコストが大きいため断念しました。

代わりに根本原因のproot-termuxを直接修正します。
proot-termuxをTCGETS2対応版へ更新するPRが、
nix-community/nix-on-droid#529
で提出されていますがまだ未マージなので、
暫定でそのブランチ(masterベース)を直接参照します。
これで全体を26.05のまま維持でき、
home設定の互換対応も不要になります。

なお参照先がPRのベースであるmaster系になるため、
release-24.05固有ではないmaster側の挙動差が出る可能性があります。
評価が通ることはローカルで確認済みですが、
実機での最終確認はこれからです。
上流にマージされたら公式の正式リリースへ戻します。

close #1205

`26.05`へ移行して`glibc`が`2.42`になって以降、
Nix-on-Droidでのインストールが以下の権限エラーで失敗するようになっていました。

```
error: getting pseudoterminal attributes: Permission denied
```

原因は`glibc 2.42`が`isatty`や`tcgetattr`で`TCGETS2` ioctlを使うようになったのに対し、
Nix-on-Droidが同梱する古いproot-termuxが`TCGETS2`を処理できないことです。
ビルダー起動時の`tcgetattr`が`EPERM`を返してインストールが中断していました。

当初は`nixpkgs`と`home-manager`をNix-on-Droid専用に`glibc 2.40`の`25.11`へ固定する案を検討しました。
しかし共有のhome設定が`programs.claude-code`や`programs.ssh.settings`など、
`26.05`専用のhome-managerオプションを多用しており、
`25.11`では評価が壊れて二重保守のコストが大きいため断念しました。

代わりに根本原因のproot-termuxを直接修正します。
proot-termuxを`TCGETS2`対応版へ更新するPRが、
nix-community/nix-on-droid#529
で提出されていますがまだ未マージなので、
暫定でそのブランチ(masterベース)を直接参照します。
これで全体を`26.05`のまま維持でき、
home設定の互換対応も不要になります。

なお参照先がPRのベースである`master`系になるため、
`release-24.05`固有ではないmaster側の挙動差が出る可能性があります。
評価が通ることはローカルで確認済みですが、
実機での最終確認はこれからです。
上流にマージされたら公式の正式リリースへ戻します。

close #1205
@ncaq ncaq added Type: Bug Bug or Bug fixes Priority: Medium Type: Dependencies Dependency issues or Changes to dependency files labels Jun 5, 2026
@ncaq ncaq self-assigned this Jun 5, 2026
@ncaq ncaq added this to @ncaq TODO Jun 5, 2026

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

概要

Nix-on-Droidのglibc 2.42移行に伴うTCGETS2 ioctl非対応によるproot-termuxの権限エラー(error: getting pseudoterminal attributes: Permission denied)を解消するため、nix-on-droid flake inputを公式のnix-community/nix-on-droid release-24.05から、未マージPR nix-community/nix-on-droid#529 のブランチnewAM/nix-on-droid/update-prootへ暫定的に切り替える変更です。

根本原因の特定が的確で、25.11への固定案を検討した上で二重保守コストを避けて根本修正を選んだ判断、コメントとコミットメッセージへの経緯記載、flake.lockでのrev固定(d0e14fad...はPRのheadと一致)、上流マージ後に正式参照へ戻す計画の明記と、全体として丁寧で妥当な暫定対応です。

調査した事実として、PR nix-community/nix-on-droid#529 は実在し現在もopenかつ未マージ、修正対象はまさに本件のpseudoterminal権限エラーです。フォーク所有者newAMはnix-on-droidの実質的なコントリビュータで、proot-termuxのパッチ自体はtermux/proot公式コミット由来であり、信頼性は比較的高いと評価できます。

ブロッカーはありません。サプライチェーン上の残存リスクと、コメントの補足について改善提案を残します。

Review metadata
  • Reviewed commit: c13c20f
  • PR: #1217
  • kyosei: 3.5.0
  • kyosei-action: 2.2.1
  • Claude Code: 2.1.161
  • Model: claude-opus-4-8
  • Execution: GitHub Actions (run)

Comment thread flake.nix
Comment thread flake.nix
@github-actions

github-actions Bot commented Jun 5, 2026

Copy link
Copy Markdown

nvd diff: seminar (base: master)

Version changes

Closure size: 4975 -> 4975 (3 paths added, 3 paths removed, delta +0, disk usage +0B).

@ncaq

ncaq commented Jun 5, 2026

Copy link
Copy Markdown
Owner Author

単純にこれをinstallするだけだと解決しなかったな
Termux部分に手を入れているから当然といえば当然か

@ncaq

ncaq commented Jun 6, 2026

Copy link
Copy Markdown
Owner Author

手順に従ってbootstrapのビルドは出来たっぽい?

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

概要

前回レビュー(commit c13c20f)以降の増分は1コミット build(deps): nix flake update nix-on-droid のみで、nix-on-droid flake inputのrevが d0e14fad... から dff2d1eb9b40d88c523a62252d899219105c5517 へ更新され、あわせて nmd inputが rycee/nmd(gitlab固定)から nix-on-droid 追従のnmdへ統合されました。

検証結果

増分の安全性を確認しました。

  • 新rev dff2d1eb はPR nix-community/nix-on-droid#529 のブランチ newAM/nix-on-droid update-proot の現HEADと一致し、proot-termuxのTCGETS2/TCSETS2 ioctl対応(本PRが依存する Permission denied エラーの修正)を保持しています。
  • 新旧revは同一の親 55b6449b...・同一メッセージ・同一author(newAM)を持つため、ブランチ先頭コミットがamend(force-push)され、nix flake update がその書き換え後コミットを取り込んだ形です。これは前回レビューで指摘し著者が了承済み(flake.lockが再現性を保証)のブランチ参照=moving-target挙動が実際に発現したものですが、取り込まれた新revは正当でリスクのある内容変更はありません。
  • 変更点はproot-termuxのバージョンbump(unstable-2024-05-04 -> unstable-2026-02-20、参照先は公式 termux/proot rev ab2e3464...)のみで、悪意あるコード・不審なURL・fetch-and-execの追加はありません。

判定

新規の指摘はありません。前回の指摘(依存・セキュリティ観点のmoving-targetリスク、コメント文言)はいずれも著者が意図的と回答しスレッドがresolved済みです。増分は健全な依存更新であり、APPROVEとします。

Review metadata
  • Reviewed commit: a84ad25
  • PR: #1217
  • kyosei: 3.5.0
  • kyosei-action: 2.2.5
  • Claude Code: 2.1.174
  • Model: claude-opus-4-8
  • Execution: GitHub Actions (run)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Type: Bug Bug or Bug fixes Type: Dependencies Dependency issues or Changes to dependency files

Projects

Status: TODO

Development

Successfully merging this pull request may close these issues.

Nix-on-Droidでインストールが権限違反になるのを修正

1 participant