タグ付けされた質問 「patch」

パッチは、たとえばバグを修正したり機能を追加したりするために、ソースコードパッケージを変更するために使用されるファイルです。

2
ddを使用したバイナリのパッチ
私はこの引用を(以下)数回読んでいますが、最近ここにありますが、コンパイラだけでなくあらゆるものddにパッチを適用する方法に絶えず困惑しています: 私が30年前に学校で使用したUnixシステムは、RAMとディスク容量が非常に限られていた。特に、/usr/tmpファイルシステムは非常に小さいため、誰かが大きなプログラムをコンパイルしようとすると問題が発生しました。もちろん、学生はとにかく「大規模なプログラム」を書くことになっていない。大規模なプログラムは通常、「どこか」からコピーされたソースコードでした。私たちの多くは、コピー/usr/bin/ccし/home/<myname>/ccて、使用dd、使用するバイナリパッチを適用する/tmp代わりにする/usr/tmp大きかったです。もちろん、これは問題を悪化させただけです。これらのコピーが占めるディスクスペースは当時重要でしたが、現在は/tmp定期的にいっぱいになり、他のユーザーがファイルを編集することさえできなくなりました。何が起こったのかを見つけた後、システム管理者はchmod go-r /bin/* /usr/bin/* 問題を「修正」し、Cコンパイラのすべてのコピーを削除しました。 (エンファシス鉱山) ddマン・ページには、パッチを適用し、このとにかくを行うために再目的とすることができないと思うについては何も言いません。 バイナリには本当にパッチを適用できddますか?これに歴史的な意義はありますか?
32 dd  history  patch 

1
作業ディレクトリから-p0パッチを適用するにはどうすればよいですか?
使用したい絶対パスのパッチがあります。つまり、最初の数行は次のとおりです。 --- /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml 2014-10-10 18:47:23.000000000 +1100 +++ /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod 2014-11-11 09:44:17.786200477 +1100 ただし、ルートディレクトリにいない限り失敗します。 ~$ cd ~$ sudo patch -i /tmp/fix_kde_icons.patch -p0 Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml Ignoring potentially dangerous file name /usr/share/apps/plasma/packages/org.kde.pager/contents/ui/main.qml.mod can't find file to patch at input line 3 Perhaps you used the wrong -p or --strip option? …
26 patch 

3
「Hunk#1 FAILED at 1(異なる行末)」メッセージを修正する方法
コマンドでパッチを作成しようとしています git diff sourcefile >/var/lib/laymab/overlay/category/ebuild/files/thepatch.patch パッチを適用すると、 $ patch -v GNU patch 2.7.5 $ /usr/bin/patch -p1 </var/lib/laymab/overlay/category/ebuild/files/thepatch.patch patching file sourcefile Hunk #1 FAILED at 1 (different line endings). Hunk #2 FAILED at 23 (different line endings). Hunk #3 FAILED at 47 (different line endings). Hunk #4 FAILED at 65 (different line …
22 git  diff  newlines  patch 


2
Linuxカーネルのパッチの目的は何ですか?
各Linuxカーネルバージョンには、ダウンロード可能なパッチファイルがあります。たとえば、linux-3.12.22には対応するpatch-3.12.22があります。 そのパッチの目的は何ですか?コンパイルする前に常に対応するカーネルにパッチを適用するか、パッチが一致するカーネル(この場合、3.12.22)で以前のカーネルバージョンを最新にするには?

3
正規表現に基づいてdiff / patchの関連するハンクのみを表示します
git log -G<regex> -p指定されたパターンに一致する変更をコードベースの履歴で検索するための素晴らしいツールです。ただし、ほとんど無関係なハンクの海で、diff / patch出力で関連するハンクを見つけるのは圧倒的です。 もちろんgit log、元の文字列/正規表現の出力を検索することは可能ですが、それは視覚的なノイズと多くの無関係な変更の気を散らすものを減らすのにほとんど役立ちません。 を読むとgit log、があります--pickaxe-all。これは、私が望むものとは正反対です。出力を(チェンジセット全体に)広げる一方で、(特定の塊に)制限したいのです。 基本的に、私は差分/パッチを個々のハンクに「インテリジェントに」解析し、各ハンクに対して検索を実行し(変更された行のみを対象とする)、一致しないハンクを破棄し、それらを出力する方法を探していますそうする。 説明したようなツールは存在しますか?マッチした/影響を受けたハンクを取得するためのより良いアプローチはありますか? 私がやったいくつかの初期調査... grepdiff / patchの出力が可能で、コンテキストオプションの値を動的にすると(たとえば、行数ではなく正規表現を使用して)十分な場合があります。しかしgrep、そのように正確に構築されているわけではありません(また、必ずしもその機能を要求しているわけでもありません)。 patchutilsスイートを見つけましたが、当初は自分のニーズに合っているように聞こえました。しかし、そのmanページを読んだ後、ツールは正規表現に基づいて一致するハンクを処理していないようです。(ただし、ハンクのリストを受け入れることができます...) 私はついにsplitpatch.rbに出会いました。これはパッチの解析をうまく処理しているようですが、経由stdinでパッチの読み込みを処理するために大幅に増強する必要があります。
20 git  diff  patch 


5
cpを使用する方が簡単な場合にdiff / patchを使用する理由
diff -u file1.txt file2.txt > patchfile patchfile1.txtをfile2.txtとまったく同じように変換するための命令で構成されるパッチファイルを作成します cp代わりにコマンドを使用してこれを行うことはできませんか?これは、ファイルが大きすぎて、この方法で帯域幅を節約できるネットワーク経由で転送する必要がある場合に役立つと想像できます。他のシナリオで有利になるdiff / patchを使用する他の方法はありますか?
19 shell  cp  diff  patch 

7
patchとdiffを使用して2つのファイルをマージし、競合を自動的に解決する方法
diffとパッチについて読んだことがありますが、必要なものを適用する方法がわかりません。私はかなり簡単だと思うので、私の問題を示すためにこれらの2つのファイルを取ります: a.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#AAAAAA</color> <color name="not_in_b_too">#AAAAAA</color> </resources> b.xml <resources> <color name="same_in_b">#AAABBB</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_a">#AAAAAA</color> </resources> 次のような出力が必要です(順序は関係ありません)。 <resources> <color name="same_in_b">#AAABBB</color> <color name="not_in_b">#AAAAAA</color> <color name="in_b_but_different_val">#BBBBBB</color> <color name="not_in_b_too">#AAAAAA</color> <color name="not_in_a">#AAAAAA</color> </resources> マージには、次の単純なルールに沿ったすべての行が含まれている必要があります。 ファイルの1つにのみある任意の行 行の名前タグが同じで値が異なる場合、2番目の値を取得します 私はこのタスクをbashスクリプト内に適用したいので、別のプログラムがより適している場合は、diffとパッチを完全に行う必要はありません


4
メーリングリストからLinuxカーネルパッチセットを入手するにはどうすればよいですか?
私はlinux-kernelメーリングリストに登録していませんが、数週間前に投稿された一連のパッチを入手して、テストのためにカーネルに適用したいと思います。私はパッチの適用、ビルドなどに精通しています。私の質問は、このパッチセットのコピーを取得する最良の方法は何ですか?私が知っているGitリポジトリには適用されず、議論のためにメーリングリストに投稿されたばかりです。 linux-kernelメーリングリストをアーカイブしているサイトをいくつか見つけて、そこにパッチのセットを見ることができますが、これらのサイトのどれも生の電子メールをダウンロードする方法を見つけることができません。 「または「パッチ」など。Webブラウザからコンテンツをコピー/貼り付けするだけでは、空白の違いなどによりあまりうまくいかないようです。 これをどのように管理しますか?

1
これはパッチを作成する良い方法ですか?
gcc公式リリースと比較する特定のブランチからパッチを作成したいと思います。そのため、安定版リリースからtarballを展開すると、パッチを適用し、その特定のブランチにあったものと同等のものを取得できます。 パッチを作成する必要があるのはこれが初めてなので、これを行うのは初めてであり、ソフトウェアの非常に重要な部分について話しているので、私の主な関心事はオプションと解析を正しくすることです diff -crB GccStable GccGit > /tmp/fromStabletoBranch.patch これで十分ですか?それを行う最良の方法ですか?
15 diff  patch 


2
パッチを適用済みのハンクを無視する方法
コードに適用しようとしている非常に大きなパッチファイルがあります。問題は、私のパッチの変更の一部がすでにコードに存在していることです。既に適用されている変更をパッチが正常に無視するようにする方法はありますか? -Nオプションは、私がやりたいことはありません。既に適用されているハンクが検出されると、拒否ファイルが生成され、そのファイルにはそれ以上ハンクが適用されません。その塊を無視して、パッチの残りを適用し続けてほしい。.rejファイルを生成するのは、ハンクを適用できず、既に適用されていないように見える場合だけです。 これを行う方法はありますか?
14 patch 

2
パッチを使用してwgetソースに差分を適用しているときの「不正なパッチ」エラー
このパッチを適用したいので、 "Index:src / options.h"で始まり "+ @ item"で終わるコードをコピーし、wgetのソースコードフォルダーに作成された新しいファイルに入れました。それから私はしました: $ patch -p0 < name_of_patch (Patch is indented 1 space.) patching file src/options.h patch: **** malformed patch at line 6: char **excludes; /* List of excluded FTP directories. */ これをどのように適用するべきですか? これは私が作成したファイルの内容です: Index: src/options.h =================================================================== --- src/options.h (revision 2276) +++ src/options.h (working copy) @@ …
10 wget  patch 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.