On part du principe que tu as installé déja les outils de compilation + quelques trucs utiles (j'ai eu la main lourde sur l'install des prérequis Perl, ca installe aussi des prérequis inutiles => avoir une machine de compilation et pas le faire en prod directement).
yum groupinstall "Development tools"
yum install mock rpmbuild git
useradd mockbuild
yum install gd-devel libjpeg-devel libpng-devel perl-CPAN perl-ExtUtils-* perl-Test-* perl-HTML-Lint |
Alors : j'ai activé le source repository de epel.repo, et on commence par récupérer le source rpm :
[root@Centos6 yum.repos.d]# yumdownloader --source nagios
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/metalink | 22 kB 00:00
epel-source/metalink | 21 kB 00:00
epel-source | 3.5 kB 00:00
epel-source/primary_db | 1.8 MB 00:05
nagios-3.5.1-1.el6.src.rpm | 1.7 MB 00:04 |
On installe le rpm. Les étapes de compilation et de rebuild du rpm ne se font pas en root.
[root@Centos6 ~]#su - mockbuild
[mockbuild@Centos6 ~]$ rpm -ivh nagios-3.5.1-1.el6.src.rpm
1:nagios ########################################### [100%]
[mockbuild@Centos6 ~]$ ls
nagios-3.5.1-1.el6.src.rpm rpmbuild |
Tu obtiens les sources de Nagios + les patches RedHat + le spec qui permet de tout recompiler dans le répertoire rpmbuild du $HOME de ton utilisateur
Maintenant on place le patch Nagios ;
[mockbuild@Centos6 ~]$ vi rpmbuild/SOURCES/nagios-0012-Fix-downtime-crash.patch |
Le contenu du fichier sera :
diff --git a/include/downtime.h b/include/downtime.h
--- a/include/downtime.h
+++ b/include/downtime.h
@@ -39,24 +39,26 @@
char *service_description;
time_t entry_time;
time_t start_time;
- time_t flex_downtime_start; /* Time the flexible downtime started */
time_t end_time;
int fixed;
unsigned long triggered_by;
unsigned long duration;
unsigned long downtime_id;
- int is_in_effect;
- int start_notification_sent;
char *author;
char *comment;
#ifdef NSCORE
unsigned long comment_id;
+#endif
+ int is_in_effect;
+#ifdef NSCORE
int start_flex_downtime;
int incremented_pending_downtime;
// int start_event; // int stop_event;
#endif
struct scheduled_downtime_struct *next;
+ time_t flex_downtime_start; /* Time the flexible downtime started */
+ int start_notification_sent;
} scheduled_downtime; |
On édite le .SPEC pour y placer la ligne qui va appliquer le patch lors du build :
[mockbuild@Centos6 ~]$ vi rpmbuild/SPECS/nagios.spec |
On ajoute les lignes suivantes :
Ligne 35 : Patch12: nagios-0012-Fix-downtime-crash.patch
Ligne 141 : %patch12 -p1 -b .fix_downtime |
On va aussi éditer le début du fichier pour changer la version et éviter de confondre le RPM modifié avec le RPM de base
Name: nagios
Version: 3.5.1
Release: 1%{?dist}.patched
Summary: Host/service/network monitoring program |
Yapluka rebuilder le rpm
[mockbuild@Centos6 ~]$ rpmbuild -ba rpmbuild/SPECS/nagios.spec |
Et tu obtiens un joli set de RPM :
[mockbuild@Centos6 ~]$ ls rpmbuild/RPMS/x86_64/nagios-
nagios-3.5.1-1.el6.patched.x86_64.rpm nagios-debuginfo-3.5.1-1.el6.patched.x86_64.rpm
nagios-common-3.5.1-1.el6.patched.x86_64.rpm nagios-devel-3.5.1-1.el6.patched.x86_64.rpm |
Que j'ai mis à disposition la pendant quelques jours.
Et voila
Edit - Correction d'une faute de frappe
Message édité par ccp6128 le 22-08-2016 à 18:02:19