UUGRN:Jails/uug fbsd9: Unterschied zwischen den Versionen

Aus UUGRN
(Aktueller Stand zum Buildsystem)
K (→‎Daten: ohne datum)
 
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{fbsd9.uugrn.org}} ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben.
{{fbsd9.uugrn.org}} ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben (Update, Buildsystem)
{{Navigationsleiste Systeme}}
{{Navigationsleiste Systeme}}
__TOC__
__TOC__
Zeile 5: Zeile 5:


== Zweck ==
== Zweck ==
* Daily updates von FreeBSD-Source (/freebsd/upstream/src/)
Betrieb des {{FreeBSD Buildsystem}}s für FreeBSD 9.x:
* Daily updates fon FreeBSD-Ports (/freebsd/upstream/ports/)
* Daily updates von FreeBSD-'''Source''' (/freebsd/upstream/src/)
* Daily Vanilla Image (make buildworl -> tarball)
* Daily updates fon FreeBSD-'''Ports''' (/freebsd/upstream/ports/)
* Package-Buildsystem
* Daily Vanilla Image (make buildworld → tarball)
* Jail-Flavour-Builds
* '''Package'''-Buildsystem
* Jail-'''Flavour'''-Builds
* Images (=tarballs) bauen
* Images (=tarballs) bauen
* Veröffentlichung aller Build-Ergebnisse unter /freebsd/ bzw. http://freebsd.uugrn.lan/
* interne Veröffentlichung aller Build-Ergebnisse unter '''/freebsd/''' bzw. '''http://freebsd.uugrn.lan/'''
* Upload von Distfiles und Packages nach http://ftp.uugrn.org/
* 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:
<pre>
-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>
=== 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>
== Veröffentlichung ==
=== Lokal in /freebsd ===
Ein Build wird unter /freebsd/uugrn/ veröffentlicht und enthält sieht zB so aus:
<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>
;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 ==
== Daten ==
;Server: {{top3.uugrn.org}}
;Server: {{top3.uugrn.org}}
;Admin: [[Benutzer:Rabe|Raphael Eiselstein]] <sup><small>[[Benutzer Diskussion:Rabe|talk]]</small></sup> 01:07, 12. Apr. 2013 (CEST)
;Admin: [[Benutzer:Rabe|Raphael Eiselstein]]
 


== siehe auch ==
== siehe auch ==
* {{FreeBSD Buildsystem}}
* [[FreeBSD]]
* [[FreeBSD]]
:* [[FreeBSD Ports]]
:* [[FreeBSD Ports]]

Aktuelle Version vom 22. Juni 2014, 13:40 Uhr

fbsd9.uugrn.org ist ein Infrastruktur-Jail für FreeBSD spezifische Aufgaben (Update, Buildsystem)

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


Zweck[Bearbeiten]

Betrieb des FreeBSD Buildsystems für FreeBSD 9.x:

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



Daten[Bearbeiten]

Server
top3.uugrn.orgoffline
Admin
Raphael Eiselstein

siehe auch[Bearbeiten]