Howto apply a patch file to my Linux / UNIX source code

by on April 24, 2007 · 6 comments· LAST UPDATED April 24, 2007

in , ,

Q.I know that I can patch binary package using up2date or yum command in Linux but what I’m wondering is if there’s a way to apply a patch file to downloaded source code under Linux / UNIX like operating system source tree?

A. Linux and UNIX source software often comes with security and other patches. You can download them from Internet or project home page. There is a command called patch that apply a diff file or patch to an original source tree.

patch takes a patch file patchfile containing a difference listing produced by the diff program and applies those differences to one or more original files, producing patched versions. Normally the patched versions are put in place of the originals.

The following usage is most commonly used:
$ patch -p1 < {/path/to/patch/file}

To apply a patch, one could run the following command in a shell:
$ patch < /path/to/file

Patches can be undone, or reversed, with the '-R' option:
$ patch -R < /path/to/file

Above 3 are basic usage read the man page of patch command for more information and usage:
% man patch

TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 6 comments… read them below or add one }

1 naresh March 29, 2008 at 11:19 am

Linux and UNIX source software often comes with security and other patches. You can download them from Internet or project home page. There is a command called patch that apply a diff file or patch to an original source tree.

patch takes a patch file patchfile containing a difference listing produced by the diff program and applies those differences to one or more original files, producing patched versions.

Reply

2 naresh March 29, 2008 at 11:20 am

guess what I need is a link to the .patch file syntax so I know what it means and can apply the changes manually (unless there’s some other way to do it).

Reply

3 Manish May 22, 2011 at 5:08 am

Hi
I want to merge two patch file into one then how I can get that done without any complications and breaking the source.If I apply both separately then it fails.

Reply

4 Tony Browning July 16, 2011 at 1:24 pm

I have yet to see Wine Internet Explorer , wine-1.3.6 I can click on the white loading bar while new Adobe FlashPlayer 11beta for Internet Explorer (only) is trying to load it in my terminal thru (Wine Windows Program Loader) and Wine Internet Explorer will power-up, but its missing a few stuff. Adobe FP 11b not right one for it (because the accept license agreement tab not there) and wish someone could find right FP, maybe you or someday adobe will produce one? Check-it out and you will see! But the new Adobe Air 11b (IE only) loaded great.

Reply

5 Yogesh October 9, 2012 at 10:07 am

Just For Information:

-p0 in patch command –> entire file name
-p1 in patch command –> file name preceding first forward slash
-p2 in patch command –> file name preceding second forward slash
etc.
Example:
-p0 = /path/to/patch/file
-p1 = path/to/patch/file
-p2 = to/patch/file
-p3 = patch/file
-p4 = file

Reply

6 Francis February 18, 2013 at 11:01 am

Spent some time scratching my head over what -p0, -p1 is supposed to mean, and working out how to make patch < /path/to/file work (is /path/to/file supposed to be the file to patch, or the patch file? and how about the other file? You need 2 files to make a patch, why only one?).
Read the man file and finally encountered the simple syntax, which is what I would have guessed, for example:
patch fileTopatch.txt < myPatchFile.patch
or, an example with directories
patch foo/bar/fileTopatch.txt < patches/myPatchFile.patch
Just hopes this helps someone coming in on this page like I did half an hour ago.

Reply

Leave a Comment

Tagged as:

Previous Faq:

Next Faq: