BlogBlog ÜbersichtjailscriptportsoptFreeBSDLinksThermoskanne

Ports testen und Pakete erstellen mit einer Tinderbox

Mit einer Tinderbox können FreeBSD Ports getestet und Pakete aus den Ports erstellt werden. Möchte man Ports für FreeBSD-7.0 oder FreeBSD 8-CURRENT testen, muss man auch eine solche Version installiert haben, da sich Aufgrund von ABI Änderungen, diese Versionen nicht mit FreeBSD-5.x oder FreeBSD-6.x testen lassen (vielen Dank an miwi für diesen Hinweis!). Die Tinderbox findet man in den FreeBSD Ports unter ports-mgmt/tinderbox:

# cd /usr/ports/ports-mgmt/tinderbox/ && make install clean

Im Konfigurationsmenü kann danach ausgewählt werden, was für eine Datenbank und was für ein Webserver verwendet wird und ob cvsup oder csup zum Aktualisieren der Quelldateien verwendet werden soll. Im folgenden Beispiel wird mySQL als Datenbank und ein Apache Webserver verwendet.

 [ ] PGSQL     With pgsql
 [X] MYSQL     With mysql
 [X] CSUP      Use csup for updates
 [ ] CVSUP     Use cvsup for updates
 [ ] WEB       Install web interface
 [X] WEB_EXP   Install the new web interface
 [X] APACHE    Use Apache for web interface
 [ ] LIGHTTPD  Use LightHTTPD for web interface

Ist noch kein Datenbank-Server installiert, muss dieser auch noch installiert werden:

# cd /usr/ports/databases/mysql50-server && make install clean

Nun kann die Webserverkonfiguration den eigenen Wünschen angepasst werden:

# vi /usr/local/etc/apache/httpd.conf

Sollen die Datenbank und der Webserver bei einem Systemstart automatisch gestartet werden, müssen die benötigten Einträge in /etc/rc.conf gemacht werden:

mysql_enable="YES"
apache_enable="YES"

Nun können mySQL und der Apache gestartet werden:

# /usr/local/etc/rc.d/apache.sh start
# /usr/local/etc/rc.d/mysql-server start

Danach kann mit der Konfiguration der Tinderbox begonnen werden:

# /usr/local/tinderbox/scripts/setup.sh

Dabei müssen verschieden Angaben gemacht werden:

Enter database driver (mysql pgsql): mysql
 
Does this host have access to connect to the Tinderbox database as a database administrator? (y/n)y
 
Enter database admin user [root]:<Benutzer>
Enter database host [localhost]:<DB Server>
Enter database name [tinderbox]:<Datenbankname>
Are these settings corrrect:
    Database Administrative User : root
    Database Host                : localhost
    Database Name                : tinderbox
(y/n)y
 
INFO: Checking to see if database tinderbox already exists on localhost ...
INFO: The next prompt will be for the root's password on the database server
localhost.
Enter password:<Passwort>
INFO: Database tinderbox does not exist.  Creating database tinderbox on localhost ...
INFO: The next prompt will be for root's password on the database server localhost.
Enter password:<Passwort>
DONE. INFO: Loading Tinderbox schema into tinderbox ... The next prompt will be for root's password to the tinderbox database. Enter password:<Passwort>
DONE. Enter the desired username for the Tinderbox database : <Benutzername> Enter the desired password for tinderbox : <Passwort> Are these the settings you want: Database username : tinderbox Database user password : **** (y/n)y INFO: Adding permissions to tinderbox for tinderbox ... INFO: The next prompt will be for root's password on the database server localhost. Enter password: <Passwort> DONE. INFO: Database configuration complete.

Nun müssen noch einige Dateien kopiert und angepasst werden:

# cp /usr/local/tinderbox/scripts/tinderbox.ph.dist /usr/local/tinderbox/scripts/tinderbox.ph

In der Datei /usr/local/tinderbox/scripts/tinderbox.ph müssen noch einige Variablen ausgefüllt werden. Verwendet man die neue Weboberfläche, müssen die Variablen für www auskommentiert und jene für www-exp einkommentiert werden:

$BUILD_ROOT      = '/usr/local/tinderbox';
$SUBJECT         = '<Betreff einer Tinderbox Mail>';
$SENDER          = '<Senderadresse>';
$SMTP_HOST       = '<Mailserver>';
$SERVER_HOST     = '<Tinderbox Server>'; 
 
$TINDERBOX_URI           = '/tb';
 
# for www:
#$SHOWBUILD_URI           = $TINDERBOX_URI . '/showbuild.php?name=';
#$SHOWPORT_URI            = $TINDERBOX_URI . '/showport.php?id=';
 
# for www-exp:
$SHOWBUILD_URI           = $TINDERBOX_URI . '/index.php?action=list_buildports&build=';
$SHOWPORT_URI            = $TINDERBOX_URI . '/index.php?action=describe_port&id=';

Danach müssen noch zwei PHP Scripts kopiert und angepasst werden:

# cp /usr/local/tinderbox/scripts/www-exp/inc_ds.php.dist /usr/local/tinderbox/scripts/www-exp/inc_ds.php
# cp /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php.dist /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php

Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_ds.php:

$DB_HOST = '<DB Server>';
$DB_USER = '<DB User>';
$DB_PASS = '<DB Passwort>';

Einträge in der /usr/local/tinderbox/scripts/www-exp/inc_tinderbox.php:

 
$rootdir = '/usr/local/tinderbox';
$wwwrooturi  = '/tb';
$tinderbox_name  = '<Tinderbox Name>';
$tinderbox_title = '<Tinderbox Titel>';

Jetzt kann die Tinderbox initialisiert werden:

# cd /usr/local/tinderbox/scripts && ./tc init

Möchte man die Tinderbox über das Web-GUI steuern, muss noch der tinderd Dienst aktiviert werden:

# cp /usr/local/tinderbox/scripts/etc/rc.d/tinderd.sh /usr/local/etc/rc.d/
# chmod +x /usr/local/etc/rc.d/tinderd.sh
# echo 'tinderd_enable="YES"' >> /etc/rc.conf
# echo 'tinderd_directory="/usr/local/tinderbox/scripts"' >> /etc/rc.conf
# echo 'tinderd_flags="-nullfs"' >> /etc/rc.conf

Nun muss noch ein Benutzer für das Web-GUI erstellt werden:

# cd /usr/local/tinderbox/scripts && ./tc addHost
# ./tc addUser -u <Benutzername> -e <E-Mailadresse> -p <Passwort> -w
# ./tc setWwwAdmin -u <Benutzername>

Nun müssen noch die Einträge in der /usr/local/etc/apache/httpd.conf gemacht werden:

 Alias /tb/logs/ "/usr/local/tinderbox/logs/"
 Alias /tb/packages/ "/usr/local/tinderbox/packages/"
 Alias /tb/errors/ "/usr/local/tinderbox/errors/"
 Alias /tb/ "/usr/local/tinderbox/scripts/www-exp/"
 <Directory "/usr/local/tinderbox/">
         Order allow,deny
         Allow from all
 </Directory>

Danach kann der Apache neu gestartet werden:

# /usr/local/etc/rc.d/apache.sh restart

Als erstes wird ein Portbaum mit der Bezeichnung FreeBSD erstellt:

# cd /usr/local/tinderbox/scripts
# ./create PortsTree -p FreeBSD -d "FreeBSD ports tree" -w http://www.freebsd.org/cgi/cvsweb.cgi/ports/

Mit einer Tinderbox können Packet für verschieden FreeBSD Versionen erstellt werden. Folgender Befehl erstellt eine Tinderbox-Jail für FreeBSD 6.2:

# ./create Jail -j 6.2 -d "FreeBSD 6.2" -t RELENG_6_2

Nun wird der Tinderbox-Jail dem Portbaum zugewiesen:

# ./create Build -b 6.2-FreeBSD -j 6.2 -p FreeBSD -d "6.2-RELEASE with FreeBSD ports tree"

Es können nun auch weiter Tinderbox-Jails mit anderen FreeBSD Versionen und unterschiedliche Portbäume erstellt werden.

Danach können schon Ports, in diesem Beispiel www/fluxcms, getestet und Pakete dafür erstellt werden:

# ./tc addPort -b 6.2-FreeBSD -d www/fluxcms -r
# ./tinderbuild -nullfs -b 6.2-FreeBSD www/fluxcms

Die Logdateien und die Pakete können ganz einfach über das Web-GUI gefunden werden. Dieses ist über http://tinderboxserver/tb/ erreichbar.

Auch lassen sich bestehende Portbaume aktualisieren. Folgender Befehl aktualisiert den Portbaum welcher FreeBSD benannt wurde:

# ./tc updatePortsTree -p FreeBSD

Mehr Informationen zur Tinderbox findet man auf der Homepage http://tinderbox.marcuscom.com/.

Related Entries:
Tinderbox aufräumen
Wartezeit von tinderd ändern
Quellcode in der Tinderbox speichern
Tinderbox-Jail ohne Kompilieren erstellen
RSS-Feed der zuletzt gebauten Ports einer Tinderbox
Comments (4)  Permalink

Comments

enterhaken @ 11.11.2007 16:43 UTC
Klasse, eine saubere und einfache TB auf Deutsch, klasse.
Wuerdest du die Anleitung ggf ins bsdwiki.de noch einstellen?
Oder wenn das ok ist, mache ich das mal die Tage.

Auf jeden fall, respekt und Hut ab vor deinen anleitungen! :)
Beat @ 11.11.2007 18:11 UTC
Vielen Dank!

Natürlich kann der Artikel ins bsdwiki übernommen werden. Ich weiss allerdings nicht, ob ich in den nächsten Tagen Zeit finde um es selber zu machen. Ich denke auch, für ins Wiki müsste man den Artikel noch ein wenig ausbauen, da die Tinderbox noch einiges mehr kann.
Martin Wilke @ 14.11.2007 15:42 UTC
Du solltest bitte darauf Hinweisen das es im moment nicht moeglich ist mit FreeBSD 5.X oder 6.X hoehere Systeme zu testen also FreeBSD 7.0 oder 8-Current. Das liegt daran das dort einige API changes vorgenommen worden sind.

- Martin
Beat @ 17.11.2007 10:04 UTC
Vielen Dank für den Hinweis. Ich habe den Artikel dementsprechend geändert.
No new comments allowed (anymore) on this post.