Drupal upgrade easier

Tagged:
2012-05-03: Updated patch files to Drupal 6.26 and Drupal 7.14.

The standard procedure to upgrade Drupal to the latest release is to download it from drupal.org and follow the included UPGRADE.txt.

For administrators using the UNIX shell it may be easier using the attached patch files below instead of downloading and installing the newest complete Drupal release.

To patch your Drupal installation follow UPGRADING.txt up to "5. Remove all of the old files and directories from the Drupal installation directory." Go on using this commands:

  • cd DRUPAL-ROOT
  • Dry run: patch -p1 --dry-run < PATCHFILE
  • Patch: patch -p1 < PATCHFILE

Proceed with UPGRADING.txt from 8. Verify the new configuration file to make sure it has the latest and correct information.

(If you are impatient just run the 3 commands above. Be warned: this may break your Drupal installation so make sure to have a backup at hand.)

Warning

If you get errors like Reversed (or previously applied) patch detected or 1 out of 2 hunks FAILED while running the patch dry run (second command above) immediately interrupt patching and upgrade following the steps explained in UPGRADING.txt.

Use this patch files on your own responsibility. I don't guarantee the proper function of the patch files on Drupal installations other than my own.

Note: If the patch process gets interrupted and leaves a mix of patched and unpatched files you may re-run it by ignoring already patched files after eliminating the reason of the interruption:

  • patch -p1 -N < PATCHFILE

You may savely remove reject files created during that process:

  • find . -name "*.rej" | xargs rm

Patch files

Drupal 7

To verify the integrity of the patch files use this MD5 hashes:

MD5 (drupal-7.0-to-7.14.patch) = 9fa1dbcaa99f91d05a5ca2379147e471
MD5 (drupal-7.1-to-7.14.patch) = 9eafaa52d4f57703cccffc2055e27376
MD5 (drupal-7.2-to-7.14.patch) = a63612da7552afe562e99bc6354314c3
MD5 (drupal-7.3-to-7.14.patch) = 02cf1aceb63f4a6bb4791d462d54606a
MD5 (drupal-7.4-to-7.14.patch) = 3cb279fe25c793a9473f4d2471c3996f
MD5 (drupal-7.5-to-7.14.patch) = 1fce568e5857c0875ef0d97c751203ee
MD5 (drupal-7.6-to-7.14.patch) = 42d689cd6b025ae0f5e973028f76d12f
MD5 (drupal-7.7-to-7.14.patch) = a1a19e285b5c2350161f5c2c321fb948
MD5 (drupal-7.8-to-7.14.patch) = c98c6af1df7c31ef1f13f3656e8f3056
MD5 (drupal-7.9-to-7.14.patch) = d35c6cc604b05fd478df9484fc47369d
MD5 (drupal-7.10-to-7.14.patch) = af263e583925265850e996ad90dd4dbf
MD5 (drupal-7.11-to-7.14.patch) = d963283a82a8620cfeaa184cb0ac6eee
MD5 (drupal-7.12-to-7.14.patch) = dc58234c71bd9b6d98d213430bb44c92
MD5 (drupal-7.13-to-7.14.patch) = b2fda722f216acb5bf2b779872bd9924

Drupal 6

To verify the integrity of the patch files use this MD5 hashes:

MD5 (drupal-6.0-to-6.26.patch) = 3dc04ca0940001ee590410453d93bd68
MD5 (drupal-6.1-to-6.26.patch) = 9cefd4c54e87f1f0d3a7cfbd2ef199f6
MD5 (drupal-6.2-to-6.26.patch) = a17d3fdc2ff66a59bdf0b75435a2c565
MD5 (drupal-6.3-to-6.26.patch) = 255a50549b90af13a3ceedd3a1c3d880
MD5 (drupal-6.4-to-6.26.patch) = 7ce5061cf716ad623e0217db22ce0b34
MD5 (drupal-6.5-to-6.26.patch) = ee899d2ca3c1a2abcf5fd2f54642f870
MD5 (drupal-6.6-to-6.26.patch) = a3045fa2c8dee7e3c267fb46af949087
MD5 (drupal-6.7-to-6.26.patch) = 1d1b48aaa7a175cc4a0c4dbc2915b4f3
MD5 (drupal-6.8-to-6.26.patch) = c1b818ade0754583d1b2f1f743c029d7
MD5 (drupal-6.9-to-6.26.patch) = 927bda4debb7ddbabaa3c1e7acfe576c
MD5 (drupal-6.10-to-6.26.patch) = a1d9a2a252dfa9f2d4c7202c8e9e5308
MD5 (drupal-6.11-to-6.26.patch) = 0c9caf32f1a54b54504bd42b89ff161c
MD5 (drupal-6.12-to-6.26.patch) = 0814f18fc6247692c4eadce8e3721887
MD5 (drupal-6.13-to-6.26.patch) = 1b60fb5a3fec38a9342d6e144ca9e735
MD5 (drupal-6.14-to-6.26.patch) = 4bdf7a1fa44d07a9b199e6fb64069ddb
MD5 (drupal-6.15-to-6.26.patch) = e2e55701ff053f00c96f268d94ddee63
MD5 (drupal-6.16-to-6.26.patch) = abe589b1eeac050c33c22cbc1f058469
MD5 (drupal-6.17-to-6.26.patch) = 93d0715e3957bcdc329bc05c74dc44e5
MD5 (drupal-6.18-to-6.26.patch) = 4e63358a689b10c55739218b2fb04456
MD5 (drupal-6.19-to-6.26.patch) = 49f5e42a20d6027820ee344117ff1c8e
MD5 (drupal-6.20-to-6.26.patch) = f345a9844f2e7c43ee8b204790a0068c
MD5 (drupal-6.21-to-6.26.patch) = 1df25d7d29a31c590740171a78a59ab7
MD5 (drupal-6.22-to-6.26.patch) = 66ba83de5ea281b0467002a390505c5e
MD5 (drupal-6.23-to-6.26.patch) = db1e2d6a5b051fab275072c7b267a131
MD5 (drupal-6.24-to-6.26.patch) = 5ac200c609d5a55b02e0337ff2c5740e
MD5 (drupal-6.25-to-6.26.patch) = 6b97b654d96a788b31313a0b17412950

Drupal 5

To verify the integrity of the patch files use this MD5 hashes:

  MD5 (drupal-5.0-to-5.23.patch) = 13235f0c50caf2f0366403563053fbba
  MD5 (drupal-5.1-to-5.23.patch) = e2d5fc4ec6da1f1db2f83204eef03160
  MD5 (drupal-5.2-to-5.23.patch) = 13da34e36fb58f422c86c1574e26719b
  MD5 (drupal-5.3-to-5.23.patch) = dd826e692ab5e9e50ce55feac0b82673
  MD5 (drupal-5.4-to-5.23.patch) = e44a1f00549c5d39bbe359772db4ec9d
  MD5 (drupal-5.5-to-5.23.patch) = 4f06344f52f3c476e458f01c4925e987
  MD5 (drupal-5.6-to-5.23.patch) = bd31200144a9b716e4a1cad1930796f1
  MD5 (drupal-5.7-to-5.23.patch) = 598e037a8840d79509ea5c247dff975e
  MD5 (drupal-5.8-to-5.23.patch) = 2a53dedeb3b00c679ccb0dae44379789
  MD5 (drupal-5.9-to-5.23.patch) = 8dd63096cf7c5dd73e968f770f56301b
  MD5 (drupal-5.10-to-5.23.patch) = a6127a53d945659efde17a31e8037b79
  MD5 (drupal-5.11-to-5.23.patch) = 841eabce62cac99f98e77de733aeb7c6
  MD5 (drupal-5.12-to-5.23.patch) = ddb82f96ad7915e34111df4706237c11
  MD5 (drupal-5.13-to-5.23.patch) = 41bf265e25a1d6c9324e4f6c7b5ff067
  MD5 (drupal-5.14-to-5.23.patch) = 7c48dca7dd10533fe65c895d33c7be56
  MD5 (drupal-5.15-to-5.23.patch) = ae1a31e80c3b24dfa1710adecbd1cce9
  MD5 (drupal-5.16-to-5.23.patch) = 72e25e1c680b75cbc1f8b303c4d97cba
  MD5 (drupal-5.17-to-5.23.patch) = 0fee19e0808ec863284618ce8f506d6c
  MD5 (drupal-5.18-to-5.23.patch) = 997f35d8372277203e5129e9bc684f81
  MD5 (drupal-5.19-to-5.23.patch) = 6189d7c3c3139647dfd519b727d8f12f
  MD5 (drupal-5.20-to-5.23.patch) = 33d48157e036411fd336a5d9023c8644
  MD5 (drupal-5.21-to-5.23.patch) = 86cb8be7e01f576177765d670332e4fb
  MD5 (drupal-5.22-to-5.23.patch) = 94488c667c2c68d48438d81129e3edca

Upgrade major releases of Drupal

Experimental

Below are patch files to upgrade major releases of Drupal. Please try with caution.

To verify the integrity of the patch files use this MD5 hashes:

MD5 (drupal-5.23-to-6.26.patch) = 1b3f9a5a2d5defad8dd21e4afe4918ba
MD5 (drupal-6.26-to-7.14.patch) = 1c46da711645b3ea146309737d7168f9

Thank you so much for this page. I used to hate the "Update of the week" from drupal. With these patches it is a SNAP!

JN

Thank you for your great job. I have used the drupal-5.14-to-5.15.patch on a multi-site installation and it worked without any errors.

Thanks a lot dude! With your work updating drupal it really takes just only a second! Thanks and thanks again :)

Thank you very very much.Worked without a hitch.

Once more, thank you so much for this page! Using these patches has really saved me lots of time when upgrading our system to 6.12.

I just upgraded three of my drupal sites using your patch files, and for once, they went smoothly, and QUICKLY!

Thank you!

Thank you for providing all this useful stuff on your page.

... runs like Schmidts cat!!!

Hi,

I have a windows based laptop from which I am going to try to upgrade my site which resides on a linux box. I currently use 6.6 and would like to upgrade to 6.14.

Can someone here please give me a step-by-step. I have been regretting not knowing enough and installing drupal. And upgradations are the only reasons. Please help.
thanks
Navs

Nice work, really nice work.

You saved me hours every upgrade!!

Im afraid to ask you, but did you check the 6.9 to 6.14 patch? Because im getting some errors and, since before it went smooth all the times, im wondering if maybe you upload a wrong file (i do it all the time ;) ).

Thanks again

Tried it with a fresh 6.9 and the patch went through without a hitch. May be you did some changes to your 6.9 files in the past?

I favor quick and simple approaches, and eventually gave yours a try with 6.14-to-6.15. For me, this is definitely the way to go. Thank you very much indeed!

Thanks for the great patch set - the update was smooth!

...a lot of them. I was choosing a CMS, and I was thinking about dropping drupal just for the upgrade complexity (hey, in wordpress is just clicking a button...). You saved the day.

This is *the* recommended way of upgrading Drupal! I just upgraded from 6.15 to 6.16 and it worked flawlessly and was over in a couple of methods. It's so easy compared to the method suggested in upgrade.txt (download tarball, remove all old files, unzip tarball... no thanks!).

The instructions are pretty simply but because they reference upgrade.txt I thought I would share the entire process here as a quick overview (please make sure you still read upgrade.txt and instructions on this page):
1. backup drupal db
2. backup drupal root directory and sub directories
3. Make sure you are logged in as admin (uid=1)
4. Place site in maintainece mode, /admin/settings/site-maintenance
5. If using a custom or contributed theme, switch to a core theme, such as Garland or Bluemarine.
6. get latest patch file from http://fuerstnet.de/en/drupal-upgrade-easier
6. cd your-drupal-directory
7. Dry run: patch -p1 --dry-run < patchfile
8. Patch: patch -p1 < patch-file
9. Verify the new configuration file to make sure it has correct information. sites/default/settings.php
10. Run update.php by visiting /update.php
11. enable usual theme
12. Finally, return your site to "Online" mode so your visitors may resume

That's it! Thanks Bernhard Fürst - you're a champ!

I'm seeing...

[...]$ patch -p1 --dry-run < drupal-6.14-to-6.16.patch
patching file .htaccess
Hunk #1 FAILED at 3.
Hunk #2 FAILED at 66.
Hunk #3 FAILED at 113.
3 out of 3 hunks FAILED -- saving rejects to file .htaccess.rej

...

can't find file to patch at input line 2288
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|diff -Naur drupal-6.14/modules/node/node.info drupal-6.16/modules/node/node.info
|--- drupal-6.14/modules/node/node.info 2009-09-16 21:40:27.000000000 +0200
|+++ drupal-6.16/modules/node/node.info 2010-03-04 01:20:08.000000000 +0100

--

Any ideas on how to solve?

I tried the drupal-6.14-to-6.16.patch file with a fresh Drupal 6.14 - no problem. Run the patch command from within the root of your Drupal installation. Also make sure your Drupal version is at 6.14 (check the included CHANGELOG.txt). Did you modify the Drupal core files?

I wasn't able to successfully patch 6.14 to 6.16 so I just did it the old-fashioned way. :)

Thanks, anyway. :)

I tried to diff a drupal installation, when i discover your out-of-the-box-working ones.
Nice job !

I love you for sharing this. A much more reasonable way for minor ugprades

Thanks much for all the previous patches. They have worked well. Are you coming out with the patch for 6.17 soon, or should I roll my own instead?

Must have missed that. It is online now - thanks for pointing me to it.

Is this correct? It implies, I think, that you have left the 14->16 patch file somewhere it shouldn't be when you did the diff.

diff -Naur drupal-6.14/drupal-6.14-to-6.16.patch drupal-6.17/drupal-6.14-to-6.16.patch
--- drupal-6.14/drupal-6.14-to-6.16.patch 2010-03-04 09:22:40.000000000 +0100
+++ drupal-6.17/drupal-6.14-to-6.16.patch 1970-01-01 01:00:00.000000000 +0100

Patch complains it's going to remove it, declaring at the same time it doesn't exist!

Dick

You are right. Corrected patch file is online now. Only drupal-6.14-to-6.17.patch was affected.

Awesome job friend :) This is a very convenient way to update. I've been using Drush to my core updates, but it involves a lot more directory/file-moving (danger!). I use git, so if patches break, it's no biggie. Thanks!

I just used this upgrade and was just reminded how easy and straightforward it is.
Great work, dude, a lot of us can vouch that this is pretty important code you are working on :)

Hi, first of all, THANK YOU VERY MUCH for this one! It's so smooth!
A question for you: When the patch for drupal 6.19 to 6.20 will be released ?

Thanks in advance for your time

You provide a great service!!!

Hi there, thanks for providing these patches! This patch update method is definitely the easiest for me.

However, I had a bit of an issue with my 6.19 -> 6.20 upgrade. The dry run didn't give me any significant errors that I couldn't work around. So went ahead and applied the patch. However, the patch process got up to this point and failed:


...
patching file modules/user/user.module
patching file robots.txt
patching file sites/default/default.settings.php
patch: **** Can't remove file sites/default/default.settings.php : Permission denied

The problem is that it failed and stopped, leaving me with a half patched system. Fortunately the only remaining items were a few default theme folders, which I manually copied over to my root. But are there any workarounds so that this doesn't happen again?

Thanks a lot!

The message Permission denied does mean you do not have write access to the file sites/default/default.settings.php. Make sure, you either own it and it is writable by you or temporarily (and as the user who owns it) set it to writable by anyone before patching.

Thanks for the reply Bernhard.

Yes, this file was not writeable. I guess I was just wondering if there is any way to make the process a bit more failsafe, so that it continues patching the rest of the files even if there is an error.

I had the same problem with a single site configuration (where the settings.php is in sites/default and not in sites/example.com). I was wondering because with the --dry-run option I didn't get any error.

I guess, that the folder containing settings.php will be set to read only by the drupal installation script.

So you may run chmod u+w sites/default/ in drupal root before patching drupal and chmod u-w sites/default/ after patching.

The standard upgrade instructions made me cry myself to sleep at night, but this patch file is absolutely amazing. I have my site running on a new core after only 10 minutes.

Thank you so much! :D

If you use CentOS or Redhat with selinux, be sure to turn selinux either off or to permissive mode before patching.

Thanks for the patch,

Hi! I just patched Drupal to 6.20 and want to thank you - again! - for this great tool. I was wondering if you have any plans of releasing a patch for drupal 6.20 to 7.0? That would mean a lot to use who manage drupal on a daily basis. Thank you again.

I created 2 patch files (see above):

  • drupal-5.23-to-6.22.patch
  • drupal-6.22-to-7.2.patch

When testing against the corresponding lower version it did look 100% good. Please try with caution anyway!

patch: **** strip count l is not a number

Checked the hashtag, and it matches.

I'll be honest, I tried patching while I was tired, this is really a no no. I've used quite a few of these patches before. The 6.22 to 7.4 took a wrong turn. I have a multisite install and I had all sites in off-line mode but I did neglect to set default themes. My default.settings.php file was unwriteable as well. Is there a logical way to resolve my issue ?

Currently I'm receiving the following errors:
Notice: Use of undefined constant DRUPAL_ROOT - assumed 'DRUPAL_ROOT' in /home1/.../public_html/includes/bootstrap.inc on line 1971

Warning: require_once(DRUPAL_ROOT../includes/errors.inc) [function.require-once]: failed to open stream: No such file or directory in /home1/.../public_html/includes/bootstrap.inc on line 1971

Fatal error: require_once() [function.require]: Failed opening required 'DRUPAL_ROOT../includes/errors.inc' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home1/.../public_html/includes/bootstrap.inc on line 1971

At my tests (vanilla 6.22 patched using drupal-6.22-to-7.4.patch) the default.settings.php is writable.

For the DRUPAL_ROOT problem try searching drupal.org, i.e. http://drupal.org/node/1009966. Looks like a 6.x -> 7.x upgrading issue.

I've been reading all that info and haven't been able to get a good handle on where to set the define("DRUPAL_ROOT", since I dont have an external script, would I make this change in the patch and run it again ?

I indeed pointed you to something not helpful for your situation, sorry! I guess something else is messed up in your setup. You rather should follow the standard upgrade path as described in drupal-7.4/UPGRADE.txt than using the patch file.

You are doing an awesome job! I am using your patches all the time. Today was the first time when I got an error when doing a dry run.

When upgrading 7.0 to 7.2, I get this:

Patching file misc/watchdog-error.png using Plan A...
patch: **** malformed patch at line 6163: diff -Naur drupal-7.0/misc/watchdog-ok.png drupal-7.2/misc/watchdog-ok.png

Thanks in advance!

Got no error when throwing the patch against a vanilla Drupal 7.0 as described above. Please make sure the patch file you downloaded does not changed somehow at your machine: check the MD5 hash using `md5` or `md5sum`.

I downloaded vanilla Drupal 7.0, extracted it and ran the patch against it with no problems. So something else was fishy with my install. My bad. Thank you!

Thank you very much. This is AWESOME!!! this way its also easy to maintain any core patches as i dont have to reapply them!

Thanks again for your great work

Thank you for this amazing job!

can i use the above described approach to upgrade my drupal multisites from drupl 6.20 to 6.22? if can't, how should i do this? thanks.

Patching Drupal will upgrade all Sites in your sites/ directory. Make sure you run update.php for every site after upgrading.

Any chance of getting a 7.7 to 7.8 update? I find that this method of updating drupal sites more convenient compared to their manual download upgrade.

Thanks - must have missed that release.