Appliquer un patch#
Un fichier patch vous a été fourni#
Le Service support vous a fourni un fichier de patch dont l'extension peut être .patch
ou .diff
Exemple : bug-fix.diff
- Aller directement à la section Appliquer un patch pour tester et appliquer votre patch.
Vous avez un numéro de commit#
Le Service support vous a fourni un numéro de commit ex: adc9876
Il faut alors en premier lieu retrouver les modifications apportées par ce commit.
- Se rendre à l'adresse
https://github.com/glpi-project/glpi/commit/ + COMMIT_NUMBER
- Puis transformer le commit en patch en ajoutant l'extension
.diff
à la fin de l'URL.
Comme ceci: https://github.com/glpi-project/glpi/commit/adc9876.diff
- Copier l'URL du patch puis effectuer un wget sur votre serveur GLPI
wget https://github.com/glpi-project/glpi/commit/adc9876.diff
Info
Si c'est un patch core, effectuez le wget
directement à la racine de GLPI
Si c'est un patch plugin, effectuez le wget
directement dans le dossier du plugin concerné.
Si vous l'avez effectué ailleurs, la section appliquer un patch vous orientera pour le déplacer là au bon endroit.
Rendez-vous dans la section appliquer un patch
Vous avez un numéro de PR (Pull Request)#
Le Service support vous a transmis un numéro de PR, par exemple 4770
- Il vous faut en premier lieu retrouver la PR
- Se rendre à l'adresse
https://github.com/glpi-project/glpi/pull/ + PR_NUMBER
- Transformer la PR en patch en ajoutant l'extension
.diff
à la fin de l'URL
Comme ceci : https://github.com/glpi-project/glpi/pull/4770.diff
- Copier l'URL du patch puis effectuer un
wget
sur votre serveur GLPIwget https://github.com/glpi-project/glpi/pull/4770.diff
Info
Si c'est un patch core, effectuez le wget
directement à la racine de GLPI.
Si c'est un patch plugin, effectuez le wget
directement dans le dossier du plugin concerné. Si vous l'avez effectué ailleurs, la section Appliquer un patch vous orientera pour le déplacer là au bon endroit.
Rendez-vous dans la section Appliquer un patch
Appliquer un patch#
Patcher GLPI#
- Collez le patch dans le dossier racine de GLPI.
- Allez dans le dossier racine de GLPI :
cd /var/www/glpi/(1)
- A adapter au besoin
Patcher un plugin#
- Collez le patch dans le dossier racine du plugin (il peut être dans le dossier
Plugin
ouMarketplace
):
- Allez dans le dossier racine du plugin :
cd /var/www/glpi/plugins/XXXX/(1)
- A adapter au besoin
Vérifier que patch est installé sur le serveur#
Pour savoir si le binaire patch est bien installé sur le serveur, tapez la commande suivante :
S'il est installé, vous devriez avoir cela :
GNU patch 2.7.6
Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc.
Copyright (C) 1988 Larry Wall
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Written by Larry Wall and Paul Eggert
- Installer alors le binaire avec cette commande :
Ubuntu/debian
CentOS/RHEL
Tester le patch avant de l'Appliquer#
- Avant d'Appliquer un patch, il est nécessaire de tester que tout va bien se passer :
Le test est OK ✅#
Si tout s'est bien passé, vous devriez avoir ce retour :
Ou celui-ci :
patching file inc/config.class.php
Hunk #1 succeeded at 891 with fuzz 1 (offset 23 lines).
Hunk #2 succeeded at 1301 with fuzz 2 (offset 41 lines).
- Vous pouvez maintenant appliquer le patch pour de bon avec la commande :
Félicitations, le patch est bien appliqué !
Maintenant il vous reste à tester que la correction apportée convient et nous faire un retour.
Le test est KO ❌#
Dans le cas d'une erreur, vous verrez ce retour :
patching file inc/config.class.php
Hunk #1 FAILED at 400.
1 out of 1 hunk FAILED -- saving rejects to file inc/config.class.php.rej
Plusieurs causes peuvent être à l'origine de cette erreur :
- Votre version de GLPI est différente de celle utilisée pour faire le patch
- Le fichier modifié par le patch a déjà été modifié auparavant
Annuler un patch#
Afin d'annuler un patch entrez la commande :