Date post: | 06-Aug-2019 |
Category: |
Documents |
Upload: | trannguyet |
View: | 213 times |
Download: | 0 times |
FreeBSD Ports und PackagesCCC Stuttgart
Kurt Jaeger, [email protected]
http://nepustil.net/
Stuttgart, 10. September 2009
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
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
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