• Like

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

SLAC 2008 RPMs selber bauen

  • 485 views
Uploaded 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 ...)

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
485
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
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. SLAC RPMs selber bauen Schlomo Schapiro Principal Consultant Leitung Virtualisierung & Open Source 11.12.2008
  • 2. 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.PDF2 | probusiness group © 2008
  • 3. 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)3 | probusiness group © 2008
  • 4. RPM Pakete Standardisierter Name: Name Version Release Architektur Source Pakete Alle Quelldateien Bauanleitung (.spec Datei) Repositories RPMs, Metadaten und Signatur RPMMD/YUM, YaST/ZYPP4 | probusiness group © 2008
  • 5. 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 ...)5 | probusiness group © 2008
  • 6. 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 Installation6 | probusiness group © 2008
  • 7. Motivation7 | probusiness group © 2008
  • 8. 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 Betriebssystem8 | probusiness group © 2008
  • 9. 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!9 | probusiness group © 2008
  • 10. Repositories (selber machen) Relevant: RPMMD/YUM und YaST Repositories Inhalt RPMs und Metadaten Patterns und Signaturen Repository selber bauen: RPMMD/YUM Repo: Verzeichnisbaum erstellen /.../schlomo10 |-- i386 RPMs hineinkopieren |-- i586 RPMs signieren |-- i686 Metadaten generieren |-- noarch Metadaten signieren |-- repodata `-- x86_64 Veröffentlichen10 | probusiness group © 2008
  • 11. Repositories bauen (Skripte) ~/.rpmmacros %_signature gpg %_gpg_path /root/.gnupg %_gpg_name Schlomo Schapiro <schlomo@schapiro.org> %_gpgbin /usr/bin/gpg --use-agent RPMMD/YUM Repo erstellen und signieren: #!/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.key11 | probusiness group © 2008
  • 12. HOWTO12 | probusiness group © 2008
  • 13. 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, --noscripts13 | probusiness group © 2008
  • 14. RPM auseinandernehmen rpm -q --changelog --scripts und --triggers --dump und –list --info --provides --requires unrpm (build Paket auf SUSE) rpm2cpio <xyz.rpm> | cpio -i -d14 | probusiness group © 2008
  • 15. 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/*, ~/.rpmmacros15 | probusiness group © 2008
  • 16. 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 :-)16 | probusiness group © 2008
  • 17. 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) ... nutzen17 | probusiness group © 2008
  • 18. 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 ?18 | probusiness group © 2008
  • 19. 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/19 | probusiness group © 2008
  • 20. Beispiele20 | probusiness group © 2008
  • 21. 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 Distributionswerkzeugen21 | probusiness group © 2008
  • 22. 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 Quelltext22 | probusiness group © 2008
  • 23. Crossplattform, Subpakete Relax & Recover (http://rear.sourceforge.net) Vollautomatisches Linux Disaster Recovery Unterschiedliche Pakete auf SUSE, Red Hat usw. Aufteilung in Subpakete (als Beispiel)23 | probusiness group © 2008
  • 24. LinksSammelstelle für SUSE Linux Entwicklerdoku:http://de.opensuse.org/EntwicklerdokumentationFedore Core Developer Guide (RPMs):http://docs.fedoraproject.org/developers-guide/ch-rpm-building.htmlNovell 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_HOWTORPM 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_hell24 | probusiness group © 2008
  • 25. Fragen & Antworten 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 Schlomo Schapiro probusiness Berlin AG Principal Consultant Potsdamer Platz 11 Leitung Virtualisierung und Open Source D-10785 Berlin berlin@probusiness.de +49 30 259378 025 | probusiness group © 2008
  • 26. Ihr Kontakt zu uns 0 40/18 88 28-0 0 30/25 93 78-0 05 11/6 00 66-0 02 11/38 54 66-0 0 61 96/5 61 42-0 0 70 31/4 63 83-65 0 89/99 22 95-0 info@probusiness.de www.probusiness.de26 | probusiness group © 2008