Your SlideShare is downloading. ×
SLAC 2008 RPMs selber bauen
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

SLAC 2008 RPMs selber bauen

540
views

Published on

RPM kommen nur von der Distribution ? Eigentlich ist es ganz einfach, ein RPM Paket zu erstellen. Im Ergebnis unterstützen RPM Pakete die Systemautomatisierung und Standardisierung. …

RPM kommen nur von der Distribution ? Eigentlich ist es ganz einfach, ein RPM Paket zu erstellen. Im Ergebnis unterstützen RPM Pakete die Systemautomatisierung und Standardisierung.

Sinn und Nutzen von Paketierung

RPM Paketen unter die Haube geschaut - technische Details

Best Practice - Erstellung eigener Pakete

Dependency Hell - Wie RPM kaputt geht

openSUSE Build Service - bauen lassen

Paketierung für Maintainer (Unterpakete, Cross-Plattform, Doku ...)

Published in: Technology

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
540
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. RPMs selber bauen Schlomo Schapiro Principal Consultant Leitung Virtualisierung & Open Source 11.12.2008 S L A C
  • 2. 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
  • 3. 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)
  • 4. 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
  • 5. 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 ...)
  • 6. 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
  • 7. 7 | probusiness group © 2008 Motivation
  • 8. 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
  • 9. 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!
  • 10. 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
  • 11. 11 | probusiness group © 2008 Repositories bauen (Skripte) #!/bin/bash REPO=/media/install/schlomo10 KEY=9e62229e rm -Rfv $REPO/{repodata,.olddata}/* rpm --resign -v $REPO/*/*rpm createrepo -v $REPO gpg -a --detach-sign $REPO/repodata/repomd.xml gpg -a --export $KEY > $REPO/repodata/repomd.xml.key RPMMD/YUM Repo erstellen und signieren: %_signature gpg %_gpg_path /root/.gnupg %_gpg_name Schlomo Schapiro <schlomo@schapiro.org> %_gpgbin /usr/bin/gpg --use-agent ~/.rpmmacros
  • 12. 12 | probusiness group © 2008 HOWTO
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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 :-)
  • 17. 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
  • 18. 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 ?
  • 19. 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/
  • 20. 20 | probusiness group © 2008 Beispiele
  • 21. 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
  • 22. 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
  • 23. 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)
  • 24. 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_Services http://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.html http://en.wikipedia.org/wiki/Dependency_hell
  • 25. 25 | probusiness group © 2008 Fragen & Antworten Schlomo Schapiro Principal Consultant Leitung Virtualisierung und Open Source probusiness Berlin AG Potsdamer Platz 11 D-10785 Berlin berlin@probusiness.de +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
  • 26. 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 info@probusiness.de www.probusiness.de 0 30/25 93 78-0 Ihr Kontakt zu uns