MediaWiki/Upgrade/REL1 25 to REL1 26

From Freephile Wiki

Last updated in 2008, it was time to revisit this page and make some new notes. Even though the README, UPGRADE and online help are very detailed, I find it helpful to note my personal preferences, observations, and clarifications. Still, for the do-it-yourself types, the official docs are the best resource. If you need professional help with MediaWiki, then contact Greg Rundlett

The process obviously started with downloading the source from the web. However, since the wikipedia project uses the continuous integration method of development (meaning they always run their own latest code), I follow the same practice and run off either the latest release branch or master from the git repository. So, I simply did a composer update --no-dev && git fetch to prepare for an upgrade.

Consult the release notes[edit | edit source]

Before doing anything, stop and consult the release notes supplied with the new version of the software. This detail bug fixes, new features and functionality, and any particular points that may need to be noted during the upgrade procedure. There was a lot here, although nothing that impacted the function of my installation.

Backup first[edit | edit source]

I copied my filesystem as a backup and testing ground.

For the database, I have a backup script that in addition to timed backups, will create a spot backup on demand: ~/bin/backup.db.sh mediawiki

Perform the file upgrade[edit | edit source]

For extensions that support the new extension registration mechanism you can change the old 'requires' with a call to the 'wfLoadExtension' function require_once\( *"\$IP/extensions/.*/([^/]*)" * \); wfLoadExtension( '\1' );

With the software downloaded (git fetch), and a check to see if you've modified anything (git status), you can simply switch the branch you're on git checkout -b REL1_26 origin/REL1_26 and then do the database upgrade.

You must preserve:

  1. The LocalSettings.php file
  2. DatabaseSettings file, where it exists
  3. The extensions directory
  4. The images directory

If using an alternative uploads directory, preserve this; and if using custom skins, preserve these too. The core code is now updated.

Perform the database upgrade[edit | edit source]

From the command line, browse to the maintenance directory and run the update.php script to check and update the schema. This will insert missing tables, update existing tables, and move data around as needed. In most cases, this is successful and nothing further needs to be done.

cd wiki/maintenance/
ls
php -q ./update.php

Check configuration settings[edit | edit source]

The names of configuration variables, and their default values and purposes, can change between release branches, e.g. $wgDisableUploads in 1.4 is replaced with $wgEnableUploads in later versions. When upgrading, consult the release notes to check for configuration changes which would alter the expected behavior of MediaWiki.

Change the wiki pointer[edit | edit source]

In order to quickly upgrade, revert or take the site offline, you can simply use a symbolic link and point that to the correct target folder. However, note that this can present problems for your extensions when $IP is not defined correctly due to the nature of symbolic links.

Test[edit | edit source]

It makes sense to test your wiki immediately following any kind of maintenance procedure, and especially after upgrading; check that page views and edits work normally and that special pages continue to function, etc. and correct errors and quirks which reveal themselves.

  1. User:Freephile/Books/Organic_Gardening to test Collections
  2. Tooltips to test Semantic MediaWiki info parser function
  3. Terminology to test the Lingo extension
  4. Visual editor
  5. Svg for the SVG-Edit extension
  6. Cloning for the PDF Handler extension (show pdf file as thumbnail)
  7. Categories for the Wiki Category Tag Cloud extension
  8. Template:Categorypage or Category:Wiki for the Category Tree extension
  9. Special:ReplaceText for the Replace Text extension. Note that this extension can use regex like <abbr title="[^"]+">(.*)<\/abbr> where you can strip out tags and replace with $1

Extension and Skin Upgrades[edit | edit source]

Your MediaWiki site will contain many extensions to provide extra functionality. You also have one or more skins installed. Those need to be upgraded independently since they are not distributed with the core (although many are bundled if you download a tarball). The Special:Version page will list the ones in use, so go through the list one at a time and check for upgrades.

For those extensions available in git you can fetch the latest updates to the code with something like

release=REL1_26
# work within the extensions directory so as not to conflict with the main composer.json
cd extensions
base=`pwd`; 
for ext in `find . -type d -name .git | sed 's/.git//' `; do 
  cd $ext; 
  echo "fetching $ext"; 
  git fetch; 
  # checkout the new release branch you want
  git checkout $release;
  # and update dependencies if project uses composer
  if [ -f "./composer.json" ]; then
    composer update;
  fi
  cd $base; 
done

Also, if you don't even know whether there are submodules in use, you can search for those by looking for .gitmodules or .git files find . -type f -name .git And if you want to know which extensions may be using composer, you can check find . -maxdepth 2 -name composer.json |xargs grep -l '"require":'

Bad Behavior[edit | edit source]

  • not in gerrit
  • added a whitelist.ini file for bad-behavior to avoid the file not found error
  • upgraded bad-behavior 2.2.13 to 2.2.17
  • deleted all the log table entries because they were from 2014

Bootstrap[edit | edit source]

  • I chose to install the Bootstrap extension, which will allow me to use skins based on Bootstrap. E.g. Chameleon
composer require "mediawiki/bootstrap:~1.0"
composer update

Category Tree[edit | edit source]

CategoryTree

Cite[edit | edit source]

Citations

Collections[edit | edit source]

Collections

  • The new config does save books, and renders to pdf (using pediapress) but the output needs some work to be truly professional looking.
  • If there is an error rendering PDFs, try again. It's probably due to the low-capacity public server of PediaPress

Delete Batch[edit | edit source]

  • upgraded to 1.5.0 (3870998) 2015-09-29T17:32:00 from 1.4 (non-git)

Delete

DynamicPageList (third party)[edit | edit source]

  • upgraded to 2.3.0 (fa2f83b) 2015-06-22T10:40:33

Dynamic content

Gadgets[edit | edit source]

Gadgets

  • upgraded to REL1_26 (58f236d) 2015-11-23T16:22:00 from (a775200) 2014-01-26T12:22:15
  • compatible with wfLoadExtension

Html2Wiki[edit | edit source]

Html2Wiki

  • disabled temporarily
  • re-enabled and tested

Interwiki[edit | edit source]

Interwiki links

  • bundled
  • upgraded to 3.0 20140719 (6ed9dc3) 2015-11-23T16:39:17 from 2.2 20120425 (83fa077) 2013-03-31T14:51:05
  • Since the freephile wiki is served in secure mode (https), and all my interwiki links were hardcoded to 'http', I'd be unfairly dumping visitors out to the non-encrypted web. Interwiki since v1.18+ supports Protocol Relative URLs (PRURLs), so I updated my interwiki table converting all links to use // It's not possible to browse the freephile wiki in plain http mode (because our server is configured to always redirect to secure mode), so you can't really link off to an insecure website via the interwiki table now. But, if we ever decide to serve plain http, then our interwiki links will maintain your insecurity.
SELECT * FROM mediawiki.interwiki;
UPDATE mediawiki.interwiki
SET iw_url = REPLACE(iw_url, 'http://', '//')
LIMIT 200;

Lingo[edit | edit source]

  • The Lingo extension was installed via Composer
  • Creates new Terminology page

Lockdown[edit | edit source]

  • upgraded to REL1_26 (c0f9986) 2015-09-29T17:56:04 from (db7023e) 2012-12-31T16:48:02
  • still spews a million PHP Notices

Nuke[edit | edit source]

Delete

  • Installed v1.2.0 (5763d10) 2015-11-23T16:46:18
  • There were several broken Html2wiki import images which I wanted to use this extension to remove from the wiki. I still had to delete them by hand, but at least the 'recent changes' view on the main page is now fixed. The Nuke extension is still a useful tool

Page Schemas[edit | edit source]

was at 0.4.5 (c60b6fc) 2015-06-22T14:38:11 from Semantic Bundle. Disabled

Parser Functions[edit | edit source]

Parser functions

  • (bundled)
  • upgraded to 1.6.0 (81eca7c) 2015-11-23T17:18:03 from 1.6.0 (738403b) 2014-10-11T18:09:18

Parsoid[edit | edit source]

deactivated 0.2.0 (b23043f) 2014-10-11T18:09:35

PDF Handler[edit | edit source]

PDF

  • upgraded to (6d8477d) 2015-11-23T17:19:41 from (f7044ec) 2014-01-21T20:50:35
  • installed poppler-utils on Ubuntu
which gs convert pdfinfo # tells if you have the right dependencies
  • added link to example test page


Scribunto[edit | edit source]

Lua

  • from 184a649) 2013-10-23T12:23:02


Semantic Bundle[edit | edit source]

  • upgraded to 1.9.2 (97c0b0a) 2014-01-03T15:33:07 from 1.8.0.5.3 (97c0b0a) 2014-01-03T15:33:07
  • but then decided to use straight SMW with Composer

Semantic MediaWiki[edit | edit source]

Metadata

  • upgraded from 1.8.0.5 (fbd7570) 2013-04-06T20:44:28 to 2.3.1
  • deleted the now unused PageSchemas and SemanticBundle directories.
  • Gedit.svg todo Need to find out whether I should delete or do anything with the following which were bundled.
    • ./SemanticCompoundQueries
    • ./SemanticDrilldown
    • ./SemanticForms
    • ./SemanticFormsInputs
    • ./SemanticImageInput
    • ./SemanticInternalObjects
    • ./SemanticMaps
    • ./SemanticResultFormats
    • ./SemanticTasks
    • ./SemanticWatchlist
  • When you look at the composer.json file, it recommends semantic-forms and semantic-result-formats


SVGEdit[edit | edit source]

Svg

  • upgraded to the latest git from (00b9b30) 2013-11-22T16:46:23

SyntaxHighlight_GeSHi[edit | edit source]

Syntax Highlighting

  • Note this extension now uses Pygments
  • Initially had difficulty with this throwing all kinds of notices and breaking things like the edit window, probably because I was on REL1_25
  • But still after upgrading to REL1_26 it caused a 500 error.
  • Then I noticed that you need to composer update
  • upgraded to 2.0 (a15f02e) 2015-12-12T07:49:03
  • and Parsoid and VisualEditor

Tooltip[edit | edit source]

Tooltips

  • This interesting extension fell out of maintenance, and is superseded by the Lingo extension.


User Merge and Delete[edit | edit source]

Merge

  • upgraded to 1.9.0 (8a4faae) 2015-09-29T18:53:44 from 1.7 (9cdb625) 2013-04-04T16:10:25


Visual editor[edit | edit source]

Visual editor

  • completely updated (new git repo)
  • upgraded to 0.1.0 (34a21d8) 2015-11-10T07:15:06 from 0.1.0 (c416e78) 2014-05-07T17:36:05
  • Followed the complete install instructions which includes deprecating the Parsoid extension. Node was already installed
  • previously and was new enough (running v0.10.40)

Wiki Category Tag Cloud[edit | edit source]

Categories

  • upgraded to 1.2.0 (e8c04a8) 2015-09-29T18:58:37 from 1.1


WikiEditor[edit | edit source]

Text Editor

  • upgraded to 0.5.0 (72db6c7) 2015-09-29T18:59:11 from 0.4.0 (b13e25d) 2014-10-11T18:26:25
  • added options within LocalSettings


Gadgets[edit | edit source]

wikEd[edit | edit source]

  • For the wikEd gadget, I had to adjust the javascript and also add [ResourceLoader] to the definition

Toggle[edit | edit source]

For the Menu Tab Toggle gadget, I had to update the definition.

Preferences[edit | edit source]

Oftentimes, you will need to test and check Special:Preferences in combination with core, skins, extensions and Gadgets upgrades.

Debug[edit | edit source]

When things don't quite work as expected, you're left to figure out why. There are several debugging options that can assist you.