Successfully reported this slideshow.

SLAC 2008 RPMs selber bauen

975 Aufrufe

Veröffentlicht am

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 ...)

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

SLAC 2008 RPMs selber bauen

  1. 1. RPMs selber bauen Schlomo Schapiro Principal Consultant Leitung Virtualisierung & Open Source 11.12.2008 S L A C
  2. 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. 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. 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. 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. 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. 7 | probusiness group © 2008 Motivation
  8. 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. 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. 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. 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. 12 | probusiness group © 2008 HOWTO
  13. 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. 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. 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. 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. 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. 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. 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. 20 | probusiness group © 2008 Beispiele
  21. 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. 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. 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. 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. 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. 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

×