Magento : mettre à jour en ligne de commande

Si vous avez suivi le post précédent sur la mise en place des permissions sur les fichiers Magento, mais que vous hésitez encore parce que cela va rendre plus compliqué les mises à jours, vous allez peut-être changer d’avis en lisant la suite.

La méthode classique pour mettre à jour Magento et les modules installés est de se connecter au back-office de Magento, d’aller dans le Magento Connect Manager et de choisir les modules à mettre à jour. Si vous avez mis en place des permissions restrictives sur les fichiers, votre serveur web ne pourra pas modifier les fichiers et la mise à jour de Magento depuis le back-office sera plus compliqué. Il vous faudra au préalable modifier les droits des fichiers ou configurer un serveur ftp.

Une alternative efficace est de mettre à jour Magento en ligne de commande. Il existe pour cela le script shell mage qui se trouve à la racine de Magento. La première chose à faire est de rendre ce script exécutable

cd magento
chmod +x mage

En le lançant sans paramètre on obtient la liste des commandes disponibles

guillaume@vmagento:[/var/www/magento] $ ./mage 
Connect commands available:
===========================
channel-add Add a Channel 
channel-alias Specify an alias to a channel name
channel-delete Remove a Channel From the List
channel-info Retrieve Information on a Channel
channel-login Connects and authenticates to remote channel server
channel-logout Logs out from the remote channel server
clear-cache Clear Web Services Cache
config-get Show One Setting 
config-help Show Information About Setting
config-set Change Setting 
config-show Show All Settings 
convert Convert old magento PEAR package to new format
download Download Package 
info Display information about a package
install Install Package 
install-file Install Package Archive File
list-available List Available Packages
list-channels List Available Channels
list-files List Files In Installed Package
list-installed List Installed Packages In The Default Channel
list-upgrades List Available Upgrades
package Build Package 
package-dependencies Show package dependencies
package-prepare Show installation information of package
sync Synchronize Manually Installed Packages
sync-pear Synchronize already Installed Packages by pear
uninstall Un-install Package 
upgrade Upgrade Package 
upgrade-all Upgrade All Packages

les trois commandes qui nous intéressent pour mettre à jour Magento en ligne de commande sont list-upgrades, upgrade et upgrade-all. list-upgrades liste toutes les mises à jour disponibles :

guillaume@vmagento:[/var/www/magento] $ ./mage list-upgrades
Updates for community:
 Interface_Adminhtml_Default: 1.7.0.1 => 1.9.1.0
 Interface_Frontend_Base_Default: 1.7.0.1 => 1.9.1.0
 Interface_Frontend_Default: 1.7.0.0 => 1.9.1.0
 Interface_Install_Default: 1.7.0.0 => 1.9.1.0
 Lib_Google_Checkout: 1.5.0.0 => 1.9.1.0
 Lib_Js_Mage: 1.7.0.1 => 1.9.1.0
 Lib_Js_Prototype: 1.7.0.0.3 => 1.7.0.0.5
 Lib_Js_TinyMCE: 3.4.7.0 => 3.5.11.0
 Lib_Mage: 1.7.0.1 => 1.9.1.0
 Lib_Varien: 1.7.0.0 => 1.9.1.0
 Lib_ZF: 1.11.1.0 => 1.12.7.0
 Lib_ZF_Locale: 1.11.1.0 => 1.12.7.0
 Mage_All_Latest: 1.7.0.2 => 1.9.1.0
 Mage_Centinel: 1.7.0.0 => 1.9.1.0
 Mage_Compiler: 1.7.0.0 => 1.9.1.0
 Mage_Core_Adminhtml: 1.7.0.1 => 1.9.1.0
 Mage_Core_Modules: 1.7.0.2 => 1.9.1.0
 Mage_Downloader: 1.7.0.1 => 1.9.1.0
 Mage_Locale_en_US: 1.7.0.1 => 1.9.1.0
 Magento_Mobile: 1.7.0.1.22.1 => 1.9.1.0
 Phoenix_Moneybookers: 1.3.1 => 1.3.2.1
 AW_Blog: 1.3.2 => 1.3.5

upgrade permet de mettre à jour un module en particulier, et la dernière upgrade-all va elle mettre à jour tous les modules :

guillaume@vmagento:[/var/www/magento] $ ./mage upgrade-all
[..]
Package community/AW_Blog 1.3.5 installed successfully
Package upgraded: community/Lib_Magento 1.9.1.0
Package upgraded: community/Lib_Credis 1.8.0.0
Package upgraded: community/Lib_Pelago 1.9.1.0
Package upgraded: community/Lib_Js_Prototype 1.7.0.0.5
Package upgraded: community/Mage_All_Latest 1.9.1.0
Package upgraded: community/Interface_Adminhtml_Default 1.9.1.0
Package upgraded: community/Interface_Frontend_Default 1.9.1.0
Package upgraded: community/Interface_Install_Default 1.9.1.0
Package upgraded: community/Mage_Downloader 1.9.1.0
Package upgraded: community/Mage_Centinel 1.9.1.0
Package upgraded: community/Interface_Frontend_Base_Default 1.9.1.0
Package upgraded: community/Phoenix_Moneybookers 1.3.2.1
Package upgraded: community/Mage_Compiler 1.9.1.0
Package upgraded: community/Magento_Mobile 1.9.1.0
Package upgraded: community/Lib_Cm 1.8.0.0
Package upgraded: community/Cm_RedisSession 1.8.0.0
Package upgraded: community/Interface_Frontend_Rwd_Default 1.9.1.0
Package upgraded: community/Mage_Core_Adminhtml 1.9.1.0
Package upgraded: community/Mage_Core_Modules 1.9.1.0
Package upgraded: community/Lib_Js_TinyMCE 3.5.11.0
Package upgraded: community/Lib_Varien 1.9.1.0
Package upgraded: community/Lib_Google_Checkout 1.9.1.0
Package upgraded: community/Lib_Js_Mage 1.9.1.0
Package upgraded: community/Mage_Locale_en_US 1.9.1.0
Package upgraded: community/Lib_Mage 1.9.1.0
Package upgraded: community/Lib_ZF 1.12.7.0
Package upgraded: community/Lib_ZF_Locale 1.12.7.0
Package upgraded: community/AW_Blog 1.3.5

Dernier détail, avant de lancer la mise à jour il est vivement conseillé de faire une sauvegarde du code et de la base de données.

About the Author: Guillaume Luchet

Guillaume Luchet est Directeur de la R&D et Lead Développeur chez Bilendi Technology, entrepreneur et développeur freelance.