テクノロジー · 実用ガイド
curl エラー23?ファイル・パイプ・ラッパーのどこが出力を拒否したか確認する
「Failure writing output to destination」はローカル書き込み失敗であり、サーバーやネットワーク障害の証明ではない。コマンドと終了状態を保存し、ファイル出力とパイプを分離して原因だけを直す。

curl の終了コード23は、受信データをローカルファイルへ書けなかったか、書き込みコールバックがエラーを返したことを示す。原因は、読み手の早期終了、存在しないパス、満杯のファイルシステム、別の一時ディレクトリを使うラッパーなど複数ある。
sudo、再インストール、stderr の抑制から始めない。完全なコマンドとパイプ各段の状態を保存し、同じURLを管理下のファイルへ一度書いて分岐する。
コマンドを保存し出力先を分類
完全なコマンド、curl --version、type -a curl、出力オプション、リダイレクト、パイプ各段、スクリプトの作業ディレクトリを保存する。
Bash では直後に ${PIPESTATUS[@]} を記録し、最後のコマンドの0が curl 23を隠さないようにする。必要なのが完全ファイルか早期一致かも決める。
管理下のファイルで一度分岐
同じURLと必要な認証・リダイレクトを保ち、head、grep、インストーラを外して所有するディレクトリの新規ファイルへ --output する。
成功なら元の消費者やラッパーを調べ、失敗なら23直前の警告を保存してパスを確認する。
実ファイルの出力先を監査
親ディレクトリ、対象ファイルシステムのブロックとinodeを確認し、同じユーザーで小さな一時ファイルを作る。
必要な親だけを作り、シンボリックリンク、読み取り専用マウント、bind mount、サンドボックス範囲を確認する。
パイプと早期終了を監査
head や grep -q は十分な入力で終了し、書き手は破断パイプを受け取る。curl は意図的か判断できない。
完全なペイロードが必要なら一時ファイルへ保存し検証後に消費者へ渡す。23を隠して切断ストリームを受け入れない。
ラッパーを確認し狭く修正
パッケージ版だけ失敗するなら実行されたcurl、制約、一時ディレクトリと /usr/bin/curl を比較し、他人のSnap事例だけで削除しない。
狭い修正後に一度再実行し、curlと消費者の状態、サイズ、提供済みチェックサムを確認し、不完全ファイルを除去する。
