SLAC 2008 RPMs selber bauen

26
RPMs selber bauen Schlomo Schapiro Principal Consultant Leitung Virtualisierung & Open Source 11.12.2008 SLAC

Transcript of SLAC 2008 RPMs selber bauen

Page 1: SLAC 2008 RPMs selber bauen

RPMs selber bauen

Schlomo SchapiroPrincipal Consultant

Leitung Virtualisierung & Open Source

11.12.2008

SLAC

Page 2: SLAC 2008 RPMs selber bauen

2 | probusiness group © 2008

Agenda

RPM Pakete

Motivation

HOWTO

Beispiele

Dieser Vortrag ist eine kurze Einleitung in das Thema mit einigen Schwerpunkten aus der praktischen Arbeit.

Guter Kurs mit Übungen:

http://www.gurulabs.com/GURULABS-RPM-LAB/GURULABS-RPM-GUIDE-v1.0.PDF

Page 3: SLAC 2008 RPMs selber bauen

3 | probusiness group © 2008

RPM Pakete

Inhalt

Metadaten

Wer, was, woher usw.

Abhängigkeiten und Widersprüche

Dateien

Aktionen

Skripte

Trigger

Signatur

Verpackt mit CPIO und komprimiert

bzip2 (SLE/openSUSE < 11, Red Hat usw.)

lzma (SLE/openSUSE ab 11)

Page 4: SLAC 2008 RPMs selber bauen

4 | probusiness group © 2008

RPM Pakete

Standardisierter Name:

Name

Version

Release

Architektur

Source Pakete

Alle Quelldateien

Bauanleitung (.spec Datei)

Repositories

RPMs, Metadaten und Signatur

RPMMD/YUM, YaST/ZYPP

Page 5: SLAC 2008 RPMs selber bauen

5 | probusiness group © 2008

Dependency Hell

Querverbindungen (A braucht C-1.0, B braucht C-2.0)

Zyklische Abhängigkeit (A-1.0 braucht B-1.0 braucht A-2.0)

Umbenennung (A braucht C, B braucht C, aber D erfüllt auch C und ist besser), manchmal bei Packman Paketen und SUSE

Versionen (A braucht B-1.0, es ist nur B-1.1 oder B-2.0 verfügbar)

Optionale Abhängigkeiten werden mitinstalliert

Unterschiedliche Paketierer teilen Pakete in unterschiedliche Subpakete auf (a, liba, liba-devel, a-doc ...)

Page 6: SLAC 2008 RPMs selber bauen

6 | probusiness group © 2008

Lösungen für Paketkonflikte

Selber mitdenken

--force oder –nodeps

„schlaueren“ Paketmanager benutzen (smart, apt-rpm ...)

Zuerst mehr deinstallieren und dann sauber mit korrekten Abhängigkeiten installieren

Problematisches RPM selber neu bauen (mit modifizierten Abhängigkeiten)

... sonst droht nur Stress bei jeder RPM Installation

Page 7: SLAC 2008 RPMs selber bauen

7 | probusiness group © 2008

Motivation

Page 8: SLAC 2008 RPMs selber bauen

8 | probusiness group © 2008

Software Management mit RPM

RPM ist die Basis von SUSE, Red Hat, Mandrake usw.

RPM Features

Inventarisierung

Validierung der Paketquellen und installierten Systeme

Abhängigkeiten & Konflikte

Updates und Patche

Dateien und Skripte

Optimale Plattform für Softwaremanagement

Perfekte Integration in Betriebssystem

Page 9: SLAC 2008 RPMs selber bauen

9 | probusiness group © 2008

Systemmanagement mit RPM

Konfigurationen und Einstellungen als RPM verteilen

Einfachster Weg zur Standardisierung

Lohnt sich meist schon ab wenigen Systemen

Paketinhalte:

Dateien

Skripte zur Konfiguration und zur Validierung

VORSICHT:Paketkonflikte zu Konfigurationsdateien vermeiden!

Page 10: SLAC 2008 RPMs selber bauen

10 | probusiness group © 2008

/.../schlomo10|-- i386|-- i586|-- i686|-- noarch|-- repodata`-- x86_64

RPMMD/YUM Repo:

Repositories (selber machen)

Relevant: RPMMD/YUM und YaST Repositories

Inhalt

RPMs und Metadaten

Patterns und Signaturen

Repository selber bauen:

Verzeichnisbaum erstellen

RPMs hineinkopieren

RPMs signieren

Metadaten generieren

Metadaten signieren

Veröffentlichen

Page 11: SLAC 2008 RPMs selber bauen

11 | probusiness group © 2008

Repositories bauen (Skripte)

#!/bin/bashREPO=/media/install/schlomo10KEY=9e62229erm -Rfv $REPO/{repodata,.olddata}/*rpm --resign -v $REPO/*/*rpmcreaterepo -v $REPOgpg -a --detach-sign $REPO/repodata/repomd.xmlgpg -a --export $KEY > $REPO/repodata/repomd.xml.key

RPMMD/YUM Repo erstellen und signieren:

%_signature gpg%_gpg_path /root/.gnupg%_gpg_name Schlomo Schapiro <[email protected]>%_gpgbin /usr/bin/gpg --use-agent

~/.rpmmacros

Page 12: SLAC 2008 RPMs selber bauen

12 | probusiness group © 2008

HOWTO

Page 13: SLAC 2008 RPMs selber bauen

13 | probusiness group © 2008

Nützliche Kommandos

Installieren: rpm -Uhv

Informieren: rpm -q [-i] [-l]

RPM-Datei: -p

Datei aus Dateisystem: -f

Wer liefert: --whatprovides

Wer braucht: --whatrequires

Validieren: rpm -V

Chroot: rpm -r </path/to/root> ...

Optionen: --nodeps, --force, --noscripts

Page 14: SLAC 2008 RPMs selber bauen

14 | probusiness group © 2008

RPM auseinandernehmen

rpm -q

--changelog

--scripts und --triggers

--dump und –list

--info

--provides

--requires

unrpm (build Paket auf SUSE)

rpm2cpio <xyz.rpm> | cpio -i -d

Page 15: SLAC 2008 RPMs selber bauen

15 | probusiness group © 2008

RPM bauen

1. Quellen zusammentragen

2. SPEC Datei schreiben

3. 1000x testen

4. RPM in Repository stellen und verteilen

Werkzeuge und Pfade

rpmbuild -ta, rpmbuild -ba

/usr/src/packages/{SOURCES,SPECS,BUILD,RPMS,SRPMS}

/etc/rpm/*, ~/.rpmmacros

Page 16: SLAC 2008 RPMs selber bauen

16 | probusiness group © 2008

SPEC Datei

Felddefinitonen: Name, Version, Release, URL, License, Requires, Obsoletes, BuilReqs, BuildArch, Provides ...

Variablen %{version}

Macros %setup %patch %configure %makeinstall

Sektionen %description %prep %build %install %files %clean %changelog %package ...

Skripte %pre %post %preun ...

Anweisungen %defattr(-,root,root) %config(noreplace) ...

Am Besten bei existierenden .spec Dateien abschreiben :-)

Page 17: SLAC 2008 RPMs selber bauen

17 | probusiness group © 2008

Typische Probleme

Konflikte mit Dateien anderer RPMs

Datei patchen und nicht ausliefern

Das andere RPM ersetzen

Falsche (ungenügende) Abhängigkeiten

Weil ein benötigtes Paket auf dem Build-System schon da war

Saubere Build-Umgebung nutzen

Mehrfache Installation oder Updates funktionieren nicht

Sauber testen und mit Skripten usw. abfangen

config(noreplace) ... nutzen

Page 18: SLAC 2008 RPMs selber bauen

18 | probusiness group © 2008

Typische Probleme – Crossplattform

Saubere Skripte verwenden (32bit – 64bit)

Unterschiedliche Distros (und auch Versionen einer Distro) haben kleinere und größere Unterschiede:

*-devel Pakete

lib*, *lib Pakete

Unterschiedliche Namen für dasselbe, z.B. wodim/cdrecord oder iproute/iproute2 usw.

Schwierig zu testen

openSUSE Build Service nutzen, build

Fedora hat eigene (strengere) Standards

Mandrake ?

Page 19: SLAC 2008 RPMs selber bauen

19 | probusiness group © 2008

openSUSE Build Service

http://build.opensuse.org

Automatisiertes System zum Erstellen von RPM und DEB Paketen für (fast) alle Distributionen und Versionen

Einfachste Bedienung:

SPEC Datei u.ä. hochladen

Quellen hochladen bzw. verknüpfen

Ziele definieren

Kompilieren lassen

Download über RPMMD/YUM Repositories http://download.opensuse.org/repositories/home:/XXX/

Page 20: SLAC 2008 RPMs selber bauen

20 | probusiness group © 2008

Beispiele

Page 21: SLAC 2008 RPMs selber bauen

21 | probusiness group © 2008

Postfix Nullclient Konfiguration

Systemmanagement per RPM

Im Beispiel für SUSE Systeme

/etc/sysconfig/postfix

SuSEconfig --module postfix

Allgemeingültige Lösung

post Skript:

postconf -e inet_protocols=ipv4 inet_interfaces=localhost relayhost=mail.dmz mydestination=

Keine Integration mit Distributionswerkzeugen

Page 22: SLAC 2008 RPMs selber bauen

22 | probusiness group © 2008

Programminstallation

wmx (http://www.all-day-breakfast.com/wmx/)

Einfachster (aber cooler) Windowmanager

Installation per configure, make, make install

Klassisches Beispiel für RPM aus Quelltext

Page 23: SLAC 2008 RPMs selber bauen

23 | probusiness group © 2008

Crossplattform, Subpakete

Relax & Recover (http://rear.sourceforge.net)

Vollautomatisches Linux Disaster Recovery

Unterschiedliche Pakete auf SUSE, Red Hat usw.

Aufteilung in Subpakete (als Beispiel)

Page 24: SLAC 2008 RPMs selber bauen

24 | probusiness group © 2008

Links

Sammelstelle für SUSE Linux Entwicklerdoku:http://de.opensuse.org/Entwicklerdokumentation

Fedore Core Developer Guide (RPMs):http://docs.fedoraproject.org/developers-guide/ch-rpm-building.html

Novell Kernel Module Build HowTo:http://developer.novell.com/wiki/index.php/Using_Novell%27s_Kernel_Module_Build_Serviceshttp://developer.novell.com/wiki/index.php/Kernel_Module_Packaging_HOWTO

RPM Doku:http://www.gurulabs.com/GURULABS-RPM-LAB/GURULABS-RPM-GUIDE-v1.0.PDF (sehr gute Anleitung)http://www.tu-chemnitz.de/docs/lindocs/RPM/http://docs.fedoraproject.org/drafts/rpm-guide-en/http://www.novell.com/coolsolutions/feature/11793.html (build utility)http://en.opensuse.org/SUSE_Build_Tutorial (openSUSE build server, build utility)http://de.opensuse.org/Build_Service/Installationsanleitung (openSUSE build service)http://en.opensuse.org/Build_Service/cross_distribution_package_how_to (crossplattform RPM)

RPM Hell:http://www.germane-software.com/~ser/Files/Essays/RPM_Hell.htmlhttp://en.wikipedia.org/wiki/Dependency_hell

Page 25: SLAC 2008 RPMs selber bauen

25 | probusiness group © 2008

Fragen & Antworten

Schlomo SchapiroPrincipal ConsultantLeitung Virtualisierung und Open Source

probusiness Berlin AGPotsdamer Platz 11D-10785 Berlin

[email protected]+49 30 259378 0

Open Source Reklame:

● Linux Disaster Recovery: Relax & Recover (http://rear.sourceforge.net)● VMware VI3 Backup & DR: easyVCB (http://easvcb.sourceforge.net)● OpenVPN Gateway Builder: OGB (http://ogb.schlomo.schapiro.org)● RSYNC BACKUP MADE EASY: RBME (http://rbme.schlomo.schapiro.org)

Vorträge:

● http://www.schapiro.org/schlomo● http://www.probusiness.de

Page 26: SLAC 2008 RPMs selber bauen

26 | probusiness group © 2008

0 89/99 22 95-0

0 70 31/4 63 83-65

0 61 96/5 61 42-0

02 11/38 54 66-0

05 11/6 00 66-0

0 40/18 88 28-0

[email protected]

0 30/25 93 78-0

Ihr Kontakt zu uns