Linuxでpatchを当てた事がなく、Solarisでのイメージしかないのですが、Solarisでは
# patchadd パッチファイル だったと思います。
linuxだとカレントディレクトリにパッチがあった場合、
# patch < パッチファイル では実行できないのでしょうか。
調べて見ると「-p」を指定しており、
-p0 パス名を修正しない (例 /tmp/src/patch)
-p1 最初の「/」を削除する (例 tmp/src/patch)
-p2 次のディレクトリまで削除する (例 src/patch)
とありますが意味がよくわかりません。
お手数ですがご教授頂けると助かります。
No.1ベストアンサー
- 回答日時:
パッチファイルはどのディレクトリに対してパッチを当てるかという情報を持っています。
パッチファイルの実体はテキストファイルですので、中身を見るとこんな感じで書いてある箇所があります。
--- /old/src/test.c
+++ /tmp/src/test.c
このパッチを/home/hoge/src以下に当てようとした場合、
以下のようにコマンドを打ちます。
(パッチファイルはあらかじめコピーしておいたとして)
# cd /home/hoge
# patch -p2 < test.patch
ここで-p2としたのは、パッチファイルは/tmp/src/test.cを前提をして作られていたからです。
/home/hoge/srcに対してこのパッチを当てるには、
共通するディレクトリ位置srcに合わせる必要があったので、
-p2を指定して、2段分のディレクトリ指定を取り除いたのです。
(/tmp/を取り除いてパッチを適用することになります)
ちょっと分かりづらいところなんですが、
自分でパッチファイルを作るようになると意外と理解が早いです。
パッチファイルの実体はdiffというコマンドで作成した
差分ファイルと呼ばれるものです。
ご参考までに。
No.2
- 回答日時:
たぶん「Solaris で patchadd を使ってあてるパッチ」と「Linux で patch を使ってあてるパッチ」とは全く違うものだと考えた方がいいと思う.
で, 「カレントディレクトリにパッチがある場合」だけど, それでパッチが当たることもあるし当たらないこともある. パッチファイルの中に「どのファイルに対してパッチを当てるのか」が書いてあるんだけど, そのパス名の解釈方法を変えるのが -p というオプションです. 可能ならそのパッチファイルの先頭の数行を出してもらえると説明が簡単.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux JSLinuxについて。 Linuxのこの手順のプログラミングは合っているでしょうか。 ①ホームディ 2 2022/06/20 15:33
- その他(プログラミング・Web制作) 図に示す階層構造で,現在のディレクトリ(カレントディレクトリという)が*印のディレクトリであるとき, 2 2022/11/16 10:55
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- その他(開発・運用・管理) WindowsからSSHでサーバーにあるファイルをダウンロードできない…。 3 2022/04/24 11:08
- UNIX・Linux redhat enterprise Linuxなどの脆弱性の修正が出たときの「エラッタ」というものが 2 2022/04/15 13:44
- UNIX・Linux shellscript内のコマンドを、sudo(toor)として実行 2 2022/09/23 15:05
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- UNIX・Linux ファイル・フォルダーの削除方法 2 2022/05/19 14:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
同期センターのマークが出てま...
-
コマンドプロンプトによるフォ...
-
Excellにて→ファイルエラー:デ...
-
ファイルの先頭行を全て削除したい
-
バッチファイルで変数の中身を...
-
onedriveの中身を削除したらパ...
-
教えてください!困ってます。
-
emlをtxtに変換するには?
-
teratrermを使ったデータの送信...
-
VScodeでjarファイルを開く方法
-
macのdmgファイル(動画)をMP4...
-
ファイルの単位
-
ショートカットアイコンと、元...
-
Mac bookで録画ファイル.movを...
-
Windows10 フォルダ内の自動並...
-
バッチファイルからタスクスケ...
-
共有フォルダ内のファイル使用...
-
外字ファイル、eudc.tte と e...
-
BAKファイルを非表示にする方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Winmerge ファイルの中身は同じ...
-
onedriveの中身を削除したらパ...
-
同期センターのマークが出てま...
-
バッチファイルで変数の中身を...
-
ファイルの先頭行を全て削除したい
-
Windows10 フォルダ内の自動並...
-
教えてください!困ってます。
-
コマンドプロンプトによるフォ...
-
emlをtxtに変換するには?
-
ファイルの単位
-
mac ファイルの詳細情報を編集...
-
office365 ファイルを削除したい
-
Excellにて→ファイルエラー:デ...
-
macのdmgファイル(動画)をMP4...
-
クラリスワークスのファイルを...
-
mrl→midファイルへ
-
Windows11 ゴミ箱 ファイルの取...
-
会社のTeamsのことで相談です。...
-
フォルダ内の一覧を印刷するには?
-
exFATに欠点はありますか?
おすすめ情報