diff options
-rw-r--r-- | hurd/running/creating_image_tarball.mdwn | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/hurd/running/creating_image_tarball.mdwn b/hurd/running/creating_image_tarball.mdwn new file mode 100644 index 00000000..ad315afe --- /dev/null +++ b/hurd/running/creating_image_tarball.mdwn @@ -0,0 +1,196 @@ +[[meta copyright="Copyright © 2008 Free Software Foundation, Inc."]] + +[[meta license="""[[toggle id="license" text="GFDL 1.2+"]][[toggleable +id="license" text="Permission is granted to copy, distribute and/or modify this +document under the terms of the GNU Free Documentation License, Version 1.2 or +any later version published by the Free Software Foundation; with no Invariant +Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license +is included in the section entitled +[[GNU_Free_Documentation_License|/fdl]]."]]"""]] + +The following anonftpsync-ports is used to create a Debian GNU/Hurd mirror. Run it using: + + sudo sh anonftpsync-ports + +<pre> +#! /bin/sh +set -e + +# This script originates from http://www.debian.org/mirror/anonftpsync +# modified by Martin Zobel-Helas <zobel@debian.org>, 2005-01-16 +# these modifications are published under the terms of the GNU GPL +# Modifications: +# + some more documentation about variables +# + added ARCH_EXCLUDE +# + mirror in a safe way, first /pool, then /dists and the rest +# modified by Aurelien Jarno <aurel32@debian.org>, 2007-12-02 +# these modifications are published under the terms of the GNU GPL +# + modifications to mirror debia,-ports.org +# Version: $Id: anonftpsync,v 1.18 2005/10/28 15:25:54 aba Exp $ + + +# Note: You MUST have rsync 2.0.16-1 or newer, which is available in slink +# and all newer Debian releases, or at http://rsync.samba.org/ + +# Set the variables below to fit your site. You can then use cron to have +# this script run daily to automatically update your copy of the archive. + +# Don't forget: +# chmod 744 anonftpsync + +# TO is the destination for the base of the Debian mirror directory +# (the dir that holds dists/ and ls-lR). +# (mandatory) + +TO=/home/foo/rsync-debian-ports + +# RSYNC_HOST is the site you have chosen from the mirrors file. +# (http://www.debian-ports.org/mirrors) +# (mandatory) + +RSYNC_HOST=rsync.debian-ports.org + +# RSYNC_DIR is the directory given in the "Packages over rsync:" line of +# the mirrors file for the site you have chosen to mirror. +# (mandatory) + +RSYNC_DIR=debian/ + +# LOGDIR is the directory where the logs will be written to +# (mandatory) + +LOGDIR=/var/log/rsync-debian-ports + +# ARCH_EXCLUDE can be used to exclude a complete architecture from +# mirrorring. Please use as space seperated list. +# Possible values are: +# armel hurd-i386 kfreebsd-amd64 kfreebsd-i386 +# +# There is one special value: source +# This is not an architecture but will exclude all source code in /pool +# +# eg. +# ARCH_EXCLUDE="hurd-i386" +# +# With a blank ARCH_EXCLUDE you will mirror all availible architectures +# (optional) + +ARCH_EXCLUDE="armel kfreebsd-amd64 kfreebsd-i386 m68k" + +# EXCLUDE is a list of parameters listing patterns that rsync will exclude. +# The following example would exclude mostly everything: +#EXCLUDE="\ +# --exclude binary-hurd-i386/ --exclude binary-kfreebsd-i386/ +# --exclude *_hurd-i386.deb --exclude *_knetbsd-i386.deb \ +# --exclude stable/ --exclude testing/ --exclude unstable/ \ +# --exclude source/ \ +# --exclude *.orig.tar.gz --exclude *.diff.gz --exclude *.dsc \ +# --exclude /base/ --exclude /bochs/ --exclude /obsolete/ \ +# " + +# With a blank EXCLUDE you will mirror the entire archive. +# (optional) + +EXCLUDE="--exclude binary-kfreebsd-i386/ --exclude *_knetbsd-i386.deb \ + --exclude source/ --exclude *.orig.tar.gz --exclude *.diff.gz \ + --exclude /bochs/ --exclude /obsolete/ \ + --exclude *kfreebsd* --exclude *m68* --exclude *sh* \ + " + +# MAILTO is the address to send logfiles to; +# if it is not defined, no mail will be sent +# (optional) + +MAILTO= + +# There should be no need to edit anything below this point, unless there +# are problems. + +#-----------------------------------------------------------------------------# + +# Check for some environment variables +if [ -z $TO ] || [ -z $RSYNC_HOST ] || [ -z $RSYNC_DIR ] || [ -z $LOGDIR ]; then + echo "One of the following variables seems to be empty:" + echo "TO, RSYNC_HOST, RSYNC_DIR or LOGDIR" + exit 2 +fi + +if ! [ -d ${TO}/project/trace/ ]; then + # we are running mirror script for the first time + mkdir -p ${TO}/project/trace +fi + +# Note: on some non-Debian systems, hostname doesn't accept -f option. +# If that's the case on your system, make sure hostname prints the full +# hostname, and remove the -f option. If there's no hostname command, +# explicitly replace `hostname -f` with the hostname. +HOSTNAME=`hostname -f` + +LOCK="${TO}/Archive-Update-in-Progress-${HOSTNAME}" + +# Exclude architectures defined in $ARCH_EXCLUDE +for ARCH in $ARCH_EXCLUDE; do + EXCLUDE=$EXCLUDE"\ + --exclude binary-$ARCH/ \ + --exclude disks-$ARCH/ \ + --exclude installer-$ARCH/ \ + --exclude Contents-$ARCH \ + --exclude Contents-$ARCH.gz \ + --exclude *_$ARCH.deb \ + --exclude *_$ARCH.udeb \ + --exclude pool-$ARCH/" + if [ "$ARCH" == "source" ]; then + SOURCE_EXCLUDE="\ + --exclude *.tar.gz \ + --exclude *.diff.gz \ + --exclude *.dsc " + fi +done + +# Logfile +LOGFILE=$LOGDIR/debian-mirror-ports.log + +# Get in the right directory and set the umask to be group writable +# +cd $HOME +umask 002 + +# Check to see if another sync is in progress +if lockfile -! -l 10800 -r 0 "$LOCK"; then + echo ${HOSTNAME} is unable to start rsync, lock file exists + exit 1 +fi +# Note: on some non-Debian systems, trap doesn't accept "exit" as signal +# specification. If that's the case on your system, try using "0". +trap "rm -f $LOCK > /dev/null 2>&1" exit + +set +e + +# First sync /pool-* +rsync --recursive --links --hard-links --times --verbose \ + $EXCLUDE $SOURCE_EXCLUDE \ + $RSYNC_HOST::$RSYNC_DIR/pool-* $TO >> $LOGFILE 2>&1 +result=$? + +if [ 0 = $result ]; then + # Now sync the remaining stuff + rsync --recursive --links --hard-links --times --verbose --delete-after \ + --exclude "Archive-Update-in-Progress-${HOSTNAME}" \ + --exclude "project/trace/" \ + --exclude "/pool-*/" \ + $EXCLUDE \ + $RSYNC_HOST::$RSYNC_DIR $TO >> $LOGFILE 2>&1 + + date -u > "${TO}/project/trace/${HOSTNAME}" +else + echo "ERROR: Help, something weird happened" | tee -a $LOGFILE + echo "mirroring /pool-* exited with exitcode" $result | tee -a $LOGFILE +fi + + +if ! [ -z $MAILTO ]; then + mail -s "debian ports archive synced" $MAILTO < $LOGFILE +fi + +savelog $LOGFILE +</pre> |