elias5000
Site Reliability Engineer
Weil in einem anderen Thread die Frage dazu aufkam, poste ich an dieser Stelle mal ein kleines Kurz-HowTo zum Thema Erstellen eigener RPM-Pakete:
1. Build-Umgebung für nicht-privilegierten User vorbereiten:
- Installation von cpan2rpm (brauchen wir eigentlich nicht, übernimmt aber super das Einrichten der Build-Umgebung)
- mit "cpan2rpm --mk-rpm-dirs <Dir>" das Build-Root einrichten
Ab jetzt kann man als User SRPM-Pakete installieren. Diese landen dann unterhalb des eben angegebenen RPM-Buildroot.
2. Source-RPM installieren und anpassen
- SRPM für das gewünschte Paket installieren
Die Anweisungen, wie die Software gebuildet wird und wie das Paket zusammenzustellen ist, liegt nun unterhalb des Build-Root in SPECS/<paketname>.spec, die Sourcen unterhalb von SOURCES.
- Um jetzt das Paket (was man z.b. als veraltet von der Distro bekommen hat) upzugraden, muss man im Idealfall einfach nur das neuere Source-Archiv nach SOURCES kopieren und im Spec-File die Version anpassen (nicht vergessen, das Changelog zu erweitern. Vorallem, wenn man das Paket weitergeben will.)
- Evtl. kann man auch configure-Optionen im Specfile anpassen (z.B. für PHP)
3. Builden der Pakete
- Bei RPM: rpmbuild -ba <path-to-spec-file>
Fertig hat man ein neues RPM-Paket und ein SRPM-Paket mit den angepassten Quellen und Spec-File.
Eine sinnvolle Erweiterung zu dieser Konstellation ist das Programm "cpanspec". Dieses versorgt einen mit SRPMs beliebiger Perl-Pakete aus Cpan.
Mit "cpanspec -s Paket::Name" kann man sich das entsprechende Paket besorgen und meist ohne weitere Änderungen in ein installierbares Paket umwandeln.
Wenn man im Spec-File die Optionen BuildRequires und Requires richtig benutzt, kann man RPM dazu veranlassen, eine Liste von fehlenden Dependencies auszugeben, sollte irgendwas für Build/Installation fehlen. Bzw. sorgt es dafür, dass man Dependencies des eigenen Paketes nicht einfach deinstallieren kann.
Für Programme, für die man kein SRPM oder Spec-File findet, kann man sich das angehangene foo.spec anpassen. Meist reicht es, darin die Schritte aufzuführen, die man auch per Hand ausführen würde.
Dies ist nur ein kleiner Umfang der Möglichkeiten. Weiter, wie z.B. das einbringen eigener Patches, erkläre ich gerne im späteren Verlauf des Thread.
1. Build-Umgebung für nicht-privilegierten User vorbereiten:
- Installation von cpan2rpm (brauchen wir eigentlich nicht, übernimmt aber super das Einrichten der Build-Umgebung)
- mit "cpan2rpm --mk-rpm-dirs <Dir>" das Build-Root einrichten
Ab jetzt kann man als User SRPM-Pakete installieren. Diese landen dann unterhalb des eben angegebenen RPM-Buildroot.
2. Source-RPM installieren und anpassen
- SRPM für das gewünschte Paket installieren
Die Anweisungen, wie die Software gebuildet wird und wie das Paket zusammenzustellen ist, liegt nun unterhalb des Build-Root in SPECS/<paketname>.spec, die Sourcen unterhalb von SOURCES.
- Um jetzt das Paket (was man z.b. als veraltet von der Distro bekommen hat) upzugraden, muss man im Idealfall einfach nur das neuere Source-Archiv nach SOURCES kopieren und im Spec-File die Version anpassen (nicht vergessen, das Changelog zu erweitern. Vorallem, wenn man das Paket weitergeben will.)
- Evtl. kann man auch configure-Optionen im Specfile anpassen (z.B. für PHP)
3. Builden der Pakete
- Bei RPM: rpmbuild -ba <path-to-spec-file>
Fertig hat man ein neues RPM-Paket und ein SRPM-Paket mit den angepassten Quellen und Spec-File.
Eine sinnvolle Erweiterung zu dieser Konstellation ist das Programm "cpanspec". Dieses versorgt einen mit SRPMs beliebiger Perl-Pakete aus Cpan.
Mit "cpanspec -s Paket::Name" kann man sich das entsprechende Paket besorgen und meist ohne weitere Änderungen in ein installierbares Paket umwandeln.
Wenn man im Spec-File die Optionen BuildRequires und Requires richtig benutzt, kann man RPM dazu veranlassen, eine Liste von fehlenden Dependencies auszugeben, sollte irgendwas für Build/Installation fehlen. Bzw. sorgt es dafür, dass man Dependencies des eigenen Paketes nicht einfach deinstallieren kann.
Für Programme, für die man kein SRPM oder Spec-File findet, kann man sich das angehangene foo.spec anpassen. Meist reicht es, darin die Schritte aufzuführen, die man auch per Hand ausführen würde.
Dies ist nur ein kleiner Umfang der Möglichkeiten. Weiter, wie z.B. das einbringen eigener Patches, erkläre ich gerne im späteren Verlauf des Thread.
Attachments
Last edited by a moderator: