UUGRN:Jails/uug fbsd9: Unterschied zwischen den Versionen

Aus UUGRN
K (Rabe verschob die Seite UUGRN:Jails/shd fbsd9 nach UUGRN:Jails/uug fbsd9: shd/uug)
(Aktueller Stand zum Buildsystem)
Zeile 1: Zeile 1:
{{fbsd9.uugrn.org}} ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben wie Port-Maintenance, Package-Builder, …
+
{{fbsd9.uugrn.org}} ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben.
 
{{Navigationsleiste Systeme}}
 
{{Navigationsleiste Systeme}}
 
__TOC__
 
__TOC__
Zeile 5: Zeile 5:
  
 
== Zweck ==
 
== Zweck ==
Dieses Jail wird für FreeBSD Software Maintenance verwendet
+
* Daily updates von FreeBSD-Source (/freebsd/upstream/src/)
* Port-Maintenance
+
* Daily updates fon FreeBSD-Ports (/freebsd/upstream/ports/)
* Distfile-Mirror für installierte Software
+
* Daily Vanilla Image (make buildworl -> tarball)
* Package-Builder / Package-Repository
+
* Package-Buildsystem
* Zentrales Security-Monitoring (portaudit)
+
* Jail-Flavour-Builds
 +
* Images (=tarballs) bauen
 +
* Veröffentlichung aller Build-Ergebnisse unter /freebsd/ bzw. http://freebsd.uugrn.lan/
 +
* Upload von Distfiles und Packages nach http://ftp.uugrn.org/
  
== Daten ==
 
;Server: {{top3.uugrn.org}}
 
;Admin: [[Benutzer:Rabe|Raphael Eiselstein]] <sup><small>[[Benutzer Diskussion:Rabe|talk]]</small></sup> 01:07, 12. Apr. 2013 (CEST)
 
  
<!--
+
== Tägliche Updates ==
== aktuell ==
+
Jeden Tag um 03:30 Uhr wird ein Script ausgeführt, welcher folgende Tasks erledigt:
Die Pflege von /usr/src, das globale /usr/ports und der Download von Distfiles kann sehr gut auch in einem Jail stattfinden und kann damit die Hostmaschine von Aufgaben befreien. Ziel ist es, möglichst wenige Dienste und Infrastruktur direkt auf [[UUGRN:Server/top|top.uugrn.org]] vorzuhalten.
+
 
-->
+
;sourcen updaten: ''svn update'' in http://freebsd.uugrn.lan/upstream/src/9.1-RELEASE/ bzw. /freebsd/upstream/src/9.1-RELEASE/
 +
;sourcen als tarball: tar von /freebsd/upstream/src/9.1-RELEASE/ nach /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-src.tar / http://freebsd.uugrn.lan/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-src.tar
 +
;ports updaten: '''portsnap''' in /freebsd/upstream/ports/ / http://freebsd.uugrn.lan/upstream/ports/
 +
;ports als tarball: tar von /freebsd/upstream/ports/ in /freebsd/upstream/images/ports.tar / http://freebsd.uugrn.lan/upstream/images/ports.tar
 +
;vanilla image aus aktuellen sourcen erzeugen:
 +
: '''make buildworld installworld distribtion''' in /freebsd/upstream/src/9.1-RELEASE/ http://freebsd.uugrn.lan/upstream/src/9.1-RELEASE/
 +
: und einpacken als /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar http://freebsd.uugrn.lan/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
 +
: '''falls''' /freebsd/upstream/src/9.1-RELEASE/UPDATING neuer als /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
 +
;uugrn image aus aktuellem vanilla image bauen:
 +
:* vanilla image entpacken
 +
:* überflüssige Verzeichnisse entfernen
 +
:* Anlegen von /alternatives/, /data/ports/
 +
:* konfigurieren und patchen von /etc/motd, /etc/resolv.conf, /etc/profile, /etc/rc.conf, /etc/periodic.conf, /etc/localtime, /etc/mail/, /etc/crontab, /etc/login.conf,
 +
:* root-Passwort non-empty setzen
 +
:* alles einpacken unter /freebsd/uugrn/nightly/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn.tar oder http://freebsd.uugrn.lan/uugrn/nightly/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn.tar
 +
 
 +
== Package-Builds ==
 +
Package-Builds erzeugen für ausgewählte Ports passende Binär-Packages basierend auf den aktuellen Ports. Jeder Build wird dabei bei Bedarf mit einem Script (/build/tools/new_build.sh) in ein komplett eigenständiges Build-Verzeichnis gebootstrappt. Das Buildverzeichnis liegt unter /build/YYYYMMDDHHMMSS/.
 +
 
 +
Das Buildverzeichnis enthält eine Kopie der aktuellen Buildscripte und ein Unterverzeichnis namens buildroot, welches durch folgende nightly-Tagrballs gebootstrappt wird:
 +
* vanilla.tar: aktuelles Userland-Image basierend auf aktellsten Sourcen (direkt in .../buildroot/)
 +
* src.tar: aktuellste Sourcen in .../buildroot/usr/src/
 +
* ports.tar: aktueller Portsbaum in .../buildroot/usr/ports/
 +
 
 +
Außerdem wird in .../buildroot/build/ alles an Scripten und Konfiguration abgelegt, was für den Build *innerhalb* dieses chroot() erforderlich ist, u.a. das .../buildroot/build/build.sh, welches mehr oder weniger den vollständugen Build durchführt.
 +
 
 +
Nach Ende des (erfolgreichen) Builds innerhalb des buildroot/ werden die im Buildroot erzeugten Packages aus "herausgeholt".
 +
 
 +
== Jail-Flavours ==
 +
Basierend auf wiederum dem aktuellen nightly-Buildworld (/freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar) werden verschiedene Geschmacksrichtungen und typische Konfigurationen für Jails erzeugt, jeweils aufeinander aufbauend:
 +
 
 +
;uugrn/tiny:
 +
: Hier wird die nicht weiter konfigurtierte Standard-''world'' (''vanilla.tar'') angepasst für den Betrieb als Jail bei UUGRN
 +
: Es werden hier *keine* Packages installiert
 +
;uugrn/small:
 +
: Wird aus tiny.tar erzeugt
 +
: Packages: ''bash coreutils sudo gsed findutils nano screen portupgrade pkg_cutleaves portaudit''
 +
;uugrn/medium:
 +
: Wird erzeugt aus small.tar
 +
: Packages: ''vim-lite emacs-nox11 mc gnupg mutt slrn tin irssi lynx w3m wget rsync procmail figlet fetchmail''
 +
;uugrn/large:
 +
: Wird aus medium.tar erzeugt
 +
: Packages: ''links rar unrar zip zsh gawk ksh93 pwgen muh climm dovecot2 apache22 mod_php5 php5-extensions''
 +
;uugrn/huge:
 +
: Wird aus large.tar erzeugt
 +
: Packages (diese ziehen jeweils sehr viele Abhängikeiten mit): ''graphviz ImageMagick''
 +
;uugrn/www:
 +
: Wird aus small.tar erzeugt
 +
: Packages: ''apache22''
 +
;uugrn/wwwphp:
 +
: Wird aus www.tar erzeugt
 +
: Packages: ''mod_php5 php5-extensions''
 +
;uugrn/mediawiki:
 +
: wird aus wwwphp.tar erzeugt
 +
: Packages: (sieht sehr viele Abhängigkeiten nach): ''ImageMagick''
 +
 
 +
Die hier resultierenden Tarballs heißen vollständig dann z.B. FreeBSD-9.1-RELEASE-amd64-image-uugrn-medium.tar
 +
 
 +
== Images (tarballs) ==
 +
Am Ende des Build-Vorgangs wird alles in tarballs verpackt und für die Veröffentlichung vorbereitet.
  
{{Administrative Hinweise|Infos veraltet!}}
+
Ein typisches images/-Verzeichnis enthält folgende Tarballs:
== Port Maintenance ==
+
<pre>
Es existiert ein gemeinsames /usr/ports/ in allen Jails, die jedoch nur lesend daraus zugreifen können. Alle erforderlichen Schreibzugriffe sind standardmäßig so eingestellt, dass sie nach /data/ports gehen, siehe /etc/profile und /etc/make.conf.  
+
-rw-r--r--  1 root  wheel  2818033664 Jun  8 00:29 FreeBSD-9.1-RELEASE-amd64-image-buildroot-noports-nosrc.tar
 +
-rw-r--r--  1 root  wheel        167 Jun  8 00:30 FreeBSD-9.1-RELEASE-amd64-image-buildroot-noports-nosrc.tar.sha256
 +
-rw-r--r--  1 root  wheel  671779840 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar
 +
-rw-r--r--  1 root  wheel        6935 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar.origins
 +
-rw-r--r--  1 root  wheel        162 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar.sha256
 +
-rw-r--r--  1 root  wheel  2204937216 Jun  8 00:32 FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar
 +
-rw-r--r--  1 root  wheel        164 Jun  8 00:33 FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar.sha256
 +
-rw-r--r--  1 root  wheel  1347032576 Jun  8 00:52 FreeBSD-9.1-RELEASE-amd64-image-uugrn-huge.tar
 +
-rw-r--r--  1 root  wheel  1037542912 Jun  8 00:50 FreeBSD-9.1-RELEASE-amd64-image-uugrn-large.tar
 +
-rw-r--r--  1 root  wheel  1068101120 Jun  8 00:56 FreeBSD-9.1-RELEASE-amd64-image-uugrn-mediawiki.tar
 +
-rw-r--r--  1 root  wheel  837196800 Jun  8 00:47 FreeBSD-9.1-RELEASE-amd64-image-uugrn-medium.tar
 +
-rw-r--r--  1 root  wheel  496647168 Jun  8 00:46 FreeBSD-9.1-RELEASE-amd64-image-uugrn-small.tar
 +
-rw-r--r--  1 root  wheel  342000640 Jun  8 00:46 FreeBSD-9.1-RELEASE-amd64-image-uugrn-tiny.tar
 +
-rw-r--r--  1 root  wheel  563835392 Jun  8 00:53 FreeBSD-9.1-RELEASE-amd64-image-uugrn-www.tar
 +
-rw-r--r--  1 root  wheel  662937088 Jun  8 00:54 FreeBSD-9.1-RELEASE-amd64-image-uugrn-wwwphp.tar
 +
-rw-r--r--  1 root  wheel  341968384 Jun  6 22:59 FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
 +
-rw-r--r--  1 root  wheel  1438161920 Jun  6 22:59 FreeBSD-9.1-RELEASE-src.tar
 +
-rw-r--r--  1 root  wheel  382213632 Jun  6 22:59 ports.tar
 +
</pre>
  
Innerhalb von [[UUGRN:Jails/freebsd|freebsd.uugrn.org]] sieht die Welt etwas anders aus: Hier ist das gemeinsame /usr/ports/ als /data/ports_shared r/w gemountet. Es gibt dafür lokale /usr/ports als Arbeitskopie für die Port-Maintenance. Hier laufen alle Automatismen wie automatisches Package-Building, Distfile-Preloading, Pflege des INDEX etc.  
+
=== Verwendung der Images ===
 +
; FreeBSD-9.1-RELEASE-amd64-image-buildroot*.tar: enthält jeweils eine Auswahl des buildroots, mit dem die Packages gebaut wurden. Das dient vor allem Debugging- und Analysezwecken und allgemein als Referenz für die Herkunft der Packages (d.h. unter welchen kokreten Bedingungen sie gebaut wurden)
 +
;FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar: /usr/ports mit /usr/ports/distfiles/ und /usr/ports/packages/ jedoch ohne /var/db/ports/ (persistiertes ''make config'' der Ports, die das supporten)
 +
; FreeBSD-9.1-RELEASE-amd64-image-uugrn-*.tar: Fertige Jail-Images, die einfach mittels "tar xf" im Hauptverzeichnis eines *neuen* (leeren) Jails entpackt werden können. Ein neues Jail läst sich dann sinngemäß so anlegen und starten:
 +
<pre>
 +
# (jail.conf anpassen)
 +
# zfs create zroot/jails/uug/foo
 +
# cd /jails/uug/foo && tar xf /freebsd/uugrn/live/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn-small.tar
 +
# jail -c uug_foo (gemäß jail.conf::uug_foo{})
 +
</pre>
 +
; FreeBSD-9.1-RELEASE-src.tar und ports.tar:
 +
: sind die zum Zeitpunkt, an dem der Build angelegt wurde aktuellen Sourcen und Ports von FreeBSD. Dienen als Referenz und werden als stabile Version in den Jails verwendet.
 +
: Werden /freebsd/uugrn/{dev,qa,live}/src/ und /freebsd/uugrn/{dev,qa,live}/ports/ abgelegt und sollten via /alternatives/ports und /alternatives/src in den Jails entsprechend unter /usr/src und /usr/ports (read-only) zugreifbar sein:
 +
<pre>
 +
lrwxr-xr-x  1 root  wheel  19 Jun 14  2013 /usr/ports -> /alternatives/ports
 +
lrwxr-xr-x  1 root  wheel  25 May  9  2013 /alternatives/ports -> /freebsd/uugrn/live/ports
 +
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 /freebsd/uugrn/live/ports
 +
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 /freebsd/uugrn/20140606225918/ports
 +
</pre>
  
Für die Dauer irgendwelcher Maintenance-Operationen (cvsup, make index, ...) ist die lokale Version von /usr/ports potenziell out-of-sync. Erst nach dem erfolgreichen Abschluss aller Operationen werden die Änderungen von /usr/ports nach /data/ports_shared "committet" ([[rsync]]) und stehen somit allen anderen Jails zur Verfügung, darin enthalten aktuelle auch alle erforderlichen Distfiles und frisch gebaute Packages.
+
== Veröffentlichung ==
 +
=== Lokal in /freebsd ===
 +
Ein Build wird unter /freebsd/uugrn/ veröffentlicht und enthält sieht zB so aus:
  
Idealerweise muss in keinem anderen Jail ein Port selbst kompiliert werden, außer es handelt sich um einen Port, der noch nicht im Radar von [[UUGRN:Jails/freebsd|freebsd.uugrn.org]] ist. Man kann also entweder Packages direkt mit '''pkg_add''' installieren oder '''poirtinstall -PP''' bzw. '''portupgrade -PP''' verwenden.
+
<pre>
 +
# ls -la /freebsd/uugrn/20140606225918/
 +
total 19
 +
drwxr-xr-x  5 root  wheel  5 Jun  8 00:56 .
 +
drwxr-xr-x  7 root  wheel  14 Jun  8 11:02 ..
 +
drwxr-xr-x  2 root  wheel  20 Jun  8 00:55 images
 +
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 ports
 +
drwxr-xr-x  22 root  wheel  31 Jun  6 22:59 src
 +
</pre>
  
Für einen Experimentalbetrieb eignet sich zunächst [[UUGRN:Jails/shell|shell.uugrn.org]]. Hier wird dann auch MASTER_SITE_OVERRIDE und MASTER_SITE_INDEX von /usr/ports (ist in diesem Jail die verteile r/o Kopie) auf http://freebsd.uugrn.org/ports/ umgezogen.
+
;images/: enthält eine '''Kopie''' er in /build/20140606225918/images/ erzeugten Tarballs
 +
;ports/ und src/: enthalten exakt den Stand von FreeBSD-Sourcen und FreeBSD-Ports, wie sie innerhalb des Builds aktuell waren und genutzt wurden
 +
 +
=== FTP-Server ===
 +
;Distfiles: Beim Build benötigte (heruntergeladene) Distfiles werden auf dem FTP-Server hochgeladen und werden dort unter http://ftp.uugrn.org/pub/FreeBSD/ports/distfiles/ gesammelt. Hier befinden sind üblicherweise auch älte Versionen der jeweiligen Distfiles, zB verschiedene Releases von Perl 5.12 bis 5.16 in http://ftp.uugrn.org/pub/FreeBSD/ports/distfiles/perl/
  
Sobald auf einem der Jails, z.B. [[UUGRN:Jails/shell|shell.uugrn.org]], ein Distfile angefordert wird, welches auf http://freebsd.uugrn.org/ports/distfiles/${DIST_SUBDIR}/ nicht verfügbar ist, wird das Distfile wie gewohnt direkt von den Quellen gezogen, die im jeweiligen Port konfiguriert sind.  
+
; Packages: Gebaute Packages werden auf dem FTP-Server an der Stelle abgelegt, wo "pkg_add -r" sie suchen würde: http://ftp.uugrn.org/pub/FreeBSD/ports/amd64/packages-9.1-release/. Hat man in seinem Jail die Variable '''PACKAGEROOT="http://ftp.uugrn.lan"''' gesetzt (und exportiert), dann wird pkg_add -r die jeweiligen Packages auf dem FTP-Server automatisch an der passenden Stelle finden. Das geht auch externen Systemen aus, die keinen Zugriff auf /freebsd/ oder http://freebsd.uugrn.lan/ haben.
  
Durch den 404 im Logfile von [[UUGRN:Jails/freebsd|freebsd.uugrn.org]] kann dieses Jail nun ermitteln, welche(r) port(s) installiert wurde(n), da ein Rückschluss von einem Distfilenamen auf einen oder mehrere Ports möglich ist. Durch diesen Mechanismus kann fortlaufende der Bedarf an bestimmten Distfiles ermittelt werden (''Radarschirm'').
 
  
Alle auf dem ''Radarschirm'' befindlichen Ports werden, solange Bedarf besteht, auch als Package angeboten, wobei es hier auch eine Ausnahme- und Blockliste geben wird, da manche Ports nicht sinnvoll als Package gebaut werden sollten, z.B. sysutils/screen
+
== Daten ==
 +
;Server: {{top3.uugrn.org}}
 +
;Admin: [[Benutzer:Rabe|Raphael Eiselstein]] <sup><small>[[Benutzer Diskussion:Rabe|talk]]</small></sup> 01:07, 12. Apr. 2013 (CEST)
  
  

Version vom 22. Juni 2014, 02:35 Uhr

fbsd9.uugrn.org ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben.

[ Verein: Server: • top4higgsBeta ]
[ Vereinsjails: mailmx1mysqllistswikiblogspadproxyuugrnshellircbncnewsftpfbsd9gitAlphacalendarAlpha ]
[ Mitglieder-Jails: shellmilerabetricksterchefriedelshlhdiltrn ]


Zweck

  • Daily updates von FreeBSD-Source (/freebsd/upstream/src/)
  • Daily updates fon FreeBSD-Ports (/freebsd/upstream/ports/)
  • Daily Vanilla Image (make buildworl -> tarball)
  • Package-Buildsystem
  • Jail-Flavour-Builds
  • Images (=tarballs) bauen
  • Veröffentlichung aller Build-Ergebnisse unter /freebsd/ bzw. http://freebsd.uugrn.lan/
  • Upload von Distfiles und Packages nach http://ftp.uugrn.org/


Tägliche Updates

Jeden Tag um 03:30 Uhr wird ein Script ausgeführt, welcher folgende Tasks erledigt:

sourcen updaten
svn update in http://freebsd.uugrn.lan/upstream/src/9.1-RELEASE/ bzw. /freebsd/upstream/src/9.1-RELEASE/
sourcen als tarball
tar von /freebsd/upstream/src/9.1-RELEASE/ nach /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-src.tar / http://freebsd.uugrn.lan/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-src.tar
ports updaten
portsnap in /freebsd/upstream/ports/ / http://freebsd.uugrn.lan/upstream/ports/
ports als tarball
tar von /freebsd/upstream/ports/ in /freebsd/upstream/images/ports.tar / http://freebsd.uugrn.lan/upstream/images/ports.tar
vanilla image aus aktuellen sourcen erzeugen
make buildworld installworld distribtion in /freebsd/upstream/src/9.1-RELEASE/ http://freebsd.uugrn.lan/upstream/src/9.1-RELEASE/
und einpacken als /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar http://freebsd.uugrn.lan/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
falls /freebsd/upstream/src/9.1-RELEASE/UPDATING neuer als /freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
uugrn image aus aktuellem vanilla image bauen
  • vanilla image entpacken
  • überflüssige Verzeichnisse entfernen
  • Anlegen von /alternatives/, /data/ports/
  • konfigurieren und patchen von /etc/motd, /etc/resolv.conf, /etc/profile, /etc/rc.conf, /etc/periodic.conf, /etc/localtime, /etc/mail/, /etc/crontab, /etc/login.conf,
  • root-Passwort non-empty setzen
  • alles einpacken unter /freebsd/uugrn/nightly/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn.tar oder http://freebsd.uugrn.lan/uugrn/nightly/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn.tar

Package-Builds

Package-Builds erzeugen für ausgewählte Ports passende Binär-Packages basierend auf den aktuellen Ports. Jeder Build wird dabei bei Bedarf mit einem Script (/build/tools/new_build.sh) in ein komplett eigenständiges Build-Verzeichnis gebootstrappt. Das Buildverzeichnis liegt unter /build/YYYYMMDDHHMMSS/.

Das Buildverzeichnis enthält eine Kopie der aktuellen Buildscripte und ein Unterverzeichnis namens buildroot, welches durch folgende nightly-Tagrballs gebootstrappt wird:

  • vanilla.tar: aktuelles Userland-Image basierend auf aktellsten Sourcen (direkt in .../buildroot/)
  • src.tar: aktuellste Sourcen in .../buildroot/usr/src/
  • ports.tar: aktueller Portsbaum in .../buildroot/usr/ports/

Außerdem wird in .../buildroot/build/ alles an Scripten und Konfiguration abgelegt, was für den Build *innerhalb* dieses chroot() erforderlich ist, u.a. das .../buildroot/build/build.sh, welches mehr oder weniger den vollständugen Build durchführt.

Nach Ende des (erfolgreichen) Builds innerhalb des buildroot/ werden die im Buildroot erzeugten Packages aus "herausgeholt".

Jail-Flavours

Basierend auf wiederum dem aktuellen nightly-Buildworld (/freebsd/upstream/images/9.1-RELEASE/FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar) werden verschiedene Geschmacksrichtungen und typische Konfigurationen für Jails erzeugt, jeweils aufeinander aufbauend:

uugrn/tiny
Hier wird die nicht weiter konfigurtierte Standard-world (vanilla.tar) angepasst für den Betrieb als Jail bei UUGRN
Es werden hier *keine* Packages installiert
uugrn/small
Wird aus tiny.tar erzeugt
Packages: bash coreutils sudo gsed findutils nano screen portupgrade pkg_cutleaves portaudit
uugrn/medium
Wird erzeugt aus small.tar
Packages: vim-lite emacs-nox11 mc gnupg mutt slrn tin irssi lynx w3m wget rsync procmail figlet fetchmail
uugrn/large
Wird aus medium.tar erzeugt
Packages: links rar unrar zip zsh gawk ksh93 pwgen muh climm dovecot2 apache22 mod_php5 php5-extensions
uugrn/huge
Wird aus large.tar erzeugt
Packages (diese ziehen jeweils sehr viele Abhängikeiten mit): graphviz ImageMagick
uugrn/www
Wird aus small.tar erzeugt
Packages: apache22
uugrn/wwwphp
Wird aus www.tar erzeugt
Packages: mod_php5 php5-extensions
uugrn/mediawiki
wird aus wwwphp.tar erzeugt
Packages: (sieht sehr viele Abhängigkeiten nach): ImageMagick

Die hier resultierenden Tarballs heißen vollständig dann z.B. FreeBSD-9.1-RELEASE-amd64-image-uugrn-medium.tar

Images (tarballs)

Am Ende des Build-Vorgangs wird alles in tarballs verpackt und für die Veröffentlichung vorbereitet.

Ein typisches images/-Verzeichnis enthält folgende Tarballs:

-rw-r--r--  1 root  wheel  2818033664 Jun  8 00:29 FreeBSD-9.1-RELEASE-amd64-image-buildroot-noports-nosrc.tar
-rw-r--r--  1 root  wheel         167 Jun  8 00:30 FreeBSD-9.1-RELEASE-amd64-image-buildroot-noports-nosrc.tar.sha256
-rw-r--r--  1 root  wheel   671779840 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar
-rw-r--r--  1 root  wheel        6935 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar.origins
-rw-r--r--  1 root  wheel         162 Jun  8 00:31 FreeBSD-9.1-RELEASE-amd64-image-buildroot-packages.tar.sha256
-rw-r--r--  1 root  wheel  2204937216 Jun  8 00:32 FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar
-rw-r--r--  1 root  wheel         164 Jun  8 00:33 FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar.sha256
-rw-r--r--  1 root  wheel  1347032576 Jun  8 00:52 FreeBSD-9.1-RELEASE-amd64-image-uugrn-huge.tar
-rw-r--r--  1 root  wheel  1037542912 Jun  8 00:50 FreeBSD-9.1-RELEASE-amd64-image-uugrn-large.tar
-rw-r--r--  1 root  wheel  1068101120 Jun  8 00:56 FreeBSD-9.1-RELEASE-amd64-image-uugrn-mediawiki.tar
-rw-r--r--  1 root  wheel   837196800 Jun  8 00:47 FreeBSD-9.1-RELEASE-amd64-image-uugrn-medium.tar
-rw-r--r--  1 root  wheel   496647168 Jun  8 00:46 FreeBSD-9.1-RELEASE-amd64-image-uugrn-small.tar
-rw-r--r--  1 root  wheel   342000640 Jun  8 00:46 FreeBSD-9.1-RELEASE-amd64-image-uugrn-tiny.tar
-rw-r--r--  1 root  wheel   563835392 Jun  8 00:53 FreeBSD-9.1-RELEASE-amd64-image-uugrn-www.tar
-rw-r--r--  1 root  wheel   662937088 Jun  8 00:54 FreeBSD-9.1-RELEASE-amd64-image-uugrn-wwwphp.tar
-rw-r--r--  1 root  wheel   341968384 Jun  6 22:59 FreeBSD-9.1-RELEASE-amd64-image-vanilla.tar
-rw-r--r--  1 root  wheel  1438161920 Jun  6 22:59 FreeBSD-9.1-RELEASE-src.tar
-rw-r--r--  1 root  wheel   382213632 Jun  6 22:59 ports.tar

Verwendung der Images

FreeBSD-9.1-RELEASE-amd64-image-buildroot*.tar
enthält jeweils eine Auswahl des buildroots, mit dem die Packages gebaut wurden. Das dient vor allem Debugging- und Analysezwecken und allgemein als Referenz für die Herkunft der Packages (d.h. unter welchen kokreten Bedingungen sie gebaut wurden)
FreeBSD-9.1-RELEASE-amd64-image-buildroot-ports-full.tar
/usr/ports mit /usr/ports/distfiles/ und /usr/ports/packages/ jedoch ohne /var/db/ports/ (persistiertes make config der Ports, die das supporten)
FreeBSD-9.1-RELEASE-amd64-image-uugrn-*.tar
Fertige Jail-Images, die einfach mittels "tar xf" im Hauptverzeichnis eines *neuen* (leeren) Jails entpackt werden können. Ein neues Jail läst sich dann sinngemäß so anlegen und starten:
# (jail.conf anpassen)
# zfs create zroot/jails/uug/foo
# cd /jails/uug/foo && tar xf /freebsd/uugrn/live/images/FreeBSD-9.1-RELEASE-amd64-image-uugrn-small.tar
# jail -c uug_foo (gemäß jail.conf::uug_foo{})
FreeBSD-9.1-RELEASE-src.tar und ports.tar
sind die zum Zeitpunkt, an dem der Build angelegt wurde aktuellen Sourcen und Ports von FreeBSD. Dienen als Referenz und werden als stabile Version in den Jails verwendet.
Werden /freebsd/uugrn/{dev,qa,live}/src/ und /freebsd/uugrn/{dev,qa,live}/ports/ abgelegt und sollten via /alternatives/ports und /alternatives/src in den Jails entsprechend unter /usr/src und /usr/ports (read-only) zugreifbar sein:
lrwxr-xr-x   1 root  wheel  19 Jun 14  2013 /usr/ports -> /alternatives/ports
lrwxr-xr-x   1 root  wheel  25 May  9  2013 /alternatives/ports -> /freebsd/uugrn/live/ports
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 /freebsd/uugrn/live/ports
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 /freebsd/uugrn/20140606225918/ports

Veröffentlichung

Lokal in /freebsd

Ein Build wird unter /freebsd/uugrn/ veröffentlicht und enthält sieht zB so aus:

# ls -la /freebsd/uugrn/20140606225918/
total 19
drwxr-xr-x   5 root  wheel   5 Jun  8 00:56 .
drwxr-xr-x   7 root  wheel  14 Jun  8 11:02 ..
drwxr-xr-x   2 root  wheel  20 Jun  8 00:55 images
drwxr-xr-x  70 root  wheel  86 Jun  6 23:40 ports
drwxr-xr-x  22 root  wheel  31 Jun  6 22:59 src
images/
enthält eine Kopie er in /build/20140606225918/images/ erzeugten Tarballs
ports/ und src/
enthalten exakt den Stand von FreeBSD-Sourcen und FreeBSD-Ports, wie sie innerhalb des Builds aktuell waren und genutzt wurden

FTP-Server

Distfiles
Beim Build benötigte (heruntergeladene) Distfiles werden auf dem FTP-Server hochgeladen und werden dort unter http://ftp.uugrn.org/pub/FreeBSD/ports/distfiles/ gesammelt. Hier befinden sind üblicherweise auch älte Versionen der jeweiligen Distfiles, zB verschiedene Releases von Perl 5.12 bis 5.16 in http://ftp.uugrn.org/pub/FreeBSD/ports/distfiles/perl/
Packages
Gebaute Packages werden auf dem FTP-Server an der Stelle abgelegt, wo "pkg_add -r" sie suchen würde: http://ftp.uugrn.org/pub/FreeBSD/ports/amd64/packages-9.1-release/. Hat man in seinem Jail die Variable PACKAGEROOT="http://ftp.uugrn.lan" gesetzt (und exportiert), dann wird pkg_add -r die jeweiligen Packages auf dem FTP-Server automatisch an der passenden Stelle finden. Das geht auch externen Systemen aus, die keinen Zugriff auf /freebsd/ oder http://freebsd.uugrn.lan/ haben.


Daten

Server
top3.uugrn.orgoffline
Admin
Raphael Eiselstein talk 01:07, 12. Apr. 2013 (CEST)


siehe auch