過去問ドリル

LinuCレベル2 システムの保守と運用管理 問29

システムの保守と運用管理/makeによるソースコードからのビルドとインストール

ソースツリーの最上位ディレクトリで「patch -p1 < fix.patch」を実行した。パッチ内のファイル名が「a/src/main.c」のとき、-p1の働きとして適切なものはどれか。

当サイトのオリジナル問題(LinuCレベル2の出題範囲「システムの保守と運用管理」に対応。実際の試験問題ではありません)

正解:C

解説

patchの-pオプションは、パッチに書かれたファイル名の先頭から、指定した数だけディレクトリの階層を取り除いて対象ファイルを探す指定です。diffやgitで作ったパッチでは「a/src/main.c」「b/src/main.c」のように余分な階層が付いていることが多く、ソースツリーの最上位で-p1を指定すると「src/main.c」として正しく当てられます。実際に書き換えずに適用できるかを確認したい場合は--dry-run、バックアップを残したい場合は-bを使います。

選択肢ごとの解説

  • A誤り。-pは適用するファイルの数を指定するものではなく、パッチ内の全ファイルが対象になります。
  • B誤り。適用せずに結果だけを確認するのは--dry-runオプションの働きです。
  • C正しい。-p1はファイル名の先頭から1階層(a/)を取り除き、src/main.cとして対象を探します。
  • D誤り。適用前のファイルのバックアップ(.orig)を作成するのは-bオプションの働きです。
LinuCレベル2の問題を演習モードで解く