33
FreeBSD Ports und Packages CCC Stuttgart Kurt Jaeger, [email protected] http://nepustil.net/ Stuttgart, 10. September 2009

FreeBSD Ports und Packages - cccs.de fileKurzvorstellung I Gesch¨aftsfuhrer¨ eines regionalen ISPs I FreeBSD und Linux Anwender seit ca. 1992 I Kundenserver mit FreeBSD und Linux

Embed Size (px)

Citation preview

FreeBSD Ports und PackagesCCC Stuttgart

Kurt Jaeger, [email protected]

http://nepustil.net/

Stuttgart, 10. September 2009

Ubersicht

I Allgemein

I FreeBSD

I Ports

I Packages

I Zusammenfassung

Kurzvorstellung

I Geschaftsfuhrer eines regionalen ISPs

I FreeBSD und Linux Anwender seit ca. 1992

I Kundenserver mit FreeBSD und Linux und Windows undSolaris und ...

I /sw

Allgemein

I Was ist ein Betriebssystem ?I Kernel (Systemprogramm mit Sonderrechten)I Userspace (Systemprogramme ohne Sonderrechte)I Anwendungen

I Was sind Anwendungen ?I OpenOfficeI mplayerI ...

I Was ist eine Distribution ?

I Packagemanagement

Welche Packagemanagement Systeme gibt es ?

I debian pkg [debian]

I Redhat Package Manager, RPM

I pkgsrc (netbsd u.a.) [pkgsrc]

I solaris ? pkgadd oder IPS

I AIX installp

I MacOS X Fink

I http://www.openpkg.org/

I http://www.macports.org/

I Microsoft Installer, .msi

I ...

I FreeBSD Ports und Packages

Warum Packagemanagement ?

I Bei jeder Anderung das ganze Betriebssystemuberschreiben ?

I Und dann auch noch die Anwendungen ?

I Braucht viel Bandbreite

I Wahnsinnig viel Plattenplatz

I Uberschreiben von lokalen Anderungen ?

I dauert sehr lang

I braucht einen Reboot

I Optimierung!

I Viele Anderungen lassen sich eingrenzen

Warum uberhaupt Anderungen ?

I Fehler

I Funktion

I Sicherheit

I Wartung

I Hardwareanderungen

I Performance

I Haftung

Was sind die Unterschiede ?

I Freie Software vrs. binary-only: Beides

I build from source vrs. binaries: From Source

I Multiplattform oder nicht: Multiplattform

I Multi-OS: Teilweise

I Stabilitat oder Aktualitat: Aktualitat

FreeBSD

I Betriebssystem: Kernel und Drumherum!

I Anwendungen: Ports

I Fertig compiliert: Packages

I Build-from-Source

I Release-Management

Release-Management

I CURRENT

I STABLE – ABI Stabilitat

I RELEASE

I Patches

Siehe auch [release]

Vorgehen bei einem Release

I Feature Freeze

I Ports Freeze

I BETA, RC (release candidate), RELEASE, Patches

I Wie lange wird welche Version gepflegt ? [support]

I MFC: Merge from CURRENT

Ports ?

Verzeichnis: /usr/ports/

I Makefile und Mk/*

I INDEX*

I UPDATING

I UIDs und GIDs

I 63 Verzeichnisse, z.B. security/, databases/, usw

I ca. 20600 Ports

I http://www.freshports.org/

I /usr/ports/distfiles/

I Standige Updates

Wie baut man selbst einen Port ?

Beispiel:cd /usr/ports/www/p5-HTML-Perlinfomake install

I Das holt ggf. alle Abhangigkeiten und baut sie!

I Leider fragen manche Abhangigkeiten nach!

I Sinnvolle Defaults

make ?

I Programm, um in definierten Schritten Source Code zuubersetzen in Programme

I Variante: bsd-makehttp://www.freebsd.org/doc/en/books/pmake/

I Nicht dasselbe wie gnu-make!Unterschiede siehe [make1, make2]

I Viele Macros fur Ports /usr/ports/Mk

Was passiert bei einem make install ?

I fetch

I extract

I patch

I configure

I build

I install

Weitere Targets

I deinstall

I reinstall

I package

I config

I all == check-sanity fetch checksum extract patchconfigure build

man 7 ports

make config ?

I Varianten des Pakets, z.B. mit SSL oder Perl oder LDAP

I Auswahl abgelegt in /var/db/ports/port/optionsWITH DEBUG=trueWITH IPV6=trueWITHOUT POLICY=true

I Problem: initiale interaktive Abfrage

Zahlen und Fakten

I fbsd6/i386, fbsd7/amd64, fbsd8/i386I ca. 1450 PortsI ca. 4-5 GB SourcesI ca. 2.5 GB Packages als Ergebnis, bis zu 200MB

(netbeans)I Auf einer 2GHz P4 Maschine:

2-3 Wochen fur initialen LaufHauptverzogerung: ”make config” Abfragen!und unresolved dependencies

I OpenOffice: ca. 10 GB fur den Build!I JDKs: 2-5 GBI Browser usw: meist 200-500 MBI Peak-Memory ca. 1 GB (!)I Upgrades nach initialem Lauf: Meist ein paar Stunden,

ca. 10-20 Upgrades

Upgrades

I Ports verwenden CVS

I CVS-Server: einige Mirrors

I Vorgehen:cd /usr/portscsup -L 2 /root/ports-supfilemake fetchindexportupgrade -arR -m BATCH=yes

I in ca. 1/4 der Falle: pkgdb -F

I wenn alles gut ging: packages bauen

I einmal im Monat /usr/ports/UPDATING anschauen

I Ziel: alles automatisch im Cron

Was steht in /root/ports-supfile ?

*default host=cvsup.se.FreeBSD.org*default base=/usr*default prefix=/usr*default release=cvs tag=. date=2009.09.06.19.45.57*default delete use-rel-suffix*default compress

Beispiel pkgdb -F

Packages ?

I tar Files

I Ein wenig Meta-Information, alles ASCII!

I /var/db/pkg/pkgdb.db

I /var/db/pkg/port-version/

I /var/db/pkg/port-version/+CONTENTSEine Liste aller Files und Details mit Checksummen

I pkg create -j -b

I pkg add

I pkg delete

I pkg info -W /usr/local/bin/wasndas

I alle Pfade auch per environment konfigurierbar

Unterschiedliche Versionen derselben Software ?

I gnupg1 vrs. gnupg2: Parallel verfugbar als gpg und gpg2

I mysql 5.0.x vrs. 5.1.x: Konflikt

I openoffice2 vrs. 3: Parallel

I jdk: jdk16, openjdk6, diablo-jdk16:Parallel via JAVA HOME

I Je nach Einzelfall

Umgang mit Sicherheitslucken ?

I Vulnerabilities and Exposures Markup Language

I http://www.vuxml.org/

I security/vuxml

I make -DDISABLE VULNERABILITIES

Eigene Ports

[porters]

I Makefile, pkg-descr

I make makesum

I portlint -A .

I Als SHAR verpacken

I mittels send-pr versenden

Beispiel: www/p5-HTML-Perlinfo

Warum build from source ?

I Abhangigkeitsgraphen, keine Listen

I Wann bricht es ?

I Verstehen der AnderungenI FrequenzI UmfangI AbhangigkeitenI Vollstandigkeit

I Erfahrung sammeln in der Softwareentwicklung

I Welche Apps auf Arch xyz ?

I Welche Apps auf FBSD Version abc ?

I Wie haufig ist der gesamte Baum konsistent ?

Verwendung ?

I Build from Source ist aufwendig

I Also nicht auf jedem Rechner alles bauen

I Referenz-Rechner

I FreeBSD:I ports-mgmt/tinderboxI Ports Cluster [fehler]

I Konsistente Builds

I Diese als Packages einpacken

I Tausch der aktualisierten Packages auf Zielhosts (cmppp)

Hinzufugen und loschen von Ports ?

I Schnell mal testen ?make all-depends-listmake package-depends-list

I siehe /usr/ports/Mk/bsd.port.mk fur mehr Details

I Einfacher Fall: Paket hangt von nix ab

I Komplizierter Fall: Paket hangt von anderen Dingen ab

I Zuruckschneiden des Paket-Baums ?

I /usr/ports/distfiles/ aufraumen ?

Dependency Hell

[dependency]

I Architektur (i386, amd64, ...)

I Build und Runtime

I Libraries, Programmbibliotheken

I shared libraries

I Welche Compiler ?

I Aufrufoptionen ?

I Konfigurations-Optionen ?

I Welche Tools ?

I Threads ?

I Wie oft dasselbe in verschiedenen Versionen ?

Kombinatorische Explosion

shared libraries ?

I Zur Laufzeit hinzugelinkte Programmteile

I Endung: .so

I z.B. mplayer: 74 Libraries!

I Aber mit Versionsnummern! libtcl84.alibtcl84.solibtcl84.so.1

I Uberhaupt: Versionsnummern!

I Hauptspeicher, Plattenplatz

I lookup Prozesse

I /etc/libmap.conf

I Versionierung von libraries

I Was ist eine API, was ist eine ABI ?

I Mix von static and dynamic linking ?

[shared]

Wann bricht eine Paketverwaltung ?

I Zwei AnwendungenI installieren FilesI mit demselben PfadI relevante Unterschiede

I Quell-Files sind nicht mehr zuganglich

I Komplexitat, z.B. databases/mysql-connector-java Note:this port now installs the pre-compiled driver without theoption of compiling from source, because compilationrequires a mix of Java-5 and Java-6 that is not supportedby bsd.java.mk

I Generell: Java: Timezones und Sommerzeit

I CPAN und PEAR und ...

I Local Changes

Kurz gesagt: Oft!

Zusammenfassung

I Ports und Packages

I Build-from-Source

I Aktualitat

I Funktioniert gut seit ca. 10 Jahren

I CPU/Platten/IO-Aufwendig

I Verstehen der Dependency Hell

I Softwareentwicklung und Grundlagen

Links 1

pkgcompare http://en.wikipedia.org/wiki/Package managerhttp://distrowatch.com/dwres.php?resource=package-management

debian http://www.debian.org/doc/manuals/apt-howto/index.en.html

pkgsrc http://www.netbsd.org/docs/software/packages.html

openpkg http://www.openpkg.org/documentation/thesis/

release http://www.atarininja.org/index.py/entries/freebsd/what-freebsd-stable-branch-means.1024px

supporthttp://people.freebsd.org/linimon/schedule/schedule.html

make1 http://www.wgdd.de/?p=28

make2 http://lists.freebsd.org/pipermail/freebsd-questions/2007-April/147533.html

Links 2

porters http://www.freebsd.org/doc/en/books/porters-handbook/

dependency http://en.wikipedia.org/wiki/Dependency hell

fehler http://pointyhat.freebsd.org/errorlogs/#errorlist

shared http://www.princeton.edu/jdonald/research/shared libraries/cs518 report.pdf