]> gitweb.fluxo.info Git - simplepkg.git/commitdiff
tagged trunk/ rev. 400 as simplepkg 0.5
authorrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Fri, 13 Jul 2007 16:28:05 +0000 (16:28 +0000)
committerrhatto <rhatto@04377dda-e619-0410-9926-eae83683ac58>
Fri, 13 Jul 2007 16:28:05 +0000 (16:28 +0000)
git-svn-id: svn+slack://slack.fluxo.info/var/svn/simplepkg@401 04377dda-e619-0410-9926-eae83683ac58

110 files changed:
tags/0.5/README [new file with mode: 0644]
tags/0.5/conf/generic.mkSlackBuild.new [new file with mode: 0644]
tags/0.5/conf/repos.conf.new [new file with mode: 0644]
tags/0.5/conf/simplepkg.conf.new [new file with mode: 0644]
tags/0.5/doc/CHANGELOG [new file with mode: 0644]
tags/0.5/doc/COPYING [new file with mode: 0644]
tags/0.5/doc/README [new file with mode: 0644]
tags/0.5/doc/README.pt_BR [new file with mode: 0644]
tags/0.5/doc/README.simplaret [new file with mode: 0644]
tags/0.5/doc/README.simplaret.pt_BR [new file with mode: 0644]
tags/0.5/doc/TODO [new file with mode: 0644]
tags/0.5/doc/mkbuild.tex [new file with mode: 0644]
tags/0.5/doc/simplepkg.pdf [new file with mode: 0644]
tags/0.5/doc/simplepkg.tex [new file with mode: 0644]
tags/0.5/install/doinst.sh [new file with mode: 0644]
tags/0.5/install/slack-desc [new file with mode: 0644]
tags/0.5/lib/common.sh [new file with mode: 0644]
tags/0.5/simplepkg.SlackBuild [new file with mode: 0755]
tags/0.5/src/createpkg [new file with mode: 0644]
tags/0.5/src/jail-commit [new file with mode: 0755]
tags/0.5/src/jail-update [new file with mode: 0755]
tags/0.5/src/lspkg [new file with mode: 0755]
tags/0.5/src/mkbuild [new file with mode: 0755]
tags/0.5/src/mkjail [new file with mode: 0755]
tags/0.5/src/rebuildpkg [new file with mode: 0755]
tags/0.5/src/repos [new file with mode: 0755]
tags/0.5/src/simplaret [new file with mode: 0755]
tags/0.5/src/templatepkg [new file with mode: 0755]
tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.csh [new file with mode: 0755]
tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.sh [new file with mode: 0755]
tags/0.5/templates/openoffice/openoffice.d/opt/OpenOffice.org [new symlink]
tags/0.5/templates/openoffice/openoffice.perms [new file with mode: 0644]
tags/0.5/templates/openoffice/openoffice.s/post-install.sh [new file with mode: 0755]
tags/0.5/templates/openoffice/openoffice.template [new file with mode: 0644]
tags/0.5/templates/slackware/slackware.perms [new file with mode: 0644]
tags/0.5/templates/slackware/slackware.template [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/httpd.conf [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/php.ini [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/vhosts [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/hosts [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/logrotate.d/apache [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/profile [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.0 [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.4 [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.6 [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.K [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.M [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.S [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.httpd [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inet2 [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inetd [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.ip_forward [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.local [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.mysqld [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.postfix [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sendmail [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.serial [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sshd [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.syslog [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sysvinit [new file with mode: 0755]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rssh.conf [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/ssh/sshd_config [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/htdocs/missing.html [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/missing.html [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.perms [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.s/GPG-KEY [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.s/devices.tar.gz [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.s/skel.conf [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.s/vserver-legacy.sh [new file with mode: 0644]
tags/0.5/templates/vserver-legacy/vserver-legacy.template [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/apache/httpd.conf [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/apache/php.ini [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/apache/vhosts [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/hosts [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/logrotate.d/apache [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/profile [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.0 [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.4 [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.6 [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.K [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.M [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.S [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.httpd [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inet2 [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inetd [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.ip_forward [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.local [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.mysqld [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.postfix [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sendmail [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.serial [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sshd [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.syslog [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sysvinit [new file with mode: 0755]
tags/0.5/templates/vserver/vserver.d/etc/rssh.conf [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/etc/ssh/sshd_config [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/var/www/htdocs/missing.html [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.d/var/www/missing.html [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.perms [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.s/GPG-KEY [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.s/devices.tar.gz [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.s/vserver.sh [new file with mode: 0644]
tags/0.5/templates/vserver/vserver.template [new file with mode: 0644]
tags/0.5/utils/add-gpl [new file with mode: 0755]
tags/0.5/utils/add-slack-required [new file with mode: 0755]
tags/0.5/utils/convert-template-scheme [new file with mode: 0755]
tags/0.5/utils/merge-template [new file with mode: 0755]
tags/0.5/utils/metapkg [new file with mode: 0755]
tags/0.5/utils/searchpkg [new file with mode: 0755]

diff --git a/tags/0.5/README b/tags/0.5/README
new file mode 100644 (file)
index 0000000..d4d1463
--- /dev/null
@@ -0,0 +1,2 @@
+See doc/README for more information.
+Portuguese documentation at doc/README.pt_BR.
diff --git a/tags/0.5/conf/generic.mkSlackBuild.new b/tags/0.5/conf/generic.mkSlackBuild.new
new file mode 100644 (file)
index 0000000..6b5473e
--- /dev/null
@@ -0,0 +1,250 @@
+###################################################
+## Generic template for SlackBuilds
+##
+## Version 0.8.1 - Luis ( luis at riseup d0t net)
+##
+###################################################
+<head> all
+#!/bin/bash
+#
+# SlackBuild for [[PROGRAM NAME]]
+# [[PROGRAM URL]]
+#
+# Author: [[SLACKBUILD AUTHOR]]
+#
+</head>
+
+<slackbuildrc> all
+# Look for slackbuildrc
+if [ -f ~/.slackbuildrc ]; then
+  source ~/.slackbuildrc
+elif [ -f /etc/slackbuildrc ]; then
+  source /etc/slackbuildrc
+fi
+</slackbuildrc>
+
+<set_variables> all
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]}
+SRC_DIR=${SRC_DIR:=$CWD}/$PKG_NAME
+TMP=${TMP:=/tmp}
+PKG=${PKG:=$TMP/package-$PKG_NAME}
+REPOS=${REPOS:=$TMP}
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION"
+CONF_OPTIONS=${CONF_OPTIONS:=[[OTHER CONFIGURE ARGS]]}
+NUMJOBS=${NUMJOBS:="-j4"}
+</set_variables>
+
+<slkflags> all
+# Set system libraries' path and optmization flags based on $ARCH
+LIBDIR="$PREFIX/lib"
+
+if [ "$ARCH" = "i386" ]; then
+  SLKCFLAGS="-O2 -march=i386 -mcpu=i686"
+elif [ "$ARCH" = "i486" ]; then
+  SLKCFLAGS="-O2 -march=i486 -mcpu=i686"
+elif [ "$ARCH" = "i686" ]; then
+  SLKCFLAGS="-O2 -march=i686"
+elif [ "$ARCH" = "s390" ]; then
+  SLKCFLAGS="-O2"
+elif [ "$ARCH" = "x86_64" ]; then
+  SLKCFLAGS="-O2"
+  LIBDIR="$PREFIX/lib64"
+fi
+</slkflags>
+
+<error_codes> on
+# Set error codes (used by createpkg)
+ERROR_WGET=31;      ERROR_MAKE=32;      ERROR_INSTALL=33
+ERROR_MD5=34;       ERROR_CONF=35;      ERROR_HELP=36
+ERROR_TAR=37;       ERROR_MKPKG=38;     ERROR_GPG=39
+ERROR_PATCH=40;     ERROR_VCS=41;       ERROR_MKDIR=42
+</error_codes>
+
+<start_structure> all
+# Clean up any leftovers of previous builds
+rm -rf "$PKG_SRC" 2> /dev/null
+rm -rf "$PKG" 2> /dev/null
+
+# Create directories if necessary
+mkdir -p "$SRC_DIR" || exit $ERROR_MKDIR
+mkdir -p "$PKG" || exit $ERROR_MKDIR
+mkdir -p "$REPOS" || exit $ERROR_MKDIR
+</start_structure>
+
+<download_source> on
+# Dowload source if necessary
+SRC="$SRC_NAME-$SRC_VERSION.tar.[[SOURCE EXTENSION]]"
+URL="[[DOWNLOAD FOLDER URL]]/$SRC"
+
+if [ ! -s "$SRC_DIR/$SRC" ] || ! [[DECOMPRESSOR]] [[DECOMPRESSOR TEST FLAG]] "$SRC_DIR/$SRC" 2> /dev/null; then
+  wget "$URL" -O "$SRC_DIR/$SRC" || exit $ERROR_WGET
+fi
+</download_source>
+
+<md5sum_download_and_check> off
+# Download source's MD5 checksum if necessary and check it
+if [ ! -s "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" ]; then
+   wget "$URL.[[MD5SUM EXTENSION]]" -O "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" || exit $ERROR_WGET
+fi
+
+MD5SUM_SRC="$(md5sum "$SRC_DIR/$SRC" | cut -d " " -f 1)"
+MD5SUM_URL="$(grep "$SRC[ \t]*$" "$SRC_DIR/$SRC.[[MD5SUM EXTENSION]]" | cut -d " " -f 1)"
+
+[ "$MD5SUM_SRC" == "$MD5SUM_URL" ] || exit $ERROR_MD5
+</md5sum_download_and_check>
+
+<gpg_signature_check> off
+# Import minimized signing key from
+# [[SIGNING KEY URL]]
+gpg --import << EOKEY || exit $ERROR_GPG
+[[SIGNING KEY]]
+EOKEY
+
+# Dowload source's signature if necessary and check it
+if [ ! -s "$SRC_DIR/$SRC.sig" ]; then
+  wget "$URL.sig" -O "$SRC_DIR/$SRC.sig" || exit $ERROR_WGET
+fi
+
+gpg --verify "$SRC_DIR/$SRC.sig" "$SRC_DIR/$SRC" || exit $ERROR_GPG
+</gpg_signature_check>
+
+<untar_source> all
+# Untar
+cd "$TMP"
+tar --no-same-owner --no-same-permissions -xvf "$SRC_DIR/$SRC" || exit $ERROR_TAR
+cd "$PKG_SRC"
+</untar_source>
+
+<path_source> off
+# Patch source
+patches="[[PATCH FILES]]
+         $PKG_NAME.diff $PKG_NAME-$PKG_VERSION.diff
+         $PKG_NAME-$PKG_VERSION-$ARCH.diff $PKG_NAME-$ARCH.diff"
+for patch in $patches; do
+  if [ -f "$CWD/$patch" ]; then
+    patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/$patch" || exit $ERROR_PATCH
+  elif [ -f "$CWD/patches/$patch" ]; then
+    patch -Np[[NUMBER OF PREFIX SLASHES TO STRIP]] < "$CWD/patches/$patch" || exit $ERROR_PATCH
+  fi
+done
+</path_source>
+
+<configure> on
+# Configure
+CFLAGS="$SLKCFLAGS" \
+  CXXFLAGS="$SLKCFLAGS" \
+  ./configure \
+  --prefix="$PREFIX" --libdir="$LIBDIR" "$CONF_OPTIONS" || exit $ERROR_CONF
+</configure>
+
+<make_package> all
+# Compile
+make $NUMJOBS || exit $ERROR_MAKE
+</make_package>
+
+<install_package> all
+# Install
+make install DESTDIR="$PKG" || exit $ERROR_INSTALL
+</install_package>
+
+<strip_binaries> on
+# Strip binaries
+( cd "$PKG"
+  find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | \
+    xargs strip --strip-unneeded 2> /dev/null
+  find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | \
+    xargs strip --strip-unneeded 2> /dev/null
+)
+</strip_binaries>
+
+<compress_manpages> off
+# Compress and link manpages
+if [ -d "$PKG/$PREFIX/man" ]; then
+  ( cd "$PKG/$PREFIX/man"
+    for manpagedir in $(find . -type d -name "man*") ; do
+      ( cd $manpagedir
+        for eachpage in $( find . -type l -maxdepth 1) ; do
+          ln -s $( readlink $eachpage ).gz $eachpage.gz
+          rm $eachpage
+        done
+        gzip -9 *.?
+      )
+    done
+  )
+fi
+</compress_manpages>
+
+<compress_info_files> off
+# Compress info files
+if [ -d "$PKG/$PREFIX/info" ]; then
+  ( cd "$PKG/$PREFIX/info"
+    rm -f dir
+    gzip -9 *
+  )
+fi
+</compress_info_files>
+
+<install_documentation> on
+# Install documentation
+DOCS="[[DOCUMENTATION FILES]]"
+mkdir -p "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION" || exit $ERROR_MKDIR
+cp -a $DOCS "$PKG/usr/doc/$PKG_NAME-$PKG_VERSION"
+</install_documentation>
+
+<slackdesc> on
+# Add package description (slack-desc)
+mkdir -p "$PKG/install" || exit $ERROR_MKDIR
+cat << EODESC > "$PKG/install/slack-desc"
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.  Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in.  You must
+# make exactly 11 lines for the formatting to be correct.  It's also
+# customary to leave one space after the ':'.
+
+        |-----handy-ruler------------------------------------------------------|
+[[SLACK-DESC]]
+EODESC
+</slackdesc>
+
+<postinstall_script> off
+# Add a post-installation script (doinst.sh)
+cat << EOSCRIPT > "$PKG/install/doinst.sh"
+config() {
+  NEW="\$1"
+  OLD="\$(dirname \$NEW)/\$(basename \$NEW .new)"
+  # If there's no config file by that name, mv it over:
+  if [ ! -r \$OLD ]; then
+    mv \$NEW \$OLD
+  elif [ "\$(cat \$OLD | md5sum)" = "\$(cat \$NEW | md5sum)" ]; then
+    # toss the redundant copy
+    rm \$NEW
+  fi
+  # Otherwise, we leave the .new copy for the admin to consider...
+}
+
+config path/to/config_file.new
+[[REST OF DOINST.SH]]
+EOSCRIPT
+</postinstall_script>
+
+<build_package> all
+# Build the package
+cd "$PKG"
+makepkg -l y -c n "$REPOS/$PKG_NAME-$PKG_VERSION-$ARCH-$BUILD.tgz" || exit $ERROR_MKPKG
+</build_package>
+
+<clean_builds> on
+# Delete source and build directories if requested
+if [ "$CLEANUP" == "yes" ]; then
+  rm -rf "$PKG_SRC" "$PKG"
+fi
+</clean_builds>
diff --git a/tags/0.5/conf/repos.conf.new b/tags/0.5/conf/repos.conf.new
new file mode 100644 (file)
index 0000000..1d77419
--- /dev/null
@@ -0,0 +1,41 @@
+#
+# repository definitions for simplaret
+# please dont use any spaces inside a repository definition
+#
+
+# root repositories
+ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+ROOT-i386="sarava%http://slack.sarava.org/slackware/"
+ROOT-x86_64="sarava%http://slack.sarava.org/slamd64/"
+ROOT-x86_64="slackadelic%http://mirror1.slackadelic.com/slamd64/"
+ROOT-x86_64="heanet%http://ftp.heanet.ie/pub/slamd64/"
+ROOT-powerpc="workaround%http://slackintosh.workaround.ch/pub/slackintosh/"
+ROOT-s390="ibiblio%http://distro.ibiblio.org/pub/linux/distributions/slack390/"
+
+# noarch
+NOARCH="sarava%http://slack.sarava.org/packages/noarch"
+
+# i386 10.2
+REPOS-i386-10.2="sarava%http://slack.sarava.org/packages/slackware/slackware-10.2/"
+PATCHES-i386-10.2="sarava%http://slack.sarava.org/packages/slackware/slackware-10.2/patches/"
+
+# x86_64 10.2
+REPOS-x86_64-10.2="sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2/"
+PATCHES-x86_64-10.2="sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2/patches/"
+
+# x86_64 10.2b
+REPOS-x86_64-10.2b="sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2b/"
+PATCHES-x86_64-10.2b="sarava%http://slack.sarava.org/packages/slamd64/slamd64-10.2b/patches/"
+
+# i386 11.0
+REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"
+PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"
+
+# x86_64 11.0
+REPOS-x86_64-11.0="sarava%http://slack.sarava.org/packages/slamd64/slamd64-11.0/"
+PATCHES-x86_64-11.0="sarava%http://slack.sarava.org/slamd64/slamd64-11.0/patches/"
+
+# powerpc 11.0
+REPOS-powerpc-11.0="sarava%http://slack.sarava.org/packages/slackintosh/slackintosh-11.0/"
+PATCHES-powerpc-11.0="workaround%http://slackintosh.workaround.ch/pub/slackintosh/11.0/patches/"
+
diff --git a/tags/0.5/conf/simplepkg.conf.new b/tags/0.5/conf/simplepkg.conf.new
new file mode 100644 (file)
index 0000000..50ea4ad
--- /dev/null
@@ -0,0 +1,152 @@
+#
+# /etc/simplepkg/simplepkg.conf
+#
+
+# Default architecture: set this option if you dont want simplepkg
+# to use the value from /etc/slackware-version
+# DEFAULT_ARCH="i386"
+
+# Default version: set this option if you dont want simplepkg;
+# to use the value from /etc/slackware-version
+# DEFAULT_VERSION="11.0"
+
+# Where jails are placed
+JAIL_ROOT="/vservers"
+
+# Wheter mkjial should add new jails in the jail list;
+# to enable it, set to "1" or "yes"
+ADD_TO_JAIL_LIST="1"
+
+# Whether mkjail should clean the package cache before installation
+# to enable it, set to "1" or "yes"
+SIMPLARET_CLEAN="1"
+
+# whether mkjail should clean the package cache after the installation;
+# to enable it, set to "1" or "yes"
+SIMPLARET_DELETE_DOWN="1"
+
+# Whether mkjail should issue a simplaret --update before install the jail;
+# to enable it, set to "1" or "yes"
+SIMPLARET_UPDATE="1"
+
+# Wheter try to download from the next repository on failed download.
+SIMPLARET_DOWNLOAD_FROM_NEXT_REPO="1"
+
+# Wheter delete also patches when simplaret --purge is called;
+# to enable it, set to "1" or "yes"
+SIMPLARET_PURGE_PATCHES="1"
+
+# Whether delete each package rigth after its installation;
+# to enable it, set to "1" or "yes"
+SIMPLARET_DELETE_DURING="0"
+
+# Delete packages older than N weeks from the cache
+SIMPLARET_PURGE_WEEKS="3"
+
+# Where patches are placed
+PATCHES_DIR="/var/simplaret/patches"
+
+# Place to store your packages
+STORAGE="/var/simplaret/packages"
+
+# Whether to use passive ftp transfers;
+# to enable it, set to "1" or "yes"
+PASSIVE_FTP="1"
+
+# Http retrieval tool;
+# available parameters are "wget" or "curl"
+HTTP_TOOL="curl"
+
+# Ftp retrieval tool;
+# available parameters are "wget", "curl" or "ncftpget"
+FTP_TOOL="curl"
+
+# Set connection timeout in seconds
+CONNECT_TIMEOUT="20"
+
+# ROOT repository package priority
+ROOT_PRIORITY="patches slackware extra testing pasture"
+
+# REPOS repository package priority
+REPOS_PRIORITY="patches slackware extra testing pasture"
+
+# Whether to check package signatures (you should have the repository
+# maintainer key on your keyring)
+SIGNATURE_CHECKING="0"
+
+# Whether simplaret will try to solve dependencies by looking
+# for packages' slack-required
+DEPENDENCY_CHECKING="1"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# donwload even # already applied patches, a good option when you plan
+# to keep local copies of all needed patches for your system
+DOWNLOAD_EVEN_APPLIED_PATCHES="0"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# look at your standard repositories for new packages; if it find a
+# package with different version of your current installed package and
+# also this package isnt in the packages folder, then the new package
+# is applied; if in doubt, just say no or leave blank. Otherwise set it
+# either to "yes" or "1" and remember that if enabling this feature can
+# cause problems if you use more than one REPOS definition for each
+# ARCH and VERSION. Also, this option can be very slow.
+CONSIDER_ALL_PACKAGES_AS_PATCHES="0"
+
+# Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+# store patches it finds on ROOT repositories on
+#
+#   $PATCHES_DIR/$ARCH/$VERSION/root-$repository_name.
+#
+# By default this option is turned off because it breaks the standard
+# way to store packages and can cause some confusion, but its an useful
+# feature if you like to see all patches apart from common packages and/or
+# stored in the same tree.
+STORE_ROOT_PATCHES_ON_PATCHES_DIR="0"
+
+# Set to yes if your templates will be placed in a subversion repository
+# This just work if TEMPLATE_STORAGE_STYLE is set to own-folder (default)
+TEMPLATES_UNDER_SVN="no"
+
+# Where your templates will be located.
+# Dont change it except you know what you're doing.
+TEMPLATE_FOLDER="/etc/simplepkg/templates"
+
+# This variable controls in which folder / subfolder your templates will
+# be stored. Possible values are:
+#
+# - simplepkg-folder: templates are stored at /etc/simplepkg
+# - templates-folder: templates are stored at /etc/simplepkg/templates
+# - own-folder: each template stored at its own folder
+#               at /etc/simplepkg/templates/template-name
+#
+# This variable has backwards purposes only, so dont change it.
+TEMPLATE_STORAGE_STYLE="own-folder"
+
+#---------------------------------------------------------------------
+#                     MKBUILD AND CREATEPKG SECTION
+#---------------------------------------------------------------------
+# Set SlackBuilds default directory from scripts
+SLACKBUILDS_DIR="/var/slackbuilds"
+
+# Set binaries default repository directory
+#MAKEPKG_REPOS="/var/createpkg"
+
+# Set sources default directory
+#SOURCE_DIR="/var/sources"
+
+# Set color style
+# possible values are: color,gray, none
+#COLOR_MODE="none"
+
+# Remove old packages from repository tree by createpkg
+# 0 enable
+# 1 desable
+#REMOVE_OLD_PACKAGE=1
+
+# Move package to SlackBuilds-like tree
+# 0 enable
+# 1 desable
+#MOVE_BIN_PACKAGE=1
+
+#---------------------------------------------------------------------
diff --git a/tags/0.5/doc/CHANGELOG b/tags/0.5/doc/CHANGELOG
new file mode 100644 (file)
index 0000000..1a98742
--- /dev/null
@@ -0,0 +1,404 @@
+simplepkg changelog
+===================
+
+0.5pre23
+========
+
+  - updated documentation
+
+0.5pre22
+========
+
+  - simplaret:
+    - small fix
+  - common.sh:
+    - fixes on metafiles generation
+
+0.5pre21
+========
+
+  - templatepkg:
+    - now --delete can also remove the file from a jail
+
+0.5pre20
+========
+
+  - small changes
+  - jail-commit:
+    - template files security
+
+0.5pre19
+========
+
+  - simplaret:
+    - bugfixes
+    - options --get and --install now can work
+      with full file name.
+
+0.5pre15-18
+===========
+
+  - bugfixes
+
+0.5pre14
+========
+
+  - simplaret
+    - added variable REPOS_PRIORITY
+    - added variable SIMPLARET_DOWNLOAD_FROM_NEXT_REPO
+
+  - lspkg:
+    - small bugfix
+
+  - common.sh:
+     - on search_template, doesnt return a template from
+       defaults/ if the function is called with --update
+
+  - utils/add-slack-required:
+    - command line enhancement
+
+0.5pre9 - 0.5pre13
+==================
+
+  - bugfix releases
+
+0.5pre8
+=======
+
+  - lspkg:
+    - bugfix
+
+  - common.sh:
+    - bugfix in function slash
+
+0.5pre7
+=======
+
+  - simplaret:
+    - fixed bug for ROOT definitions when there is packages
+      inside of folders different than ROOT_PRIORITY
+
+0.5pre6
+=======
+
+  - repos:
+    - FILE_LIST generation fix
+
+  - mkjail:
+    - new config variable ADD_TO_JAIL_LIST controls wheter to
+      add new jails into the JAIL_LIST file
+
+0.5pre5
+=======
+
+  - jail-commit
+    - SILENT env variable to decrease verbosity
+    
+0.5pre4
+=======
+
+  - templatepkg:
+    - small fixes
+    - help usage summary improvements
+    - now using variable TEMPLATE_FOLDER
+    - SILENT env variable to decrease verbosity
+    - option -p | --post-install renamed to -b | --batch-edit
+    - option -p | --post-install now used to build a package from a template
+    - option -d | --delete now can also remove post-install scripts
+
+  - common.sh
+    - small fixes
+    - now using variable TEMPLATE_FOLDER
+
+  - jail-commit:
+    - calling templatepkg silently
+    - small fixes
+
+0.5pre3
+=======
+
+  - again, lots of bugfixes
+
+  - jail-commit:
+    - update a template just once if finds more than one entry
+      for a template in the jailist
+
+0.5pre2
+=======
+
+  - lots of bugfixes
+
+  - templatepkg:
+    - now creates missing components in a template
+
+0.5pre1
+=======
+
+  Lots of changes!
+
+  - repos: cosmetic changes
+
+  - lspkg:
+    - support for $ROOT env variable
+    - some improvements
+
+  - CHANGELOG cleanup
+
+  - subversion repository support for templates
+
+  - metapkg moved to utils/
+
+  - simplaret:
+    - new config variables:
+      - STORE_ROOT_PATCHES_ON_PATCHES_DIR
+      - SIGNATURE_CHECKING
+      - ROOT=/otherroot works for --install, --remove and --upgrade
+    - signature checking
+    - dependency checking through slack-required
+
+  - mkjail:
+    - added support for slack-required as templates
+    - templates now can be stored either on
+      - /etc/simplepkg/template_name.template
+      - /etc/simplepkg/templates/template_name.template
+      - /etc/simplepkg/templates/template_name/template_name.template
+
+  - jail-update
+    - old script renamed to jail-commit
+    - now update a jail from a template
+    - svn repository support
+
+  - jail-commit
+    - new script, commit changes from a jail to the templates
+    - svn repository support
+
+  - templatepkg:
+    - major rewrite
+    - svn repository support
+    - now supports a tagfile or slack-required as a template
+    - new/changed options
+      -c | --create: improvements
+      -a | --add: changed to add files into a template
+      -u | --update: update a template
+      -d | --delete: delete files or folders from a template
+      -s | --sync: sync /etc/simplepkg/templates working copy
+      -e | --export: export /etc/simplepkg/templates to a svn repository
+      -i | --import: grab /etc/simplepkg/templates from a svn repository
+      -r | --remove: remove a template
+      -l | --list: list templates
+      -p | --post-install: add or edit post-installation scripts
+      -t | --template-edit: edit template package list
+      -h | --help: display this summary
+
+0.4.9pre18-23
+=============
+
+  - simplaret:
+    - enhanced http retrieval: curl support
+    - enhanced verbosity
+    - get-patches small changes
+    - various fixes
+
+0.4.9pre10-17
+=============
+
+  - lots of simplaret fixes
+
+0.4.9pre9
+=========
+
+  - createpkg:
+    - speedup
+    - ncftpget support
+    - timeout support
+    - sets the correct architecture
+
+  - deleted jail-upgrade
+
+  - removed swaret support
+
+0.4.9pre8
+=========
+
+  - createpkg: bugfix
+
+  - common.sh:
+    - enhanced config file evaluation
+    - fixed function default_arch
+
+  - simplaret:
+    - config evaluation via common.sh
+    - new config parameter SIMPLARET_PURGE_PATCHES
+0.4.9pre7
+=========
+
+  - repos: added patches/ metafile creation
+
+  - jail-upgrade:
+    - added option CONSIDER_ALL_PACKAGES_AS_PATCHES
+    - merged swaret and simplaret upgrade procedures
+    - act recursively on patches' folder
+
+  - simplaret: lots of changes, most important are:
+    - new repository scheme, take a look at repos.conf.new.
+    - --get looks first to PATCHES repositories, then ROOT,
+      then REPOS and finally at NOARCH repositories; the
+      firts matching package is downloaded.
+    - new config parameter ROOT_PRIORITY set the priority
+      of folder lookup at a ROOT repository, defaults to
+      "patches slackware extra testing pasture".
+    - for --get, check if an already existing package
+      in the local repository has the same version and
+      build number, otherwise erase the old and download
+      the new one.
+    - fixed --get-paches
+    - added --upgrade option
+    - added --install
+    - added --remove
+    - new config parameter DOWNLOAD_EVEN_APPLIED_PATCHES
+
+  - createpkg: lots of changes
+
+0.4.9pre6
+=========
+
+  - createpkg:
+    - fixes
+    - now with slackbuild error handling
+    - increased verbosity
+
+  - small fixes on rebuildpkg 
+
+  - lspkg enhancements
+
+  - simplaret fix on --purge
+
+  - updated default repos.conf
+
+0.4.9pre5
+=========
+
+  - added script "repos"
+
+  - moved simplaret to /usr/bin
+
+0.4.9pre4
+=========
+
+  - createpkg: better command line evaluation,
+    now using "upgradepkg --install-new" to
+    install a package and added the command
+    line option --no-deps so createpkg doesn't
+    goes down to solve all slack-required
+    dependencies.
+
+0.4.9pre3
+=========
+
+  - small fix on createpkg when handling with
+    slackbuilds with similar names
+
+0.4.9pre2
+=========
+
+  - fixed simplepkg.SlackBuild
+
+  - fixed doinst.sh
+
+  - re-organized the source repository
+
+  - added createpkg
+
+  - updated README and README.pt_BR
+
+0.4.8
+=====
+
+  - simplaret: removed extra folder from slamd64 definition
+
+  - fixed a typo
+
+0.4.7
+=====
+
+  - templatepkg bugfix on blank template lines and on package deletion
+    changed simplaret working dir in simplaret.conf.new
+
+0.4.6
+=====
+
+  - small bugfix on jail-update that prevented template update
+
+0.4.5
+=====
+
+  - vserver template update
+
+0.4.4
+=====
+
+  - WARNING option on config file for simplaret
+
+  - SILENT env var, if a non-zero value, keeps simplaret
+    work silenty when purging and works like if WANRING is set
+    to not null.
+
+  - added SIMPLARET_DELETE_DURING config parameter: when set
+    to a non-zero value deletes each package rigth after its
+    installation
+
+0.4.3
+=====
+
+  - added openoffice.org template
+
+0.4.2
+=====
+
+  - common.sh: fix on install_packages when handling
+    with similar package names
+
+0.4.1
+=====
+
+  - templatepkg: fixed tagfiles and comment handling
+
+0.4
+===
+
+  - multi-plataform and version management
+
+    now simplepkg supports jails with architectures and versions 
+    others than the main system, read the docs for details.
+
+  - added simplaret: a small script for downloading packages
+     
+  - jail-upgrade
+
+      * arch checking via /etc/slackware-version on each jail
+      * supports multi-arch and multi-version repository
+      * integrated with simplaret
+
+  -  common.sh: improved functions to support simplaret
+
+0.3.7-0.3.9
+===========
+
+  - bugfix releases
+
+0.3.6
+=====
+
+  - added "-u" option to eval_config to ask for a swaret --update
+
+0.3.5
+=====
+
+  - "main" jail support for jail-update
+
+0.3.4
+=====
+
+  - Started changelog :)
+
diff --git a/tags/0.5/doc/COPYING b/tags/0.5/doc/COPYING
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+\f
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+\f
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+\f
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+\f
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year  name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/tags/0.5/doc/README b/tags/0.5/doc/README
new file mode 100644 (file)
index 0000000..47143ca
--- /dev/null
@@ -0,0 +1,428 @@
+Simplepkg: installation manager and packaging system
+----------------------------------------------------
+
+Author: Silvio Rhatto <rhatto at riseup.net>
+Licence: GPL
+
+Simplepkg is a non-intrusive management system running on top of pkgtool made of a
+set of scripts which helps the sysadmin and developing cycles of an slackware system.
+It can be used to create packages and repositories as long as the operational system
+installation and config file change tracking.
+
+Documentation
+-------------
+
+  English documentation: README | http://slack.sarava.org/simplepkg-en
+  Portuguese documentation: REAMDE.pt_BR | http://slack.sarava.org/simplepkg
+
+Description
+-----------
+
+All GNU/Linux distributions comes with a well developed packaging system. The question now
+is how pratical is the way to install, configure and control any changes in a system.
+
+As an example, suppose you should keep a list of about 200 slackware machines, some
+of them used as desktops, others as mail or webservers. If you lost some hardrives
+or usually need to re-install or update some of those boxes.
+
+Using the slackware installation cd and configuring by hand all the time you got a crash
+is a time loss activity and you'll never know if something remained missconfigured. An
+alternative is to keep a complete backup of a machine or some parts of the tree, but for
+a large number of different boxes this procedure costs a lots of resources.
+
+Simplepkg offers an alternative sollution for this and other problems related to installation
+management, allowing you to keep templates of each machine and install a custom slackware
+system with just one or a few commands. Creating and upgrading chroot and vservers is easy
+with simplepkg.
+
+Package and installation management is not everything simplepkg can do. It can also be used
+to create vservers, create packages and store system configuration files in a subversion
+repository.
+
+Simplepkg works with any (official or not) slackware port that follows the minimum system
+guidelines.
+
+Architecture
+------------
+
+Simplepkg is a set of scripts wrote in the KISS philosophy. Its a pretty simple system, composed
+by the following commands:
+
+   - mkjail: build a slackware jail/installation in a folder
+   - templatepkg: create or update a package list of an installation template
+   - lspkg: show installed packages and its contents
+   - jail-commit: update all configuration files of a template
+   - jail-update: jail-commit counterpart
+   - rebuildpkg: rebuild a package based on its /var/log/packages entry
+   - simplaret: package retrieval tool
+   - createpkg: donwload, compile and package creationg script
+   - repos: creates and manages binary repositories
+   - mkbuild: app to build slackware build scripts
+
+Installation
+------------
+
+The latest version of simplepkg is locate at http://slack.sarava.org/packages/noarch/.
+Install it with the usual way:
+
+  installpkg simplepkg-VERSION-noarch-BUILD.tgz
+
+Simplepkg usage
+---------------
+
+The three main simplepkg uses are:
+
+  - Package managemen
+  - Jail/installation creation and management
+  - Package creation
+
+Package management is made with simplaret app, whose behaviour is detailed in its own document.
+The following sections will only show how simplepkg can be used to manage jails and template
+and create packages.
+
+Creating templates
+------------------
+
+Initially, simplepkg was built to help slackware install automation. To do that, it uses installation
+templates -- lists of installed packages, post-installation scripts and config files -- allowing the
+creation of installation profiles that can be used for system replication in other partition or even
+custom chroot building.
+
+Template creation is done with "templatepkg" script. To create a template called "my-slackware" containig
+the installed package list of your slackware installation, just type
+
+  templatepkg -c my-slackware
+
+The -c (or --create) flag tells templatepkg to create the /etc/simplepkg/templates/my-slackware folder
+with the following components:
+
+  - /etc/simplepkg/templates/my-slackware/my-slackware.d: template config files
+  - /etc/simplepkg/templates/my-slackware/my-slackware.s: post-installation scripts
+  - /etc/simplepkg/templates/my-slackware/my-slackware.perms: metadata for config files
+  - /etc/simplepkg/templates/my-slackware/my-slackware.template: installaed package list
+
+This four components are enough to store all slackware installation characteristics: the package list
+controls with applications are installed, the config file folder can contain all desired configurations
+for any installed application and the post-installation scripts take care of all procedures that should
+be executed exactly after the system installation. The my-slackware.perms file contains metadata for the
+saved config files, i.e, permission and ownership.
+
+If you want to build a template from a installation placed in another folder or partition thats not your
+current root dir, just type something like
+
+  templatepkg -c my-slackware /mnt/slackware
+
+where /mnt/slackware is the place where this alternative system is installed. After created, the template
+will contain just the installed package list or that folder. As the folder /var/log/packages of your
+installation doesn't keep information about the package installation order, its recommended that you
+manually edit the template's package list. To do that, just type
+
+  templatepkg -e my-slackware
+
+To add configuration files inside the template, type something like
+
+  templatepkg -a my-slackware /etc/hosts
+
+This should add /etc/hosts file to "my-slackware" template. Beyond just automatically copy the file
+when you install a new system using this template, simplepkg can also take care of every change that
+/etc/hosts can suffer on your system, such as file content or permission and ownership change. If you're
+also storing your templates in a subversion repository, you'll be able to track all changes it ever had.
+
+WARNING: avoid the storage in a template of config files that contains important security information
+such as passwords or secret keys. The prefered place to put such stuff is a secured backup.
+
+Creating jails and replicating installations
+--------------------------------------------
+
+As long as your template was created and populated with the package list, configuration files and
+post-installation scripts (what will be treated in another section), your can replicate your slackware
+installation as simpler than typing the following command:
+
+  mkjail jail my-slackware
+
+This creates a fresh slackware tree at /vservers/jail with all packages listed in the template "my-slackware"
+and all saved config files. The package installation is made by simplaret app, that should be properly configured.
+The standard simplaret configuration should work for most situations.
+
+If you want to install your jail in a place other than /vservers (this standard location can be changed through
+simpleokg config file), say /mnt/hda2, just use something like that:
+
+  ROOT=/mnt mkjail hda2 my-slackware
+
+The above command does exactly what you think: installs slackware in /mnt/hda2 with exactly the same packages
+you have on your system, replacing the need of the slackware installer!
+
+In case no template specified, mkjail uses the one stored /etc/simplepkg/default, if exists. Simplepkg already
+came if some pre-built templates at /etc/simplepkg/defaults/templates.
+
+Post-installation scripts
+-------------------------
+
+Optionally, its possible to keep post-installation scripts inside a template. Such scripts are executed by mkjail
+exactly after a jail is installed and the template config files copied. To create or edit a post-installation
+script, just type
+
+  templatepkg -b my-slackware script-name.sh
+
+This adds the script-name.sh at "my-slackware" template. Mkjail passes two command line arguments to a post-install
+script: the upward folder and the jail's name ("/mnt" and "hda2" from our previous example). Then, an example script
+is something like that:
+
+  #!/bin/bash
+  chroot $1/$2/ sbin/ldconfig
+
+Listing template contents
+-------------------------
+
+To list available templates or the template content, use commands such as
+
+  templatepkg -l
+  templatepkg -l my-slackware
+
+Removing files from a template
+------------------------------
+
+As you did to add files, you can easily remove then from a template, using a comand such as
+
+  templatepkg -d my-slackware /etc/hosts
+
+This removes the file /etc/hosts from "my-slackware" template.
+
+Removing a template
+-------------------
+
+To remove a template, just type
+
+  templatepkg -r my-slackware
+
+Updating a template
+-------------------
+
+Now that we just talked about creating templates and jails, its time to cover another application, this time
+used to keep a template always updated. Jail-commit is a script that copies all config file changes (content,
+permissions and ownership) from a installation to a simplepkg template.
+
+For instance, if one wants to copy all changes from /mnt/hda2 jail into "my-slackware" template, he or she
+just needs to type the following command:
+
+  jail-commit /mnt/hda2 my-slackware
+
+Not just the package list from "my-slackware" template is updated according the installed packages from
+/mnt/hda2/var/log/packages: all config files from "my-slackware" template are compared it the ones from
+the jail and in case of any difference they're copied from the jail back to the template. Permissions
+and file ownership commit into the template works at the same way.
+
+Jail-commit allows that a template to being kept always updated and mirroring the actual configuration
+of an installed system. But if you want just to commit into the template just the installed package
+list, simply type
+
+  templatepkg -u my-template
+
+To make life even easier, there's also a feature of keeping a list of all installed slackware system in
+the box in the file /etc/simplepkg/jailist. This file, despite its use by simplaret (what is described
+in its own text), allow jail-commit to run with no arguments.
+
+Suppose you have three slackware installations: the root system and two more:
+
+  - /mnt/slackware-1 using "slackware-1" template
+  - /mnt/slackware-2 using "slackware-2" template 
+
+If your /etc/simplepkg/jailist has the following lines:
+
+  /mnt/slackware-1
+  /mnt/slackware-2
+
+then the command
+
+  jail-commit
+
+will update both "slackware-1" and "slackware-2" templates according, respectivelly, the contents of
+/mnt/slackware-1 and /mnt/slackware-2. If you also have a template called "main", then jail-commit
+will sync the contents of your root system with that template.
+
+You can even add the following line at root's crontab
+
+  20 4 * * * jail-commit
+
+so all your templates get updated everyday. If your system is configured to send emails, then crontab's
+jail-commit output you give a summary of yesterday changes your system suffered, both config file changes
+and package additions and removals.
+
+Restoring changes in a jail
+---------------------------
+
+The opposite operation of jail-commit also is possible: suppose you edited some config files in your system but
+suddenly wants to go back and copy all config files from a template to your jail. To do that, just use the command
+
+  jail-update /mnt/hda2 my-slackware
+
+Storing templates inside a Subversion repository
+------------------------------------------------
+
+In order to increase once more the control and flexibility of template contents, simplepkg can also handle templates
+inside a subversion repository. To do that, edit first the config gile /etc/simplepkg/simplepkg.conf and set the
+parameter TEMPLATES_UNDER_SVN to "yes".
+
+Then, create a fresh subversion repository to keep your templates with a command like that:
+
+  svnadmin create /var/svn/simplepkg --fs-type fsfs
+
+Then, you just need to import your templates with
+
+  templatepkg -e file:///var/svn/simplepkg
+
+From now jail-commit will commit automatically any template changes to the svn repository. If, in the other hand,
+you wish to grab the changes from the svn repository to your local copy, use
+
+  templatepkg -s
+
+In case you want to import a template folder from an existing repository, use
+
+  templatepkg -i file:///var/svn/simplepkg
+
+where file:///var/svn/simplepkg is the repository path.
+
+Upgrading jails
+---------------
+
+Jail and installed system upgrading is done through simplaret and also supports /etc/simplepkg/jailist file.
+For more info on how it works, take a look at simplaret own documentation.
+
+Different archs and versions
+----------------------------
+
+Simplepkg was idealized to permit a template to create jails from any architecture and version
+of a slackware-like system. Upgrading tasks also are unified. This feature just works if you
+use simplaret and not swaret as the package retrieval tool.
+
+As another example, to create an slack 10.1 installation (assuming your /etc/simplepkg/repos.conf with
+the right configuration), just type
+
+  VERSION=10.1 mkjail my-jail server-template 
+
+Different archs can be used too. If you have a x86_64 system and wants to install a slack 10.2
+in a partition, try something like
+
+  ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 my-slackware
+
+Note that the templates are arch and version independent, as they just contain package names,
+configuration files and scripts. For this reason, the commands templatepkg, metapkg, lspkg and
+jail-update can be used normaly.
+
+Creating a package from a template
+----------------------------------
+
+If, for any reason, you wish to build a package from an existing template, try the command
+
+  templatepkg -p template-name
+
+Although that should work smoothly, its not the recommended behaviour, as simplepkg was designed
+to deal easily with templates and repositories.
+
+Building packages
+-----------------
+
+Until now, we just showed simplepkg applications used to manage installations and packages.
+But simplepkg can also create packages using createpkg script: it downloads, builds and
+packages software that has an available script from a SlackBuild in a repository, working
+like a slackware ports system.
+
+Createpkg works with any SlackBuild repository but works better and is well integrated if
+they are compliant with the standards from
+
+  http://slack.sarava.org/wiki/Main/SlackBuilds
+
+Specifically, createpkg was built to use slackbuilds from http://slack.sarava.org/slackbuilds
+through a subversion repository.
+
+To fetch all scripts from slack.sarava.org, type
+
+  createpkg --sync
+
+Then, you can list all available script using
+
+  createpkg --list
+
+To search for a script, use something like
+
+  createpkg --search latex2html
+
+This searches for a SlackBuild for the program "latex2html". If you want to build that package,
+just type
+
+  createpkg latex2html
+
+The resulting package should be available at /tmp or at the folder specified by the environment
+variable $REPOS. To create and install the package, type
+
+  createpkg --install latex2html
+
+If the package has dependencies listed in a slack-required file that aren't installed in the
+system, then createpkg will try to process then before the desired package's SlackBuild: if
+the dependencies aren't available in the SlackBuild tree, then createpkg will call simplaret
+and try to install the package from a binary repository. If you want to avoid createpkg's
+dependency checking, just use it with the flag --no-deps.
+
+For more information about createpkg, type
+
+  createpkg --help
+
+or take a look at http://slack.sarava.org/wiki/Main/SlackBuilds.
+
+Auxiliar applications
+---------------------
+
+Simplepkg comes also with the following tools:
+
+   - lspkg: show installed packages and its contents
+   - rebuildpkg: rebuild a package based on its /var/log/packages entry
+   - repos: creates and manages binary repositories
+   - mkbuild: app to build slackware build scripts
+
+The command lspkg is used to show installed packages. Also, Simplepkg comes with an additional helper
+tool that recover installed packages which the original .tgz file was lost. The command rebuildpkg
+rebuilds a package from their entry in /var/log/packages. As an example,
+
+  rebuildpkg coreutils
+
+rebuilds the coreutils package using the files, scripts and metainformations stored in
+/var/log/packages/ and /var/log/scripts/.
+
+For their time, scripts repos and mkbuild are used, respectivelly, to create and manage binary repositories
+and to create SlackBuild scripts.
+
+Configuration parameters
+------------------------
+
+Simplepkg's config file is /etc/simplepkg/simplepkg.conf and it keeps parameters used by all scripts.
+In this section, we won't cover any parameter that's just used by simplaret, whose settings are covered
+in its own documentation.
+
+  - JAIL_ROOT: Where jails are placed by mkjail. Default: "/vservers".
+
+  - ADD_TO_JAIL_LIST: Wheter mkjial should add new jails to /etc/simplepkg/jailist. Default is "1" (enabled).
+
+  - TEMPLATES_UNDER_SVN: Set to yes if your templates will be placed in a subversion repository. Default
+    is "no" (disabled).
+
+  - TEMPLATE_FOLDER: Where your templates will be located. Default is "/etc/simplepkg/templates" and
+    dont change it except you know what you're doing.
+
+  - TEMPLATE_STORAGE_STYLE: This variable controls in which folder / subfolder your templates will
+    be stored. Default value is "own-folder" and you'll just need to change that if you're storing
+    your templates using an old simplepkg format and wants to keep compatibilty.
+
+Its important to note that all boolean parameters in the config file can be set either to "1" or "yes"
+to enable and "0" or "no" to disable.
+
+Additional information
+----------------------
+
+Simplepkg was written by Silvio Rhatto (rhatto at riseup.net) and is released under GPL license. The code
+can be obtained from the subversion repository:
+
+  svn checkout svn://slack.sarava.org/simplepkg
+
+Simplepkg's wiki is http://slack.sarava.org/wiki/Main/SimplePKG and its mailing list address is
+http://listas.sarava.org/wws/info/slack.
+
diff --git a/tags/0.5/doc/README.pt_BR b/tags/0.5/doc/README.pt_BR
new file mode 100644 (file)
index 0000000..138125e
--- /dev/null
@@ -0,0 +1,444 @@
+Simplepkg: gerenciamento de instalações e pacotes
+-------------------------------------------------
+
+Autor: Silvio Rhatto <rhatto at riseup.net>
+Licença: GPL
+
+O simplepkg Ã© um sistema de gerenciamento de sistemas slackware que roda sobre o pkgtool.
+Ele Ã© composto por vários scripts que desempenham funções de administração e desenvolvimento de
+sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção,
+a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada.
+
+Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes.
+Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação
+de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração,
+informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula.
+
+Documentação
+------------
+
+A documentação mais atualizada do simplepkg está em http://slack.sarava.org/simplepkg.
+
+Descrição
+---------
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão
+agora Ã© a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos
+de configuração de uma máquina, além da facilidade na criação de pacotes.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo
+que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email
+e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise
+cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que
+você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum
+detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina,
+por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O simplepkg permite que você mantenha um template para cada grupo de máquinas e com apenas um
+comando instalar o template numa partição. Além do template, você precisa configurar o simplepkg
+para obter pacotes de um repositório local ou remoto.
+
+Gerenciar instalações e pacotes não Ã© tudo o que o simplepkg faz. Ele pode ser usado até na
+criação de jaula e vservers, podendo manter toda a configuração das máquinas num repositório
+Subversion.
+
+O simplepkg funciona não apenas com o Slackware mas com qualquer port (oficial ou não) que
+siga minimamente os padrões oficiais.
+
+Arquitetura
+-----------
+
+O simplepkg Ã© um conjunto de scripts escritos com a filosofia KISS (Keep It Simple, Stupid) em mente.
+Ele Ã© um sistema muito simples, composto pelos seguintes comandos:
+
+   - mkjail: constrói uma jaula/instalação de slackware numa pasta
+   - templatepkg: criar ou adiciona pacotes a um template
+   - lspkg: lista pacotes instalados
+   - jail-update: inverso do jail-commit
+   - jail-commit: atualiza o template
+   - rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+   - simplaret: obtém pacotes de repositórios locais ou remotos
+   - createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório
+   - repos: cria e mantém repositórios
+   - mkbuild: cria scripts de construção de pacotes
+
+Instalando o simplepkg
+----------------------
+
+Para baixar o pacote do simplepkg, vá em http://slack.sarava.org/packages/noarch/. Depois, basta usar
+o comando
+
+  installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+
+Usando o simplepkg
+------------------
+
+As três principais aplicações desse conjunto são:
+
+  - Gerenciamento de pacotes
+  - Criação e manutenção de jaulas
+  - Criação de pacotes
+
+O gerencamento de pacotes Ã© feito através do simplaret, e por ser algo bem específico está detalhado
+no artigo correspondente. As seções a seguir mostrarão como o simplepkg pode ser utilizado para criar
+e manter jaulas, assim como também criar pacotes.
+
+Criando templates de instalação
+-------------------------------
+
+Originalmente, o simplepkg foi desenvolvido para ajudar na automatização de instalações de sistemas
+slackware. Para isso, ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos
+de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o
+sistema numa outra partição ou criar um chroot.
+
+A construção de um template Ã© feita através do programa templatepkg. Para criar um template de nome
+"meu-slackware" contendo a lista de pacotes atualmente instalados no seu sistema, digite
+
+  templatepkg -c meu-slackware
+
+A opção -c (ou --create) criará a pasta /etc/simplepkg/templates/meu-slackware, que conterá os
+seguintes componentes:
+
+  - /etc/simplepkg/templates/meu-slackware/meu-slackware.d: cópia de arquivos de configuração
+  - /etc/simplepkg/templates/meu-slackware/meu-slackware.s: scripts de pós-instalação
+  - /etc/simplepkg/templates/meu-slackware/meu-slackware.perms: informações sobre arquivos
+  - /etc/simplepkg/templates/meu-slackware/meu-slackware.template: lista de pacotes
+
+Esses quatro componentes são suficientes para armazenar todas as características de uma instalação
+de slackware: a lista de pacotes controla o software instalado (a partir do conteúdo da pasta
+/var/log/packages), a cópia dos arquivos de configuração controla as personalizações feitas para o uso
+dos aplicativos e os scripts de pós-instalação cuidam de qualquer rotina que precisa ser realizada
+exatamente após a instalação do sistema. Já o arquivo de informações sobre arquivos contém as permissões,
+o dono/a e grupo de cada arquivo de configuração presente no template.
+
+Se você quiser criar um template a partir de uma instalação de slackware presente numa outra partição
+do sistema que não seja a raíz, basta usar um comando do tipo
+
+  templatepkg -c meu-slackware /mnt/slackware
+
+onde /mnt/slackware Ã© o local onde o sistema alternativo está instalado. Após criado, o template possuirá
+apenas a lista de pacotes contendo o nome dos aplicativos instalados no seu sistema. Como a pasta
+/var/log/packages não preserva a ordem de instalação dos pacotes, então talvez você queira editar manualmente
+a lista de pacotes de um template. Para isso, use o comando
+
+  templatepkg -e meu-slackware
+
+Para adicionar um arquivo de configuração no seu novo template, basta dar um comando como
+
+  templatepkg -a meu-slackware /etc/hosts
+
+Isso adicionará o arquivo /etc/hosts no template "meu-slackware". Além de salvar o arquivo e copiá-lo
+automaticamente quando você instalar seu sistema, o simplepkg ainda pode tomar conta de qualquer alteração
+que o /etc/hosts sofrer no sistema, seja mudança no conteúdo do arquivo, dono ou permissão. Se você ainda
+estiver armazenando seus templates num repositório svn (o que veremos a seguir), o simplepkg pode ainda
+manter um histórico completo das alterações do arquivo.
+
+ATENÇÂO: evite ao máximo deixar arquivos contendo senhas ou chaves privadas num template. O lugar mais
+adequado para deixar esse tipo de coisa Ã© num backup seguro.
+
+Criando jaulas e replicando instalações
+---------------------------------------
+
+Uma vez que um template foi criado com uma lista de pacotes e opcionalmente com arquivos de configuração
+e scripts de pós-instalação (que serão detalhados a seguir), você pode replicar sua instalação de slackware
+utilizando o comando
+
+  mkjail jaula meu-slackware
+
+Isso cria uma nova Ã¡rvore do slackware em /vservers/jaula contendo todos os pacotes e arquivos de configuração
+do template "meu-slackware". A instalação dos pacotes será feita pelo aplicativo simplaret, que deve estar
+configurado corretamente e cuja configuração padrão deve funcionar para a maioria dos casos.
+
+Se você quiser instalar essa jaula em outro local que não seja a pasta /vservers (esse local padrão pode ser
+mudado pelo arquivo de configuração do simplepkg), basta usar um comando do tipo
+
+  ROOT=/mnt mkjail hda2 meu-slackware
+
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em /mnt/hda2,
+dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default. O simplepkg já vem
+com alguns templates padrões, presentes em /etc/simplepkg/defaults/templates.
+
+Scripts de pós-instalação
+-------------------------
+
+Opcionalmente, Ã© possível manter scripts de pós-instalação num template. Tais script são executados exatamente
+após a instalação de uma jaula e cópia de arquivos de configuração pelo mkjail. Para criar ou editar um script
+de pós-instalação, use um comando como
+
+  templatepkg -b meu-slackware nome-do-script.sh
+
+Isso adicionará o script nome-do-script.sh no template "meu-slackware". O mkjail passa dois argumentos para
+cada script de pós-instalação: a pasta superior e o nome da jaula ("/mnt" e "hda2" no nosso exemplo anterior).
+Assim, um exemplo de script seria algo como
+
+  #!/bin/bash
+  chroot $1/$2/ sbin/ldconfig
+
+Listando o conteúdo de um template
+----------------------------------
+
+Para listar os templates disponíveis ou o conteúdo de um template, use comandos como
+
+  templatepkg -l
+  templatepkg -l meu-slackware
+
+Removendo arquivos de um template
+---------------------------------
+
+Analogamente Ã  forma como se adicona arquivos num template, removê-los pode ser feito com o seguinte comando:
+
+  templatepkg -d meu-slackware /etc/hosts
+
+Isso remove o arquivo /etc/hosts do template "meu-slackware".
+
+Apagando um template
+--------------------
+
+Para apagar um template, basta utilizar um comando como
+
+  templatepkg -r meu-slackware
+
+Atualizando um template
+-----------------------
+
+Agora que já abordamos as opções do templatepkg, Ã© hora de visitarmos um outro aplicativo, desta vez utilizado
+para manter um template atualizado. O jail-commit Ã© um script que copia as alterações dos arquivos (conteúdo,
+propriedade e permissões) de um template a partir do conteúdo de uma jaula ou instalação.
+
+Por exemplo, caso se queira copiar as alterações da jaula /mnt/hda2 no template "meu-slackware", basta usar o
+comando
+
+  jail-commit /mnt/hda2 meu-slackware
+
+Além da lista de pacotes do template "meu-slackware" ser atualizada de acordo com a lista de pacotes presente
+em /mnt/hda2/var/log/packages, todos os arquivos de configuração presentes no template "meu-slackware" serão
+comparados com os correspondentes da pasta /mnt/hda2 e as diferenças são copiadas para o template. Da mesma
+forma, as permissões e informação de dono/grupo dos arquivos também Ã© atualizada no template.
+
+O comando jail-commit possibilita que um template sempre esteja atualizado e refletindo a configuração atual
+de uma instalação de slackware. Se você quiser atualizar apenas a lista de pacotes de um template, porém, use
+
+  templatepkg -u meu-template
+
+Para facilitar ainda mais o controle das alterações do sistema, existe ainda uma facilidade do arquivo
+/etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na documentação do simplaret,
+para que o jail-commit saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa
+máquina, além da instalação principal na raíz do sistema.
+
+Suponha que uma máquina possua duas instalações de slackware, além da principal (raíz):
+
+  - /mnt/slackware-1 usando o template "slackware-1"
+  - /mnt/slackware-2 usando o template "slackware-2"
+
+Se o arquivo /etc/simplepkg/jailist contiver as seguintes linhas,
+
+  /mnt/slackware-1
+  /mnt/slackware-2
+
+então o comando
+
+  jail-commit
+
+atualizará o template "slackware-1" de acordo com o conteúdo da jaula /mnt/slackware-1 e o template "slackware-2"
+com o conteúdo da jaula /mnt/slackware-2. Se, além desses dois templates, existir um outro de nome "main", então
+o jail-commit sem argumentos também copiará as atualizações da instalação raíz, deixando-as no template "main".
+
+Você pode inclusive colocar uma entrada no crontab do tipo
+
+  20 4 * * * jail-commit
+
+para que seus templates sejam atualizados diariamente. Se você ainda possui o envio de emails configurado na sua
+máquina, então a saída do jail-commit será enviada pelo cron diariamente para seu email, contendo diffs das alterações
+de arquivos de configuração a lista de pacotes adicionados ou removidos no sistema.
+
+Restaurando arquivos de configuração numa jaula
+-----------------------------------------------
+
+A operação contrária ao que o jail-commit faz também Ã© possível: suponha que você mexeu na configuração do sistema
+mas se arrependeu das alterações e deseja voltar a configuração para o modo como ela se encontra no seu template,
+basta usar o comando
+
+  jail-update /mnt/hda2 meu-slackware
+
+Armazenando as configurações no repositório Subversion
+------------------------------------------------------
+
+Para aumentar ainda mais a flexibilidade e o controle do conteúdo dos templates, Ã© possível armazená-los num
+repositório Subversion. Para isso, edite o arquivo /etc/simplepkg/simplepkg.conf e deixe o parâmetro de configuração
+TEMPLATES_UNDER_SVN com o valor "yes".
+
+Depois, crie um repositório subversion para armazenar seus templates, usando algo como
+
+  svnadmin create /var/svn/simplepkg --fs-type fsfs
+
+Com o repositório criado, basta importar seus templates com o comando
+
+  templatepkg -e file:///var/svn/simplepkg
+
+A partir daí, o comando jail-commit enviará automaticamente todas as alterações dos templates para o repositório
+subversion. Se, por outro lado, você quiser baixar as alterações dos templates que estão no repositório remoto
+para sua cópia local, use o comando
+
+  templatepkg -s
+
+Caso você queira importar uma pasta de templates de um repositório já existente, use
+
+  templatepkg -i file:///var/svn/simplepkg
+
+onde file:///var/svn/simplepkg Ã© o camninho do repositório.
+
+Atualização de jaulas
+---------------------
+
+A atualização de jaulas e sistemas instalados Ã© feita através do simplaret e também utiliza o arquivo
+/etc/simplepkg/jailist. Para mais informações a respeito, consulte a documentação do simplaret para mais detalhes.
+
+Arquiteturas e versões diferentes
+---------------------------------
+
+O simplepkg foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de
+arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também
+é unificada. Essa possibilidade só Ã© permitida se você usa o simplaret e não o swaret como ferramenta
+de obtenção de pacotes.
+
+Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios
+do /etc/simplepkg/repos.conf contenham locais com slack 10.1), basta usar o comando
+
+  VERSION=10.1 mkjail minha-jaula template-servidor
+
+Arquiteturas diferentes também podem ser usadas. Se você está num sistema x86_64 e quer instalar um
+slack 10.2 numa partição, experimente
+
+  ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+
+Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes,
+arquivos de configuração e scripts.
+
+Criando um pacote de um template
+--------------------------------
+
+Se, por algum motivo, você quiser construir um pacote com o conteúdo de um template, experimente
+o comando
+
+  templatepkg -p nome-do-template
+
+No entanto, o simplepkg foi criado para que esse tipo de comportamento seja evitado, já que Ã© mais
+simples manter templates de configuração do que pacotes contendo a configuração de uma instalação.
+
+Construindo pacotes
+-------------------
+
+Até aqui, apenas mostramos os aplicativos do simplepkg usados para a manutenção de instalações
+de slackware. No entanto, uma das outras finalidades desta suíte Ã© a construção de pacotes, o
+que Ã© feita pelo programa createpkg, Como dito anteriormente, o createpkg: baixa, compila e
+empacota software de acordo com scripts presentes num repositório de scripts, funcionando com
+um gerenciador de "ports" para slackware.
+
+O createpkg pode funcionar com qualquer tipo de script de construção de pacotes (SlackBuilds)
+mas funcionará melhor se os mesmos seguirem o padrão descrito na página
+
+  http://slack.sarava.org/wiki/Main/SlackBuilds
+
+Especificamente, o createpkg foi desenvolvido para utilizar os slackbuild disponíveis em
+http://slack.sarava.org/slackbuilds. O createpkg trabalha com repositórios do tipo subversion.
+
+Para obter os scripts do repositório do slack.sarava.org, digite
+
+  createpkg --sync
+
+Em seguida, você pode listas todos os scripts disponíveis:
+
+  createpkg --list
+
+Para buscar por um pacote, use
+
+  createpkg --search latex2html
+
+No caso, a busca Ã© feita pelo SlackBuild do aplicativo "latex2html". Suponha agora que você queira
+construir o pacote desse aplicativo:
+
+  createpkg latex2html
+
+O pacote resultante estará na pasta /tmp ou no valor especificado pela variável de ambiente $REPOS.
+Para criar e também instalar o pacote, basta
+
+  createpkg --install latex2html
+
+Se o pacote possuir dependências listadas num arquivo slack-required e que não estiverem instaladas
+no sistema, o createpkg tentará processá-las uma a uma antes de tentar construir o pacote desejado:
+se as dependências não forem encontradas no repositório de scripts, então o createpkg tentará
+baixá-las de um repositório binário através do simplaret. Se você não quiser que a resolução de
+dependências seja seguida, use a opção --no-deps.
+
+Para mais detalhes de funcionamento, experimente o comando
+
+  createpkg --help
+
+ou então acesse a página http://slack.sarava.org/wiki/Main/SlackBuilds.
+
+Aplicativos auxiliares
+----------------------
+
+O simplepkg acompanha ainda alguns aplicativos auxiliares:
+
+   - lspkg: lista pacotes instalados
+   - rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+   - repos: cria e mantém repositórios
+   - mkbuild: cria scripts de construção de pacotes
+
+O comando lspkg Ã© um utilitário simples para a visualização de pacotes instalados no sistema. Já o
+rebuildpkg ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando rebuildpkg
+reconstrói um pacote a partir de uma entrada no /var/log/packages. O comando
+
+  rebuildpkg coreutils
+
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo
+do /var/log/packages/ correspondente ao coreutils.
+
+Por fim, os scripts repos e mkbuild são os que se encontram na etapa de maior desenvolvimento: repos
+cria um repositório de pacotes a partir de uma pasta contendo pacotes do tipo pkgtool e o mkbuild 
+é um aplicativo para auxiliar a criação de scripts de construção de pacotes que podem ser utilizados
+sozinhos ou pelo o createpkg.
+
+Parâmetros de configuração
+--------------------------
+
+O arquivo de configuração do simplepkg Ã© o /etc/simplepkg/simplepkg.conf. Ele contém parâmetros de
+configuração de todos os scripts, porém neste texto não trataremos das opções específicas ao simplaret,
+as quais tem uma seção específica no artigo correspondente.
+
+  - JAIL_ROOT: pasta padrão onde as jaulas são criadas pelo mkjail. Valor padrão: "/vservers".
+
+  - ADD_TO_JAIL_LIST: controla se uma jaula criada pelo mkjail deve ser adicionada automaticamente
+    no arquivo /etc/simplepkg/jailist. O valor padrão Ã© "1" (habilitado).
+
+  - TEMPLATES_UNDER_SVN: indica se os templates estão armazenados num repositório subversion.
+    O valor padrão Ã© "no" (não).
+
+  - TEMPLATE_FOLDER: indica qual Ã© a pasta de templates. O valor padrão Ã© "/etc/simplepkg/templates"
+    e não Ã© recomendável alterá-lo.
+
+  - TEMPLATE_STORAGE_STYLE: controla a forma de armazenamento de templates. O valor padrão Ã©
+    "own-folder" e essa opção apenas deve ser modificada se você armazena seus templates num
+    formato antigo do simplepkg e deseja manter compatibilidade.
+
+Vale lembrar que todas as opções booleanas (isto Ã©, que podem ser apenas habilitadas ou desabilitadas)
+do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para
+desabilitado.
+
+Mais informações
+----------------
+
+O simplepkg foi escrito por Silvio Rhatto (rhatto at riseup.net) sob licença GPL e seu código fonte Ã©
+disponibilizado através do repositório subversion:
+
+  svn checkout svn://slack.sarava.org/simplepkg
+
+O wiki de desenvolvimento: http://slack.sarava.org/wiki/Main/SimplePKG e o endereço da lista de discussão
+utilizada para discussões sobre simplepkg ou mesmo distribuições e pacotes do tipo Slackware Ã©
+http://listas.sarava.org/wws/info/slack.
+
diff --git a/tags/0.5/doc/README.simplaret b/tags/0.5/doc/README.simplaret
new file mode 100644 (file)
index 0000000..397d913
--- /dev/null
@@ -0,0 +1,319 @@
+simplaret: simplepkg retrieval tool
+-----------------------------------
+
+Simplaret is a simplepkg tool used to download packages from local and remote repositories.
+With simplaret, one can grab packages for all archictectures and versions of slackware-like
+distributions that follows the mirror guidelines, allowing an easy management all
+jails and slackware installations in a machine, no matter wich arquiteture or version
+each one has.
+
+It was inspired in swaret behavior but don't tries to get its complexity level, but
+execute package download in a different way, where the local repository is organized
+by archictecture and version. It can also search for packages. It runs on top of pkgtool
+and is totally non-instrusive and can search, add, remove and upgrade packages.
+
+Documentation
+-------------
+
+The always updated english documentation is hosted at http://slack.sarava.org/simplaret-en
+
+Downloading and installing
+--------------------------
+
+Simplaret comes with simplepkg, wich installation and configuration is detailed at
+http://slack.sarava.org/simplepkg. Simplaret uses /etc/simplepkg/simplepkg.conf for its definitions
+and /etc/simplepkg/repos.conf for repository information. The default configuration should work
+for almost everyone.
+
+Using simplaret
+---------------
+
+Simplaret stores its data in system wide folders. Then, some funcionality will just be available
+if its run with root user capabilities. The first thing you need to do with simplaret is to fetch
+repository metadata, using
+
+  simplaret --update
+
+or simply 
+
+  simplaret update
+
+as simplepkg supports both command line behaviour (--update or just update). After that, you can
+search for packages using commands like
+
+  simplaret search ekiga
+
+The result should be something like
+
+  REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz
+
+As we'll see afterwards, "REPOS" means the repository type, "sarava" is the repository name,
+"arch" is the package architecture (i386 in this case) and "version" is the repository version
+(11.0 in this case).
+
+To install this package, just type
+
+  simplaret install ekiga
+
+By default, if simplaret finds in the repository a slack-required file for this package (i.e, the
+file ekiga.slack-required in the same folder of the binary package) then it will try to install
+all unmet dependencies. This default behaviour can be disabled through config file parameters.
+
+If you just want to download the package, type
+
+  simplaret get ekiga
+
+In the case of simplaret finds more than one package with the same name, it will get in the order
+that the "search" option shows them. The search precedence can also be defined by config file
+parameters. For instance, the command
+
+  simplaret search kernel-generic
+
+can return something like
+
+  ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.17.13-i486-1.tgz
+  ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.18-i486-1.tgz
+
+So the command
+
+  simplaret install kernel-generic
+
+will attempt to install the package "kernel-generic-2.6.17.13-i486-1.tgz" and not the file
+"kernel-generic-2.6.18-i486-1.tgz". If you want to force simplaret to get and specific package,
+use its complete file name:
+
+  simplaret install kernel-generic-2.6.18-i486-1.tgz
+
+If a package is already installed in the system, the --install option will try to upgrade it
+if the version or build number between the installed package and the one in the repository
+are different. So the command
+
+  simplaret install simplepkg
+
+updates simplepkg in the case there's a new version. To remove a package, type
+
+  simplaret remove nome-do-pacote
+
+That's just an alias for the standard removepkg command.
+
+Simplaret stores downloaded packages in a system folder that defaults to /var/simplaret.
+As you get more and more packages, simplaret will consume more space ir your disk. To
+erase your local repository folder, use the command
+
+  simplaret purge
+
+This will erase just the packages from the current arch and version. Details about how to
+erase the repository for different arch and version are in another session.
+
+You can also force simplaret to erase just old packages. The following command erases just
+packages older than six weeks or more:
+
+  simplaret purge -w 3
+
+Downloading patches and upgrading the system
+--------------------------------------------
+
+Simplaret hasn't just about package installing and removal, it has two more important
+features: patches retrieval and application. Assuming that the patches repository of
+your slackware flavour is correctly configured (what should work with almost everyone
+with the default configuration), you can fetch the available patches using the command
+
+  simplaret get-patches
+
+If you don't just donwload but also apply those patches, use
+
+  simplaret upgrade
+
+Working with more than one architecture and version
+---------------------------------------------------
+
+Until now we just looked what is the requirement for all package management system: package
+retrieval, installation, search, upgrade and dependency resolution. What makes simplaret
+different from another tools is the ability to deal with different architectures and versions
+and slackware installations.
+
+The features descibed in this section will just make sense after you read the next section, when
+we'll talk about multiple slackware installations and jails in the same computer.
+
+Suppose you're running Slackware (arch i386) bit wants to update the package list from Slamd64
+version 11.0 (arch x86_64). To do that, just type
+
+  ARCH=x86_64 VERSION=11.0 simplaret update
+
+This command grabs the Slamd64 package list without confliting in any way with the standard and
+already downloaded i386 Slackware package list. This doesn't happens because simplaret stores
+metadata from different archs and versions at different folders.
+
+Its optional to pass ARCH and VERSION environment variables to simplaret. If one or none of them
+was specified, simplaret uses the standar system value, obtained from the file /etc/slackware-version,
+or uses config parameters to do that.
+
+As an example, to search for a package in the arch powerpc (Slackintosh) version 11.0, just type
+
+  ARCH=powerpc VERSION=11.0 simplaret search package-name
+
+All command previously mentioned can work that way, except those that install or remove packages as
+its dangerous to mix packages from different archs and versions in the same system.
+
+Working with multiple installations
+-----------------------------------
+
+The previously section mentions a feature that just makes sense in systems where there's more than
+one slackware-like installation using different archs and versions.
+
+Say you have a x86_64 machine with three installed systems:
+
+  - Slamd64 11.0 at the root folder
+  - Slackware 11.0 at /mnt/slackware-1
+  - Slackware 10.2 at /mnt/slackware-2
+
+In the case of package install or patch retrieval and application, simplaret supports the environment
+variable ROOT to specify which folder simplaret should look for a system.
+
+Then, to install a package at /mnt/slackware-1, just type
+
+  ARCH=i386 VERSION=11.0 simplaret update
+  ROOT=/mnt/slackware-1 simplaret install package-name
+
+The first command just updates the package list and the second makes simplepkg install the package with
+using /mnt/slackware-1 arch and version. If you want to do the same at /mnt/slackware-2, use the analogous
+command
+
+  ARCH=i386 VERSION=10.2 simplaret update
+  ROOT=/mnt/slackware-2 simplaret install package-name
+
+There's also a feature to make patch retrieval and application with just one command, using the file
+/etc/simplepkg/jailist. This file is used by simplepkg's mkjail script to store with jails you have
+on your system but is also used by simplaret to upgrade all jails with just one command.
+
+Considering that your box has the three previously mentioned slackware installation. Then, to add
+/mnt/slackware-1 and /mnt/slackware-2 in the automatic upgrade list, add the following lines in your
+/etc/simplepkg/jailist (without spaces):
+
+  /mnt/slackware-1
+  /mnt/slackware-2
+
+The root system doesn't need to be added in this file. Then, you can get the patches for all your three
+systems with the command
+
+  simplaret get-patches
+
+To get the patches and/or apply them in all jails (including the root system), use
+
+  simplaret upgrade
+
+This feature makes easier to keep all your installations always upgraded.
+
+The repos.conf file
+-------------------
+
+Now that we just talked about all simplaret features, its time to take a tour at its configuration
+files. The first one we'll say about is the repository definition file, /etc/simplepkg/repos.conf.
+
+If you don't mind to make an advanced simplaret usage, then probably you can just leave this section
+as the default config should work for almost all standard situations and you'll just need to edit
+repos.conf to change repository priorities.
+
+The repos.conf file contains one repository definition per line using the following syntax:
+
+  TYPE[-ARCH][-VERSION]="name%URL"
+
+The content in brackets are optional depending on the repository type as we'll see later in this
+section. The repository types supported by simplaret are:
+
+  - PATCHES: used for repositories containing patches and which file metadata is the file
+    FILE_LIST instead the standard FILELIST.TXT; example:
+
+      PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"
+
+    This defines a patches repository for arch i386 (official Slackware), version 11.0 and named
+    as "sarava".
+
+    Its optional to have a PATCHES definition in order to get patches: the ROOT repository definition
+    just take care of that and you'll just need to use a PATCHES definition if you want to give
+    precedence to some patches repository over all other definition types.
+
+  - ROOT: this type specifies the default slackware-like repository, where the content is sorted
+    by version. An official slackware repository then is defined as
+
+      ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+
+    ROOT repositories needs just the arch definition, a name and an URL. In the previous case,
+    we have a ROOT repository called "tds". It doesn't need any version information as its already
+    considers tha the content is sorted in folders like
+
+      http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ and
+      http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/
+
+  - REPOS: this repository type ir arch and version oriented, like
+
+      REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"
+
+    In the above case, a repository called "sarava" is defined using arch i386 and version 11.0
+    with URL http://slack.sarava.org/packages/slackware/slackware-11.0/. This repository type is
+    recommended when using non-official repositories.
+
+  - NOARCH: the last type is used to define repositories where packages are arch and version
+    independent, like
+
+      NOARCH="sarava%http://slack.sarava.org/packages/noarch"
+
+In any repository type, the supperted URL schemes are http://, ftp:// or file:// (for local
+repositories).
+
+As simplaret supports more than one repository definition for each type, arch or version, each
+definition has its own name. Definitions can have the same name just if they're dont use the
+same repository type and/or arch and version.
+
+There's also a priority rule between the repository types wich defines a precedence order.
+Repositories are searched according the following order:
+
+  - PATCHES has the highest priority: if a package from a given arch and version is not found
+    in the first (if existent) PATCHES definition, then the next one is searched until all
+    PATCHES definitions are searched.
+
+  - Then, the package is searched in all ROOT defintions in the order they appear at repos.conf.
+
+  - The next searched repository type is REPOS in the specified arch an version, in the order
+    they appear at repos.conf.
+
+  - At last, NOARCH type is searched in the order they're defined.
+
+In the case you're issuing an upgrade or just geting patches, simplaret by default will just
+search in PATCHES and ROOT definitions.
+
+At REPOS and ROOT is also possible to specify its internal search order according its subfolders.
+
+Configuration file simplepkg.conf
+---------------------------------
+
+Simplaret also stores its configurations inside simplepkg's configuration file
+/etc/simplepkg/simplepkg.conf. This file is well commented and you should find there a description
+of all supported options.
+
+But why use that?
+-----------------
+
+You may ask why someone wishes to use such tool.
+
+Simplaret was written with a *x86 environment in mind, where lots of jails with different archs
+and versions are installed. Suppose a x86_64 with the following chroots installed:
+
+  - slamd64 11.0
+  - slackware 10.0
+  - slackware 11.0 with additional i686 packages
+  - uSlack (i386 uClibc) 
+
+Keep all this stuff update manually is really a headache. Simplaret just tries to make it trivial.
+
+Additional information
+----------------------
+
+Simplaret was written by Silvio Rhatto (rhatto at riseup.net) and is released under GPL license. The code
+can be obtained from the subversion repository:
+
+  svn checkout svn://slack.sarava.org/simplepkg
+
+Simplepkg's wiki is http://slack.sarava.org/wiki/Main/SimplePKG and its mailing list address is
+http://listas.sarava.org/wws/info/slack.
+
diff --git a/tags/0.5/doc/README.simplaret.pt_BR b/tags/0.5/doc/README.simplaret.pt_BR
new file mode 100644 (file)
index 0000000..672eb8e
--- /dev/null
@@ -0,0 +1,445 @@
+simplaret: ferramenta para obtenção de pacotes
+----------------------------------------------
+
+O simplaret Ã© a ferramenta do simplepkg utilizada para obter pacotes de repositórios locais
+ou remotos. Com ele, você pode não só baixar pacotes do seu sistema Slackware como também pode
+baixar de qualquer versão ou arquitetura cujo repositório siga os Mirror Guidelines do Slackware,
+como por exemplo Slamd64 e Slackintosh, permitindo que você gerencie facilmente todas as suas
+jaulas e instalações de Slackware, independentemente da arquitetura ou versão que elas utilizem.
+
+Além da obtenção, o simplaret ainda pode fazer a instalação, a remoção ou a atualização dos
+pacotes de um sistema e também das demais jaulas existentes numa máquina.
+
+O simplaret Ã© totalmente não-intrusivo no sistema e roda sobre o pkgtool.
+
+Documentação
+------------
+
+A documentação atualizada do simplaret se encontra em http://slack.sarava.org/simplaret.
+
+Obtendo e instalando
+--------------------
+
+O simplaret acompanha o simplepkg e por isso sua instalação Ã© feita baixando o pacote do simplepkg
+em http://slack.sarava.org/packages/noarch/ e em seguida instalando-o com o comando
+
+  installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+
+A partir daí você já pode utilizar o simplaret para baixar pacotes dos repositórios padrão ou
+então alterar a lista de repositórios do arquivo /etc/simplepkg/repos.conf ou a configuração
+do aplicativo pelo arquivo /etc/simplepkg/simplepkg.conf.
+
+Usando o simplaret
+------------------
+
+Em geral, como o simplaret armazena as informações em pastas do sistema, algumas funcionalidades
+só estarão disponíveis quando o mesmo Ã© rodado pelo superusuário do sistema.
+
+Antes de explorar todas as funcionalidades do simplaret, Ã© necessário atualizar a lista de
+pacotes para sua arquitetura e versão, o que pode ser feito com o comando
+
+  simplaret --update
+
+ou simplesmente
+
+  simplaret update
+
+já que o simplaret suporta que suas opções básicas de linha de comando sejam passas precedidas
+por dois hífens ou não (--update ou update).
+
+Depois de atualizar a lista de pacotes, experimente buscar por um pacote com um comando do tipo
+
+  simplaret search ekiga
+
+O resultado pode ser algo do tipo
+
+  REPOS repository sarava, arch: i386, version: 11.0: ekiga-2.0.5-i586-1rd.tgz
+
+Como veremos adiante, "REPOS" significa o tipo de repositório, "sarava" Ã© o nome do
+repositório, "arch" mostra a arquitetura do pacote e do repositório (i386, no caso)
+e "version" a versão do repositório (11.0, no caso).
+
+Para instalar esse pacote, basta o comando
+
+  simplaret install ekiga
+
+Por padrão, se o simplaret encontrar no repositório um arquivo slack-required referente
+ao pacote en questão (ou seja, um arquivo ekiga.slack-required na mesma pasta que o pacote
+do ekiga, neste caso), então o simplaret tentará instalar todos os requisitos contidos nesse
+slack-required, caso já não estejam instalados no sistema. Essa resolução de dependências
+automática pode, no entanto, ser desabilitada através de um parâmetro de configuração, como
+veremos a seguir.
+
+Se você apenas quiser baixar o pacote, digite apenas
+
+  simplaret get ekiga
+
+No caso do simplaret encontrar mais de um pacote com o mesmo nome, ele baixará na ordem que
+a opção "search" listá-los, sendo que essa precedência Ã© definida de acordo com a ordem em
+que os repositórios estão listados no arquivo de configuração. Por exemplo, o comando
+
+  simplaret search kernel-generic
+
+pode retornar algo como
+
+  ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.17.13-i486-1.tgz
+  ROOT repository sarava, arch: i386, version: 11.0: kernel-generic-2.6.18-i486-1.tgz
+
+Assim, o comando
+
+  simplaret install kernel-generic
+
+instalará o pacote "kernel-generic-2.6.17.13-i486-1.tgz" ao invés do pacote
+"kernel-generic-2.6.18-i486-1.tgz". Caso você queira forçar a instalação do
+segundo pacote, basta especificá-lo com o nome completo:
+
+  simplaret install kernel-generic-2.6.18-i486-1.tgz
+
+Se um pacote já estiver instalado no sistema, a opção install fará o upgrade do mesmo, caso
+a versão ou o build number do pacote presente no repositório for diferente da instalada no
+sistema. Assim, o comando
+
+  simplaret install simplepkg
+
+atualiza o simplepkg caso haja uma nova versão disponível nalgum repositório.
+
+Para remover um pacote, digite
+
+  simplaret remove nome-do-pacote
+
+o que na verdade Ã© apenas uma chamada indireta ao removepkg.
+
+O simplaret armazena pacotes baixados de repositórios numa pasta local do sistema, que
+por padrão Ã© /var/simplaret. Conforme você vai baixando e instalando pacotes, essa pasta
+tende a crescer e ocupar muito espaço. Para apagar os pacotes, basta usar o comando
+
+  simplaret purge
+
+Isso apagará apenas os pacotes da arquitetura e versão usadas atualmente. Detalhes de
+como apagar os pacotes de todas a arquiteturas e versões serão dados numa seção seguinte.
+
+Você também pode forçar o simplaret a apagar apenas pacotes antigos. O comando a seguir
+apaga apenas os pacotes baixados a três semanas ou mais (ou seja, os pacotes baixados a
+menos de três semanas continuam armazenados):
+
+  simplaret purge -w 3
+
+Baixando patches e atualizando o sistema
+----------------------------------------
+
+O simplaret possui, além do básico do gerenciamento de pacotes, duas funcionalidades
+adicionais: a obtenção e a aplicação de patches (pacotes contendo atualizações e
+correções de segurança).
+
+Assumindo que os repositórios contendo patches para sua distribuição do tipo Slackware
+estejam corretamente configurados, o que ocorre com a configuração padrão que acompanha
+o simplepkg e que veremos a seguir como alterá-la, você pode baixar os patches disponíveis
+para o seu sistema com o comando 
+
+  simplaret get-patches
+
+Se você quiser não só baixar mas também atualizar seu sistema, isto Ã©, fazer um upgrade com
+os patches disponíveis, use
+
+  simplaret upgrade
+
+Trabalhando com múltiplas arquiteturas e versões
+------------------------------------------------
+
+Até aqui vimos apenas o que Ã© a obrigação de qualquer sistema de gerenciamento de pacotes possuir:
+obtenção de pacotes, instalação, busca e atualização do sistema. O que diferencia o simplaret das
+outras ferramentas, além do esquema de resolução de dependências, Ã© sua capacidade de lidar
+simultaneamente com múltiplas arquiteturas, versões e até instalações de sistemas do tipo Slackware.
+
+O uso dos seguintes comandos só fará sentido Ã  luz da próxima seção, onde trataremos a respeito de
+múltiplas instalações e jaulas num mesmo computador, porém Ã© um pré-requisito para entendê-la.
+
+Supondo que você esteja rodando Slackware (arquitetura i386) mas que queira atualizar a lista de
+pacotes do sistema Slamd64 versão 11.0 (arquitetura x86_64), basta usar o comando
+
+  ARCH=x86_64 VERSION=11.0 simplaret update
+
+Esse comando baixará a lista de pacotes para o Slamd64 sem conflitar de nenhuma forma com a lista
+e os pacotes já baixados para o Slackware. Isso acontece porque o simplaret armazena as informações
+e os pacotes de cada repositório em pastas próprias, organizadas de acordo com a arquitetura e versão.
+
+Passar as variaveis ARCH e VERSION para o simplaret Ã© opcional. Se qualquer uma delas não foi especificada,
+o simplaret utilizará o valor padrão do seu sistema, usualmente obtido do arquivo /etc/slackware-version
+ou então especificada através do arquivo de configuração do simplepkg.
+
+Por exemplo, para pesquisar por um pacote da arquitetura powerpc (distribuição Slackintosh) na versão 11.0,
+basta o comando
+
+  ARCH=powerpc VERSION=11.0 simplaret search nome-do-pacote
+
+Todos os comandos apresentados anteriormente funcionarão dessa maneira, Ã  exceção daqueles que instalam ou
+fazer a atualização de pacotes, já que em geral Ã© destrutivo misturar pacotes de arquiteturas e versões
+diferentes num mesmo sistema.
+
+Trabalhando com múltiplas instalações
+-------------------------------------
+
+A funcionalidade apresentada na seção anterior só faz sentido quando existirem sistemas, jaulas e/ou
+vservers instalados num mesmo computador.
+
+Suponha que você possua uma máquina x86_64 com três sistemas instalados:
+
+  - Slamd64 11.0 na raíz
+  - Slackware 11.0 em /mnt/slackware-1
+  - Slackware 10.2 em /mnt/slackware-2
+
+No caso da instalação de pacotes, da obtenção e aplicação de atualizações, o simplaret suporta a
+variável de ambiente ROOT para especificar qual Ã© a pasta na qual o simplaret deve buscar o sistema.
+
+Para instalar um pacote no Slackware contido em /mnt/slackware-1, basta usar os comandos
+
+  ARCH=i386 VERSION=11.0 simplaret update
+  ROOT=/mnt/slackware-1 simplaret install nome-do-pacote
+
+O primeiro comando apenas atualiza a lista de pacotes e o segundo faz com que o simplaret baixe
+o pacote da arquitetura e versão do sistema presente em /mnt/slackware-1 bem como efetue sua instalação.
+
+Para o caso da instalação em /mnt/slackware-2, o uso Ã© análogo:
+
+  ARCH=i386 VERSION=10.2 simplaret update
+  ROOT=/mnt/slackware-2 simplaret install nome-do-pacote
+
+Existe ainda uma facilidade para que a obtenção e aplicação de atualizações seja feita de forma Ãºnica,
+através do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na
+documentação do simplepkg, para que o simplaret saiba de antemão quais são as instalações de sistema
+do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema.
+
+Considerando que a máquina possua as três instalações citadas no início deste tópico, a atualização
+automática das mesmas pode ser feita quando o arquivo /etc/simplepkg/jailist contiver as seguintes
+linhas (sem espaços no início de cada uma):
+
+  /mnt/slackware-1
+  /mnt/slackware-2
+
+O sistema principal, contido na raíz do sistema, não precisa estar listado nesse arquivo. Se todas
+as suas instalações de sistema do tipo Slackware estiverem constando corretamente no /etc/simplepkg/jailist,
+o seguinte comando baixará as atualizações disponíveis para todas elas, incluindo o sistema contido na raíz:
+
+  simplaret get-patches
+
+Analogamente, o seguinte comando baixará e/ou aplicará todas as atualizações disponíveis em todas as
+instalações, incluindo o sistema contido na raíz:
+
+  simplaret upgrade
+
+Desse modo, o gerenciamento de pacotes numa máquina que contenha mais de uma instalação do tipo Slackware
+fica unificada e consequentemente simplificada.
+
+O arquivo repos.conf
+--------------------
+
+Agora que o comportamento do simplaret foi delineado, Ã© importante descrever o arquivo de definição de
+repositórios, o /etc/simplepkg/repos.conf. Se você não pretende fazer um uso avançado do simplaret,
+provavelmente pode deixar de ler esta e a próxima seção, já que para o uso corriqueiro do simplaret
+você provavelmente não precisará alterar seu repos.conf, a não ser que queira mudar o espelho de download
+dos seus pacotes ou montar um esquema avançado para a escolha e priorização de repositórios.
+
+O arquivo /etc/simplepkg/repos.conf contém uma definição de repositório por linha e a sintaxe de cada
+uma delas Ã©:
+
+  TIPO[-ARQUITETURA][-VERSAO]="nome%URL"
+
+O conteúdo demarcado por colchetes Ã© opcional dependendo do tipo de repositório, como veremos a seguir.
+Os tipos de repositório aceitos pelo simplaret são:
+
+  - PATCHES: definição para repositórios que contenham patches (pacotes de atualização) e cuja lista
+    de arquivos Ã© FILE_LIST e não FILELIST.TXT; exemplo:
+
+      PATCHES-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/patches/"
+
+    No caso da definição acima, temos um repositório de patches para a arquitetura i386 (distribuição
+    Slackware), versão 11.0 e o nome dado ao repositório Ã© "sarava".
+
+    Possuir uma definição do tipo PATCHES Ã© opcional para ter acesso Ã s atualizações: a definição
+    de repositório ROOT, que veremos em seguida, já lida com patches: o tipo de repositório PATCHES
+    serve apenas se você quiser utilizar algum repositório não-oficial como fonte de patches
+    prioritária, já que repositório PATCHES são pesquisados pelo simplaret antes de qualquer outro.
+
+    Em resumo, se você não tiver um bom motivo para usar esse tipo de repositório, evite-o.
+
+  - ROOT: são tipos de repositórios cujo conteúdo está dividido por versão. O exemplo tradicional
+    deste caso Ã© o próprio repositório oficial das distribuições:
+
+      ROOT-i386="tds%http://slackware.mirrors.tds.net/pub/slackware/"
+
+    Repositórios ROOT necessitam apenas de uma definição de arquitetura, um nome e uma URL. No caso
+    acima, temos a definição de repositório ROOT de nome "tds", ou seja, não há definição de versão,
+    já que o simplaret considerará que a versão desejada está numa subpasta dessa URL. Ou seja,
+    definições ROOT implicam que as pastas contendo pacotes de cada versão estejam bem separadas,
+    ou seja, pastas como http://slackware.mirrors.tds.net/pub/slackware/slackware-10.2/ e
+    http://slackware.mirrors.tds.net/pub/slackware/slackware-11.0/.
+
+  - REPOS: este tipo de repositório Ã© orientado a arquitetura e versão, como por exemplo
+
+      REPOS-i386-11.0="sarava%http://slack.sarava.org/packages/slackware/slackware-11.0/"
+
+    No caso acima, um repositório de nome "sarava" Ã© definido para a arquitetura i386 e versão
+    11.0 com a URL http://slack.sarava.org/packages/slackware/slackware-11.0/. Esse tipo de definição
+    Ã© recomendado para repositórios não-oficiais.
+
+  - NOARCH: o Ãºltimo tipo de definição Ã© usado para repositórios cujos pacotes são independentes
+    de arquitetura e versão da distribuição. Como exemplo temos um repositório do Projeto Slack:
+
+      NOARCH="sarava%http://slack.sarava.org/packages/noarch"
+
+Em qualquer tipo de repositório, a URL pode ser do tipo http://, ftp:// ou file:// (para repositórios
+locais).
+
+Como podem haver mais de uma definição de repositório para cada tipo, versão e/ou arquitetura,
+as mesmas são diferenciadas de acordo com o nome. Definições de repositório podem ter nomes idênticos,
+desde que se refiram a tipo de repositório e/ou arquitetura e versão diferentes.
+
+Existe ainda uma prioridade dentre tipos de repositório e ordens de precedência. Numa pesquisa,
+repositórios são pesquisados de acordo com a seguinte ordem:
+
+  - PATCHES tem prioridade mais alta: caso um pacote de uma dada arquitetura e versão não seja
+    encontrado no primeiro repositório PATCHES do repos.conf, o próximo repositório definido na
+    ordem em que ele aparece no arquivo Ã© pesquisado, e assim por diante.
+
+  - Em seguida, pacotes são procurados nas definições ROOT da arquitetura em questão, na ordem
+    em que aparecem no repos.conf.
+
+  - Depois, são os pacotes de repositórios REPOS daquela arquitetura e versão são pesquisados,
+    na ordem em que aparecem no repos.conf.
+
+  - Por fim, repositórios NOARCH são pesquisados, na ordem em que são definidos.
+
+Em resumo, o simplaret tem uma ordem de precedência e execução de repositórios e para busca e obtenção
+de pacotes: pacotes são exibidos de acordo com a ordem e precedência descritas acima. No caso da ontenção
+de pacotes, o primeiro repositório que possuí-lo será utilizado, isto Ã©, caso o pacote não for solicitado
+explicitamente com seu nome de arquivo completo mas sim apenas com seu nome.
+
+No caso da obtenção de patches, por padrão apenas repositórios do tipo PATCHES e ROOT são pesquisados,
+a não ser que isso seja configurado como contrário.
+
+Em repositórios do tipo REPOS e ROOT ainda Ã© possível, através de parâmetros de configuração, explicitar
+a ordem de pastas que são pesquisadas dentro dos repositórios, algo que veremos a seguir e facilita no
+caso do usuário estar interessado em dar prioridade para aplicativos em fase de testes (usualmente
+armazenados na pasta testing/) ou pacotes antigos (pasture).
+
+Parâmetros de configuração do simplepkg.conf
+--------------------------------------------
+
+Nesta seção os parâmetros do arquivo de configuração /etc/simplepkg/simplepkg.conf relevantes ao
+simplaret estão descritos. Para uma lista completa de todos os parâmetros disponíveis, consulte o
+simplepkg.conf contido no pacote do simplepkg. Aqui estão descritos apenas os principais, que são:
+
+  - STORAGE: local de armazenameto dos pacotes baixados e das informações de repositório.
+    O valor padrão Ã© /var/simplaret/packages.
+  
+  - PATCHES_DIR: local de armazenamento de pacotes que são patches (atualizações), isto Ã©, o
+    local de armazenamento de pacotes de repositórios do tipo PATCHES (e eventualmente de
+    patches encontrados em repositórios do tipo ROOT, como veremos a seguir). O valor padrão
+    Ã© /var/simplaret/patches.
+  
+  - SIMPLARET_DOWNLOAD_FROM_NEXT_REPO: indica se o simplaret deve tentar baixar um pacote do
+    próximo repositório (caso exista) quando o download do repositório atual tiver falhado.
+    Valores possíveis são "1" ou "yes" para habilitar a opção (que Ã© o comportamento padrão)
+    ou "0" ou "no" para desabilitá-la.
+  
+  - SIMPLARET_PURGE_PATCHES: indica se o conteúdo da pasta de patches também deve ser apagado
+    quando o comando "simplaret --purge" Ã© chamado. Use "yes" ou "1" para habilitar e "no" ou
+    "0" para desabilitar. O valor padrão Ã© "1".
+  
+  - SIMPLARET_PURGE_WEEKS: controla o número de semanas a partir do qual o simplaret irá apagar
+    pacotes quando chamado com o comando "simplaret --purge", o que Ã© equivalente a usar o
+    comando "simplaret --purge -w N". O valor padrão Ã© "3". Para desabilitar essa opção, atribua
+    o valor "0".
+  
+  - PASSIVE_FTP: Indica se o simplaret deve fazer as transferências de FTP no modo passivo.
+    O valor padrão Ã© "1" (habilitado).
+  
+  - HTTP_TOOL: especifica qual a ferramenta para obtenção de arquivos via protocolo HTTP.
+    As opções disponíveis são "curl" e "wget", sendo que a opção padrão Ã© "curl".
+  
+  - FTP_TOOL: especifica qual a ferramenta para obtenção de arquivos via protocolo FTP.
+    As opções disponíveis são "curl", "wget" e "ncftpget", sendo que a opção padrão Ã© "curl".
+
+  - CONNECT_TIMEOUT: tempo máximo de espera para uma conexão de rede, dado em segundos.
+    O valor padrão Ã© "20".
+  
+  - ROOT_PRIORITY: especifica a ordem de prioridades das pastas de repositórios do tipo
+    ROOT numa pesquisa. O valor padrão Ã© "patches slackware extra testing pasture",
+    indicando que a pasta de patches tem precedência sobre todas as outras no repositório,
+    sendo seguida pela pasta slackware e depois pelas extra, testing e pasture. Como
+    podem existir nomes de pacotes idênticos nessas pastas, o estabelecimento de uma
+    ordem se faz necessária.
+  
+  - REPOS_PRIORITY: da mesma forma como repositorios ROOT necessitam de uma prioridade
+    de pesquisa em pastas, este parâmetro de configuração especifica a prioridade de
+    pastas em repositórios do tipo REPOS. O valor padrão Ã©
+    "patches slackware extra testing pasture".
+  
+  - SIGNATURE_CHECKING: indica se o simplaret deve checar pela assinatura dos pacotes
+    baixados, caso ela esteja disponível. Você deve ter a chave pública do distribuidor
+    dos pacotes no seu chaveiro. O valor padrão Ã© "0" (desabilitado).
+  
+  - DEPENDENCY_CHECKING: indica se o simplaret deve trabalhar com a resuloção de dependências
+    caso ele encontre, no repositório, um arquivo slack-required correspondente ao pacote que
+    está sendo instalado. O valor padrão Ã© "1" (habilitado).
+  
+  - DOWNLOAD_EVEN_APPLIED_PATCHES: indica de o simplaret deve baixar todos os patches
+    disponíveis a uma dada instalação de sistema do tipo Slackware, mesmo que os mesmo
+    já se encontrem aplicados. Esta opção Ã© Ãºtil se você quiser manter uma cópia local
+    das atualizações existentes para seu sistema. O valor padrão Ã© "0" (desabilitado).
+  
+  - CONSIDER_ALL_PACKAGES_AS_PATCHES: especifica se o simplaret deve, durante a obtenção
+    de pacotes de atualização, procurar por atualizações também nos tipos de repositórios
+    REPOS e NOARCH. Com essa opção, o simplaret faz uma pesquisa pelo pacote e, se sua versão
+    ou buildnumber da primeira ocorrência não bater com as do pacote atualmente instalado,
+    ele baixa e o aplica, mesmo que seja um pacote de repositórios do tipo REPOS ou NOARCH.
+    O valor padrão Ã© "0" (desabilitado). O uso dessa opção não Ã© muito recomendado por poder
+    causar confusão e deixar o simplaret mais lento, mas pode ser Ãºtil caso você esteja
+    usando um repositório não-oficial que sempre atualiza seus pacotes.
+  
+  - STORE_ROOT_PATCHES_ON_PATCHES_DIR: controla se o simplaret deve armazenar os patches baixados
+    de repositórios do tipo ROOT na mesma pasta de armazenamento de patches provenientes de
+    repositórios do tipo PATCHES. Ã‰ uma opção Ãºtil apenas se você quiser manter todos os patches
+    de repositórios ROOT e PATCHES num mesmo local. O valor padrão Ã© "0" (desabilitado).
+
+Vale lembrar que todas as opções booleanas (isto Ã©, que podem ser apenas habilitadas ou desabilitadas)
+do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para
+desabilitado.
+
+Mas para quê serve isso?
+------------------------
+
+Você pode estar se perguntando: para que mais um gerenciador de pacotes para o Slackware e quem utilizaria
+uma ferramenta que baixa pacotes de várias arquiteturas?
+
+O simplaret foi escrito tendo em mente um ambiente *86 onde várias jaulas de diferentes arquiteturas estão
+instaladas. Suponha por exemplo uma máquina x86_64 que possua as seguintes jaulas:
+
+  - Slamd64 11.0
+  - Slackware 11.0
+  - Slackware 11.0 com pacotes adicionais em i686
+  - ucSlack (uClibc para i386) 
+
+O condenado/a em questão que roda todas essas jaulas, pelos mais diversos motivos, pode ter uma grande dor
+de cabeça para manter os pacotes em ordem de forma manual. Com o simplaret e eventualmente com o simplepkg,
+a tarefa se torna trivial.
+
+Além disso, as inúmeras novas tecnologias de virtualização poderão necessitar de um sistema de gerenciamento
+de pacotes que trabalha simultaneamente com múltiplas arquiteturas e versões.
+
+Mesmo que você possua apenas um Ãºnico sistema do tipo Slackware em seu computador ou trabalhe apenas com uma
+única arquitetura e/ou versão, o simplaret possui todas as funcionalidades necessárias para facilitar seu
+dia-a-dia de gerenciamento de pacotes.
+
+Mais informações
+----------------
+
+O simplaret foi escrito por Silvio Rhatto (rhatto at riseup.net) e Ã© disponibilizado dentro do pacote do
+simplepkg e sob a licença GPL. Para obter o código fonte, digite
+
+  svn checkout svn://slack.sarava.org/simplepkg
+
+O wiki de desenvolvimento: http://slack.sarava.org/wiki/Main/SimplePKG e o endereço da lista de discussão
+utilizada para discussões sobre simplaret, simplepkg ou mesmo distribuições e pacotes do tipo Slackware Ã©
+http://listas.sarava.org/wws/info/slack.
+
diff --git a/tags/0.5/doc/TODO b/tags/0.5/doc/TODO
new file mode 100644 (file)
index 0000000..9178f6e
--- /dev/null
@@ -0,0 +1,5 @@
+simplepkg todo list
+-------------------
+
+TODO list at http://slack.sarava.org/wiki/Main/SimplePKG
+
diff --git a/tags/0.5/doc/mkbuild.tex b/tags/0.5/doc/mkbuild.tex
new file mode 100644 (file)
index 0000000..9e620ae
--- /dev/null
@@ -0,0 +1,627 @@
+\documentclass[12pt,a4paper,oneside]{article}
+%\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphicx}
+%\usepackage{subfigure}
+\usepackage{mdwlist}
+\usepackage{a4}
+%\topmargin -.5in
+%\addtolength{\hoffset}{-1.0cm}
+%\addtolength{\textwidth}{3.0cm}
+%\textwidth = 400pt
+%\textheight = 680pt
+
+\makeatletter
+
+%\usepackage[pdftex]{color,graphicx}
+%\DeclareGraphicsExtensions{.jpg,.pdf,.mps,.png}
+
+\usepackage[brazil]{babel}
+\usepackage[dvips]{graphicx}
+%\usepackage{textdraw}
+
+\input texdraw
+%\newenvironment{textdraw}{\leavevmode\btexdraw}{\etexdraw}
+
+\newcommand{\rcap}[1]{Capítulo \ref{#1}}
+\newcommand{\rfig}[1]{Figura \ref{#1}}
+\newcommand{\rtab}[1]{Tabela \ref{#1}}
+\newcommand{\rsec}[1]{Seção \ref{#1}}
+
+\makeatother
+
+\begin{document}
+
+
+\title{Construindo SlackBuilds com mkbuild}
+
+\author{Rudson Alves}
+
+\date{\today}
+
+\maketitle
+
+%\pagenumbering{roman}
+
+\tableofcontents{}
+%\listoffigures
+%\listoftables
+
+%\abstract{...}
+
+
+\section{Introdução}
+
+O \textit{mkbuild} Ã© um programa em \textit{script shell} destinado a construção de \textit{Slackbuilds},  \textit{scripts} utilizados para a construção de pacotes no \textit{Slackware}.
+
+\section{O modelo generic.mkSlackBuild}
+
+O \textit{mkbuild} utiliza o modelo padrão \textit{generic.mkSlackBuild}, armazenado em
+
+\begin{verbatim}
+/etc/simplepkg/defaults/mkbuild/
+\end{verbatim}
+
+Este modelo Ã© uma versão setorizada do \textit{generic.SlackBuild}, levemente modificada. O \textit{generic.SlackBuild} Ã© um modelo genérico de \textit{Slackbuilds} disponibilizado na Ã¡rvore de \textit{Slackbuilds} do \textit{Slack.Sarava}, para servir como modelo para a construção dos \textit{scripts}. Outros modelos setorizados podem ser utilizados pelo \textit{mkbuild}, a Ãºnica limitação Ã© quanto ao nome da seção \textit{slackdesc}, que não poderá ser alterada.
+
+
+\subsection{Os Campos}
+
+O modelo \verb!generic.mkSlackBuild! Ã© um \textit{SlackBuild} genérico com vários campos destacados por duplo colchetes, \verb![[! \dots \verb!]]!, com mostra o trecho abaixo:
+
+\begin{verbatim}
+...
+<set_variables> all
+# Set variables
+CWD="$(pwd)"
+SRC_NAME="[[SOURCE NAME]]"
+PKG_NAME="[[PACKAGE NAME]]"
+ARCH=${ARCH:=[[ARCH]]}
+SRC_VERSION=${VERSION:=[[VERSION]]}
+PKG_VERSION="$(echo "$SRC_VERSION" | tr '[[:blank:]-]' '_')"
+BUILD=${BUILD:=1[[SLACKBUILD AUTHOR INITIALS]]}
+...
+PREFIX=${PREFIX:=[[PREFIX]]}
+PKG_SRC="$TMP/$SRC_NAME-$SRC_VERSION"
+</set_variables>
+...
+\end{verbatim}
+
+Uma breve descrição destes campos Ã© apresentada na tabela abaixo: \\
+\\
+\begin{tabular}{l|l}
+\hline \hline
+\textbf{Campo} & \textbf{Descrição}\\
+\hline \hline
+PROGRAM NAME               & nome do programa                               \\
+PROGRAM URL                & \textit{URL} da fonte do pacote                \\
+SLACKBUILD AUTHOR          & nome do autor                                  \\
+SOURCE NAME                & nome da fonte, sem versão ou extensão          \\
+PACKAGE NAME               & nome do pacote e ser gerado                    \\
+ARCH                       & arquitetura do pacote. Padrão \verb!i486!      \\
+VERSION                    & versão do pacote                               \\
+SLACKBUILD AUTHOR INITIALS & assinatura utilizada pelo autor                \\
+PREFIX                     & prefixo da instalação (\verb!/usr!, \verb!/opt!, ...)\\
+SOURCE EXTENSION           & extensão da fonte (\verb!bz2!, \verb!gz!, ...) \\
+DOWNLOAD FOLDER URL        & \textit{URL} da pasta onde se encontra a fonte \\
+DECOMPRESSOR               & o descompressor para a fonte (\verb!gunzip!, \verb!bunzip2!, ...) \\
+DECOMPRESSOR TEST FLAG     & \textit{flag} de teste do descompressor        \\
+SIGNING KEY URL            & \textit{URL} da chave \textit{gpg} do fonte    \\
+SIGNING KEY                & chave \textit{gpg} da fonte                    \\
+MD5SUM EXTENSION           & extensão utilizada pelo arquivo \textit{md5sum}\\
+PATCH FILES                & arquivo \textit{path}                          \\
+NUMBER OF PREFIX SLASHES TO STRIP  & \dots                                  \\
+SOURCE NAME CONSTRUCTION STRING  & string para a construção do nome do arquivo. O padrão Ã© \$SRC\_NAME-\$VERSION.tar.\$EXTENSION  \\
+OTHER CONFIGURE ARGS       & argumentos de configuração passados ao \verb!./configure! \\
+DOCUMENTATION FILES        & lista de arquivos para a pasta \verb!/usr/doc/PACKAGE! \\
+SLACK-DESC                 & conteúdo do \verb!slack-desc!, descrição do pacote \\
+REST OF DOINST.SH          & conteúdo do \verb!doinst.sh!                   \\
+\hline
+\end{tabular}
+\\\\
+
+Em alguns casos o nome do pacote difere do nome da fonte, como Ã© o caso da fonte \verb!sigc++!, que gera o pacote de nome \verb!libsiggc++!. Por este motivo que existem os campos \textit{SOURCE NAME} e \textit{PACKAGE NAME}. Para uma compreensão mais profunda destes campos, aconselho ler o \textit{script} \textit{generic.SlackBuild}.
+
+
+\subsection{As Seções}
+
+As seções no modelo \verb!generic.mkSlackBuild!, são iniciadas pela \textit{tag} \verb!<nome_da_seção>! e terminadas com \verb!</nome_da_seção>!, como em um código \textit{html}, \underline{sem espaços}.
+
+A Ãºnica seção que não pode ter seu nome alterado Ã© \textit{slackdesc}. Esta seção Ã© editada de uma forma diferenciada pelo \textit{mkbuild} e a alteração de seu nome poderá gerar erro.
+
+Cada seção possui uma \textit{flag} com os possíveis valores:
+
+\begin{description}
+ \item[on] habilitado;
+ \item[off] desabilitado;
+ \item[all] sempre habilitado.
+\end{description}
+
+A intenção destas \textit{flags} Ã© gerar um padrão para as seções, deixando em \textbf{all} as seções que deverão estar sempre habilitadas e \textbf{on} ou \textbf{off} seções que podem ser habilitadas ou desabilitadas de acordo com as necessidades do \textit{SlackBuild} que será construído.
+
+As seções padrões do \verb!generic.mkSlackBuild! são listadas na tabela abaixo:
+\\\\
+\begin{tabular}{l|l|c}
+\hline
+Seção & Descrição & Flag \\
+\hline
+head                         & cabeçalho do \textit{SlackBuild}         & all \\
+slackbuildrc                 & carrega \textit{script} \verb!slackbuildrc! & off \\
+set\_variables               & inicia as variáveis                      & all \\
+slkflags                     & carrega \textit{flags} para compilação   & all \\
+error\_codes                 & códigos de erro para o \verb!createpkg!  & off \\
+start\_structure             & cria diretórios para compilação          & all \\
+download\_source             & baixa a fonte do pacote                  & off \\
+md5sum\_download\_and\_check\_0 & verifica \textit{md5sum} da fonte por código & off \\
+md5sum\_download\_and\_check\_1 & verifica \textit{md5sum} da fonte por arquivo & off \\
+gpg\_signature\_check        & verifica assinatura \textit{gpg} da fonte & off \\
+untar\_source                & desempacota a fonte                      & all \\
+path\_source                 & aplica \textit{path} a fonte             & off \\
+configure                    & configura pacote                         & off \\
+make\_package                & compila o pacote                         & all \\
+install\_package             & instala o pacote em diretório temporário & all \\
+strip\_binaries              & limpa binários                           & off \\
+compress\_manpages           & comprime páginas de manuais              & off \\
+compress\_info\_files        & comprime arquivos \textit{info}          & off \\
+install\_documentation       & instala documentação                     & off \\
+slackdesc                    & \textit{slackdesc} do pacote             & off \\
+postinstall\_script          & \textit{script} de pós-instalação        & off \\
+build\_package               & constrói pacote                          & all \\
+clean\_builds                & remove fontes e instalação temporária    & off \\
+\hline
+\end{tabular}
+\\\\
+
+
+\section{Configuração}
+
+Por hora, o \textit{mkbuild} utiliza apenas um variável de configuração em \verb!/etc/simplepkg/simplepkg.conf!. A variável \textit{SLACKBUILDS\_DIR} Ã© necessária para utilizar o \textit{mkbuild} com a opção ``\textit{-c}'' ou ``-\textit{-commit}'', que incorpora os arquivos \textit{SlackBuild} e \textit{slack-required} Ã  estrutura de diretórios do \textit{Slack.Sarava}, na cópia local.
+
+
+\section{Criando o SlackBuild de um aplicativo}
+
+Para fazer um \textit{SlackBuild} com o \textit{mkbuild} Ã© necessário criar um arquivo com os parâmetros que deseja que sejam passados para o modelo. Um arquivo de configuração simples, \textit{sample-Pyrex-small.mkbuild}, Ã© apresentado abaixo:
+
+\begin{verbatim}
+#--------------------
+# Variables
+#--------------------
+# Author name
+[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader"
+
+#
+# Complete URL address or URL base address ( without $SRC_NAME-$VERSION... )
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+
+#
+# Default enable sections:
+#      head, set_variables, slkflags, start_structure, untar_source,
+#      make_package, install_package, build_package
+# Warning: don't remove '#>>' and "#<<" tags.
+#>> Start SlackBuild Sections:
+ on: slackbuildrc
+ on: slkflags
+ on: error_codes
+ on: download_source
+ on: configure
+ on: strip_binaries
+ on: install_documentation
+ on: slackdesc
+ on: clean_builds
+#<< End SlackBuild Sections
+
+#------------------
+# Sections changes
+#------------------
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
+\end{verbatim}
+
+Isto Ã© o suficiente para fazer o \textit{SlackBuild} do \textit{Pyrex}. Para construir o \textit{SlackBuild} basta chamar o \textit{mkbuild} passando este arquivo de parâmetros:
+
+\begin{verbatim}
+$ mkbuild sample-Pyrex-small.mkbuild
+$ ls
+pyrex.SlackBuild      pyrex.mkbuild                sample-Pyrex-small.mkbuild
+pyrex.SlackBuild.old  sample-Pyrex-large.mkbuild
+\end{verbatim}
+
+Ele irá criar os arquivos \textit{pyrex.SlackBuild} e \textit{slack-required}, se o parâmetro \textit{SLACK REQUIRED} for passado. Arquivos antigos serão renomeados para \textit{.old}.
+
+Um modelo mais completo, com todos os parâmetros, \textit{sample-Pyrex-large.mkbuild}, Ã© disponibilizado junto com o \textit{mkbuild}. Nas seções seguintes Ã© dado uma breve explicação dos parâmetros e seções deste arquivo de parâmetros.
+
+
+\subsection{Descrição dos parâmetros do arquivo \textit{.mkbuild}}
+
+Embora existam muitos parâmetros no modelo \textit{generic.mkSlackBuild}, nem todos são necessários para a construção do \textit{SlackBuild}. Neste exemplo foram passados apenas dois parâmetros:
+
+\begin{description}
+ \item[SLACKBUILD AUTHOR] nome do autor;
+ \item[DOWNLOAD FOLDER URL] url completa da fonte do pacote.
+ \end{description}
+
+O mkbuild remove o nome do pacote, versão, assinatura do autor e várias outras informações destes dados, seguindo alguns critérios descritos a seguir.
+
+A sintaxe para a passagem de parâmetros ao \textit{mkbuild} Ã©
+
+\begin{verbatim}
+[[DESCRIÇÃO DO PARÂMETRO]]="Parâmetro entre aspas duplas"
+\end{verbatim}
+
+As aspas duplas podem ser omitidas\footnote{Nas versões inferiores a 0.9.9, do \textit{mkbuild}, o aspas duplo Ã© o delimitador e por isto Ã© obrigatório. Um parâmetro passado sem o aspas duplo será interpretado como um parâmetro vazio, nestas versões.}. O delimitador utilizado pelo \textit{mkbuild} Ã© o primeiro caracter igual ($=$) a aparecer na linha. Qualquer outra ocorrência de caracter igual será lido como parte do parâmetro. O mesmo acontece com comentários colocados após o caracter igual. Por exemplo, na linha abaixo:
+
+\begin{verbatim}
+[[PARÂMETRO TEST]]=Este parâmetro Ã© um teste            # Este comentário será lido.
+\end{verbatim}
+
+\noindent a leitura do parâmetro \textit{PARÂMETRO TEST} retornará:
+
+\begin{verbatim}
+Este parâmetro Ã© um teste            # Este comentário será lido.
+\end{verbatim}
+
+Segue abaixo uma breve descrição dos parâmetros utilizados pelo modelo \textit{generic.mkSlackBuild}.
+
+\subsubsection{SLACKBUILD AUTHOR e SLACKBUILD AUTHOR INITIALS}
+
+O parâmetro \textit{SLACKBUILD AUTHOR} deve conter o nome ou apelido do responsável pelo \textit{SlackBuild}. A declaração deste parâmetro Ã© obrigatória e sem ele o \textit{mkbuild} irá interromper a construção do \textit{SlackBuild}.
+
+\begin{verbatim}
+[[SLACKBUILD AUTHOR]]="Adalberto Simão Nader"
+\end{verbatim}
+
+O parâmetro \textit{SLACKBUILD AUTHOR INITIALS} Ã© construído Ã  partir da primeira letra de cada nome passado pelo parâmetro \textit{SLACKBUILD AUTHOR}, em letras minúsculas. Neste caso a assinatura será ``\textit{asn}'', as iniciais de \textit{Adalberto Simão Nader}.
+
+Caso deseje passa outro valor basta adicionar a linha abaixo, ao arquivo de parâmetros.
+
+\begin{verbatim}
+[[SLACKBUILD AUTHOR INITIALS]]="adal"
+\end{verbatim}
+
+
+\subsubsection{DOWNLOAD FOLDER URL}
+
+O parâmetro \textit{DOWNLOAD FOLDER URL} Ã© outro parâmetro obrigatório em um arquivo \textit{.mkbuild}. Este parâmetro pode conter o endereço completo da fonte do pacote:
+
+\begin{verbatim}
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/Pyrex-0.9.5.1a.tar.gz"
+\end{verbatim}
+
+Neste caso várias informações são removidas deste parâmetro. Este parâmetro pode ainda conter apenas o endereço do diretório de onde a fonte poderá ser encontrada:
+
+\begin{verbatim}
+[[DOWNLOAD FOLDER URL]]="http://www.cosc.canterbury.ac.nz/greg.ewing/python/Pyrex/"
+\end{verbatim}
+
+Neste caso, Ã© necessário a definição de outros parâmetros necessários para a construção do nome do pacote, como \textit{SOURCE NAME, PACKAGE NAME, VERSION e EXTENSION}, descritos a seguir.
+
+
+\subsubsection{SOURCE NAME, PACKAGE NAME, VERSION e EXTENSION}
+
+O \textit{SOURCE NAME} Ã© removido do \textit{URL}, caso não seja passado como parâmetro.
+
+Para que o \textit{SOURCE NAME} seja carregado corretamente, Ã© necessário que o nome da fonte tenha a forma padrão:
+
+\begin{verbatim}
+NOME-DO-PROGRAMA-VER.SÃO.tar.EXTENSÃO
+\end{verbatim}
+
+O nome do programa pode ter vários campos separados por um hífen ``-'', já a versão, pode possuir vários números, ou mesmo letras, separados por ponto e terminados por um ``.tar.''. A extensão deve vir logo após o ``.tar.''.
+
+A variável \textit{PACKAGE NAME}, Ã© construída com o mesmo valor de \textit{SOURCE NAME}, mas em letras minúsculas.
+
+Desta forma, a divisão dos campos no exemplo do aplicativo Pyrex, acima, terá o mesmo valor que as declarações dos parâmetros abaixo:
+
+\begin{verbatim}
+[[SOURCE NAME]]="Pyrex"
+
+[[PACKAGE NAME]]="pyrex"
+
+[[VERSION]]="0.9.5.1a"
+
+[[EXTENSION]]="gz"
+\end{verbatim}
+
+Observe que a precedência Ã© a passagem do valor como parâmetro, e não a sua construção.
+
+
+\subsubsection{SOURCE NAME CONSTRUCTION STRING}
+
+Deve conter uma string para a construção do nome da fonte. O valor padrão Ã©
+
+\begin{verbatim}
+[[SOURCE NAME CONSTRUCTION STRING]]="$SRC_NAME-$VERSION.tar.$EXTENSION"
+\end{verbatim}
+
+Observe que os parâmetros passados não são processados, como ocorre em uma leitura de uma variável num bash \textit{script}. Eles são lidos como se fossem uma cadeia de caracteres, por isto não tente escapar o \$ na construção do nome, ou o nome da fonte não será construído corretamente na execução do \textit{SlackBuild}.
+
+Embora a variável \$EXTENSION apareça na construção do nome da fonte, seu valor será substituído durante a construção do \textit{SlackBuild} pelo \textit{mkbuild}. Por isto que não existe inicialização desta variável no modelo \textit{generic.mkSlackBuild}.
+
+
+\subsubsection{DECOMPRESSOR e DECOMPRESSOR TEST FLAG}
+
+Os parâmetros \textit{DECOMPRESSOR} e \textit{DECOMPRESSOR TEST FLAG} são determinados por análise do parâmetro \textit{EXTENSION}, com os valores apresentados na tabela abaixo:
+\\\\
+\begin{tabular}{l|l|c}
+\hline
+EXTENSION & DECOMPRESSOR & DECOMPRESSOR TEST FLAG \\
+\hline
+gz, GZ   & gunzip  & -t \\
+bz2, BZ2 & bunzip2 & -t \\
+zip, ZIP & unzip   & -t \\
+\hline
+\end{tabular}
+
+Caso possua uma fonte comprimida por um compressor diferente, passe estes parâmetros pelo arquivo de parâmetros, \textit{.mkbuild}.
+
+\begin{verbatim}
+[[DECOMPRESSOR]]="programa descompressor"
+[[DECOMPRESSOR TEST FLAG]]="flag de teste"
+\end{verbatim}
+
+
+\subsubsection{DOCUMENTATION FILES}
+
+O valor padrão para \textit{DOCUMENTATION FILES} Ã©
+
+\begin{verbatim}
+[[DOCUMENTATION FILES]]="NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"
+\end{verbatim}
+
+Estes são os nomes mais comuns dos arquivos de documentação, que geralmente são disponibilizados na raiz do diretório das fontes dos programas. O ideal Ã© descompactar a fonte e verificar os arquivos de documentação disponíveis, para passá-los como parâmetro.
+
+
+\subsubsection{PREFIX}
+
+A maioria das fontes de programas disponibilizados atualmente, utilizam uma opção \textit{--prefix} no seu \textit{configure}, para determinar o diretório onde o programa será instalado. No \textit{Slackware} o valor desta variável variava entre \verb!/usr!, \verb!/opt! e \verb!/usr/X11!. Na nova versão do \textit{Slackware}, provável 12.0, os diretórios \verb!/opt! e \verb!/usr/X11! foram removidos e todos os pacotes estão sendo instalados em \verb!/usr!. Por isto o seu valor padrão Ã© \verb!/usr!.
+
+\begin{verbatim}
+[[PREFIX]]="/usr"
+\end{verbatim}
+
+
+\subsubsection{NUMBER OF JOBS}
+
+O parâmetro \textit{NUMBER OF JOBS} Ã© usado para indicar ao comando \textit{make} o número de processos que podem ser iniciados simultaneamente durante a compilação. A grande maioria dos programas atuais podem ser compilados em dois ou mais processos simultâneos. Isto reduz sensivelmente o tempo de compilação de um pacote, mesmo que sua máquina possua apenas um processador. Muitos \textit{SlackBuilds} oficiais do \textit{Slackware} utilizam este parâmetro configurado para ``7'' processos, ou seja ``-j7''. Este parâmetro pode ser passado como um número ou com a flag \textit{-j}, como nos exemplos abaixo.
+
+\begin{verbatim}
+[[NUMBER OF JOBS]]="7"
+\end{verbatim}
+
+\noindent ou
+
+\begin{verbatim}
+[[NUMBER OF JOBS]]="-j7"
+\end{verbatim}
+
+Por padrão, este parâmetro está desabilitado.
+
+\subsubsection{SLACK REQUIRED}
+
+Este parâmetro Ã© composto pela lista de pacotes necessários para a construção do aplicativo. Estes pacotes serão arranjados no arquivo \textit{slack-required}. O formato para este parâmetro Ã© apresentado na linha abaixo:
+
+\begin{verbatim}
+DEPENDÊNCIA_1 [CONDIÇÃO_1] [VERSÃO_1]: DEPENDÊNCIA_2 [CONDIÇÃO_2] [VERSÃO_2]: DEPENDÊNCIA_3 [CONDIÇÃO_3] [VERSÃO_3]: ...
+\end{verbatim}
+
+As condições possíveis são apresentadas na tabela abaixo:
+\\\\
+\begin{tabular}{c|l}
+\hline
+CONDIÇÃO & significado \\
+\hline
+$=$  & igual \\
+$>$  & maior \\
+$>=$ & maior ou igual \\
+\hline
+\end{tabular}
+
+Os campos \textit{CONDIÇÃO} e \textit{VERSÃO} podem ser omitidos. Cada pacote da dependência deve ser separado por um ``:''.
+
+Para o \textit{SLACK REQUIRED} definido com a linha:
+
+\begin{verbatim}
+[[SLACK REQUIRED]]="dep1 >= 1.1.1: dep2 >= 2.2.2:dep3:dep4:dep5 = 1.0"
+\end{verbatim}
+
+\noindent será gerado o arquivo \textit{slack-required} abaixo:
+
+\begin{verbatim}
+# Dependency list to Pyrex
+#
+# dependency [condition] [version]]
+dep1            >=              1.1.1
+dep2            >=              2.2.2
+dep3
+dep4
+dep5            =               1.0
+\end{verbatim}
+
+
+\subsubsection{SLACKBUILD MODEL}
+
+Este parâmetro contém o nome do modelo utilizado para gerar os \textit{SlackBuilds}. O valor padrão Ã© \textit{generic.mkSlackBuild}. Outros modelos podem ser utilizados adicionando-se o arquivo do modelo no diretório \verb!/etc/simplepkg/defaults/mkbuild/!. A linha abaixo
+
+\begin{verbatim}
+[[SLACKBUILD MODEL]]="generic.mkSlackBuild.2"
+\end{verbatim}
+
+\noindent define o modelo \textit{generic.mkSlackBuild.2} para a construção do \textit{SlackBuild}.
+
+
+\subsubsection{SLACKBUILD PATH}
+
+Este parâmetro Ã© necessário apenas para uso com a opção ``-c'', \textit{commit}. Ele indica o diretório, na estrutura de diretórios do Slack.Sarava, onde o \textit{SlackBuild} construído deverá ser armasenado. Se este parâmetro não for passado, o \textit{mkbuild} irá pesquisá-lo no repositório do \textit{gentoo}, pela \textit{internet}. Caso não consiga resolver com esta pesquisa, o \textit{SlackBuild} será colocado em um diretório padrão, para \textit{scripts} não classificados, em \verb!others/unclassified/$PKG_NAME!.
+
+\begin{verbatim}
+[[SLACKBUILD PATH]]="dev/python/pyrex"
+\end{verbatim}
+
+A estrutura de diretórios para armazenamento dos \textit{SlackBuilds} adotadas pelo \textit{Slack.Sarava} segue o mesmo padrão do \textit{portage} do \textit{gentoo}.
+
+
+\subsubsection{Outros Parâmetros}
+
+Outros parâmetros podem ser passados para substituição no modelo \textit{generic.mkSlackBuild}, como o parâmetro \textit{MD5SUM EXTENSION} no trecho abaixo:
+
+\begin{verbatim}
+#[[PATCH FILES]]=""
+#[[MD5SUM CODE]]=""
+[[MD5SUM EXTENSION]]="047574eb5d1b7848a70d4130035f1f3c"
+#[[SIGNING KEY]]=""
+#[[SIGNING KEY URL]]=""
+#[[PATCH FILES]]=""
+\end{verbatim}
+
+Além destes parâmetros padrões do \textit{generic.mkSlackBuild}, qualquer outro parâmetro pode ser criado e incluído ao modelo. Para isto Ã© necessário que seu nome seja incluído entre duplo colchetes como no exemplo abaixo:
+
+\begin{verbatim}
+[[NEW PARAMETER]]="new value"
+\end{verbatim}
+
+O \textit{mkbuild} irá procurar a ocorrência da seqüência \textit{[[NEW PARAMETER]]} no modelo passado por \textit{[[SLACKBUILD MODEL]]} e irá substitui-lo por ``\textit{new value}''.
+
+
+\subsection{Habilitando seções}
+
+As seções do modelo \textit{generic.mkSlackBuild} são habilitadas na seção iniciada por ``\#$>>$'' e terminada por ``\#$<<$'', no arquivos de parâmetros. Como as seções estão desabilitadas no modelo padrão, \textit{generic.mkSlackBuild}, esta seção do arquivo de parâmetros tem apenas que habilitar as seções desejadas do modelo.
+
+\begin{verbatim}
+#>> Start SlackBuild Sections:
+ on: slackbuildrc
+ on: slkflags
+ on: error_codes
+ on: download_source
+ on: configure
+ on: strip_binaries
+ on: install_documentation
+# linha ignorada
+ on: slackdesc
+ on: clean_builds
+#<< End SlackBuild Sections
+\end{verbatim}
+
+No caso do exemplo acima, são habilitadas as seções: \textit{slackbuildrc}, \textit{slkflags}, \textit{error\_codes}, \textit{download\_source}, \textit{configure}, \textit{strip\_binaries}, \textit{install\_documentation}, \textit{slackdesc} e \textit{clean\_builds}. Linhas iniciadas por uma tralha, \#, são ignoradas.
+
+
+\subsubsection{Substituição de seções do modelo}
+
+Em algumas situações pode ser necessário substituir o conteúdo de uma seção. Estas mudanças nas seções são feitas por iniciar uma seção, no arquivo de parâmetros, por ``\verb!#>nome_da_seção!'' e terminar por ``\verb!#<nome_da_seção!''. Quando o \textit{mkbuild} localiza estas seções no arquivo de parâmetros, ele substitui as seções padrões, de mesmo nome, pelo conteúdo definido no arquivo de parâmetros. Por exemplo:
+
+\begin{verbatim}
+#>untar_source
+# Untar program
+
+# Change to temp dir
+cd "$TMP"
+
+# Uncompress e untar source
+gunzip "$SRC_DIR/$SRC" | tar --no-same-owner --no-same-permissions -xvf || exit $ERROR_TAR
+
+# Change to source dir
+cd "$PKG_SRC"
+#<untar_source
+\end{verbatim}
+
+\noindent irá substituir a seção \textit{untar\_source} do modelo \textit{generic.mkSlackBuild}, pelo conteúdo definido no arquivo de parâmetros acima. A Ãºnica exceção a esta regra Ã© a seção \textit{slackdesc}.
+
+\begin{verbatim}
+#>slackdesc
+pyrex: Pyrex by Slack.Sarava
+pyrex:
+pyrex: Pyrex is a language specially designed for writing Python extension
+pyrex: modules. Its designed to bridge the gap between the nice, high-level,
+pyrex: easy-to-use world of Python and the messy, low-level world of C.
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+pyrex:
+#<slackdesc
+\end{verbatim}
+
+Para esta seção, o \textit{mkbuild} irá substituir o parâmetro \textit{[[SLACK-DESC]]} pelo conteúdo definido entre \verb!#>slackdesc! e \verb!#<slackdesc!, além de redimensionar a régua de orientação do \textit{slack-desc}.
+
+
+\section{Considerações Finais}
+
+Vários parâmetros podem ser passados ao \textit{mkbuild} pela linha de comando. Um manual completo destas opções pode ser consultado passando flag \textit{-h}, ao \textit{mkbuild}:
+
+\begin{verbatim}
+
+NAME
+        mkbuild - create SlackBuild script from mkbuild_file input
+
+SYNOPSIS
+        mkbuild [OPIONS] [mkbuild_file]
+
+DESCRIPTION
+        <mkbuild_file> input file with build rules and variables
+
+        Input options:
+            -a, --author <author_name>
+                author name
+            -ai, --author_initials <initials>
+                author signature
+            -cs, --const_string <string>
+                construction string to source name
+            -u, --url <url_address>
+                url address to source
+            -pn, --pkg_name <package_name>
+                package name
+            -sn, --src_name <source_name>
+                source name
+            -pv, --pkg_version <version>
+                package version
+            -md, --model <SlackBuild_model>
+                SlackBuild model file
+            -j, --jobs <jobs_number>
+                Number of jobs to run simultaneously
+            --prefix <install_dir>
+                Prefix install directory
+
+        Program options:
+        -h, --help
+            this help mesage
+        -c, --commit
+            commit SlackBuilds in local svn tree
+        -v, --version
+            program version
+
+EXAMPLES
+        mkbuild --prefix /usr/local pyrex.mkbuild
+            build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild
+            variables and options definitions.
+
+AUTHOR
+        Written by Rduson R. Alves
+
+
+REPORTING BUGS
+        Report bugs to <alves_list@yahoo.com.br>
+
+COPYRIGHT
+        Copyright Â© 2006 Free Software Foundation, Inc.
+        This is free software. You may redistribute copies of it under the
+        terms of the GNU General Public License
+        <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
+        extent permitted by law.
+\end{verbatim}
+
+Uma opção interessante Ã© a \textit{-c}, utilizada para adicionar e atualizar uma cópia da lista de \textit{SlackBuilds}, localmente.
+
+
+\end{document}
+
diff --git a/tags/0.5/doc/simplepkg.pdf b/tags/0.5/doc/simplepkg.pdf
new file mode 100644 (file)
index 0000000..22cc869
Binary files /dev/null and b/tags/0.5/doc/simplepkg.pdf differ
diff --git a/tags/0.5/doc/simplepkg.tex b/tags/0.5/doc/simplepkg.tex
new file mode 100644 (file)
index 0000000..610ed08
--- /dev/null
@@ -0,0 +1,395 @@
+\documentclass{article}
+\usepackage[brazilian]{babel}
+\usepackage[latin1]{inputenc}
+\usepackage[dvips]{graphics}
+\usepackage{hyperref}
+\newcommand\link{\hyperlink}
+
+\title{Gerenciamento de instalações e metapacotes com o simplepkg}
+\author{Silvio Rhatto}
+
+\begin{document}\label{start}
+\maketitle
+
+\begin{abstract}
+O \emph{simplepkg} Ã© um sistema de gerenciamento de sistemas slackware que roda sobre o pkgtool. Ele Ã© composto por vários scripts que desempenham funções de administração e desenvolvimento de sistemas do tipo Slackware, procurando fechar um circuito de produção, envolvendo a construção, a instalação de pacotes e até mesmo a instalação do sistema de forma automatizada.
+
+Do lado do desenvolvedor/a, ele ajuda na criação de SlackBuilds e construção de pacotes.  Do lado do administrador/a, ele possibilita a instalação automatizada de sistemas, instalação de pacotes e a criação de "templates" de instalação -- que contém todos os arquivos de configuração, informações de permissões e scripts de pós-instalação de uma dada máquina ou jaula.
+\end{abstract}
+
+\section{Descrição}
+
+Todas as distribuições de GNU/Linux já tem algum sistema de empacotamento amadurecido. A questão agora Ã© a praticidade de instalar e controlar o que está instalado, tanto pacotes como arquivos de configuração de uma máquina, além da facilidade na criação de pacotes.
+
+Imagine por exemplo se você precisa manter uma lista de pacotes de 200 máquinas slackware, sendo que algumas são usadas como desktop, outras como servidores web, alguma sendo o servidor de email e assim por diante. Imagine agora que você perca o disco de algumas dessas máquinas ou que precise cotidianamente reinstalar ou atualizar um sistema.
+
+Usar o cd de instalação do slackware e configurar na mão toda a vez que der um pau faria com que você ficasse louco/a e desperdiçasse muito tempo, além do que sempre ocorre de esquecermos algum detalhe ou pacote durante a configuração do sistema. Manter um backup completo de cada máquina, por outro lado, pode ser muito custoso se o número delas for muito grande.
+
+O \emph{simplepkg} permite que você mantenha um template para cada grupo de máquinas e com apenas um comando instalar o template numa partição. Além do template, você precisa configurar o \emph{simplepkg} para obter pacotes de um repositório local ou remoto.
+
+Gerenciar instalações e pacotes não Ã© tudo o que o \emph{simplepkg} faz. Ele pode ser usado até na criação de jaula e vservers, podendo manter toda a configuração das máquinas num repositório Subversion.
+
+O \emph{simplepkg} funciona não apenas com o Slackware mas com qualquer port (oficial ou não) que siga minimamente os padrões oficiais.
+
+\section{Arquitetura}
+
+O \emph{simplepkg} Ã© um conjunto de scripts escritos com a filosofia KISS (Keep It Simple, Stupid) em mente.  Ele Ã© um sistema muito simples, composto pelos seguintes comandos:
+
+\begin{itemize}
+  \item mkjail: constrói uma jaula/instalação de slackware numa pasta
+  \item templatepkg: criar ou adiciona pacotes a um template
+  \item lspkg: lista pacotes instalados
+  \item jail-update: inverso do jail-commit
+  \item jail-commit: atualiza o template
+  \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+  \item simplaret: obtém pacotes de repositórios locais ou remotos
+  \item createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório
+  \item repos: cria e mantém repositórios
+  \item mkbuild: cria scripts de construção de pacotes
+\end{itemize}
+
+\section{Instalando o simplepkg}
+
+Para baixar o pacote do \emph{simplepkg}, vá em \link{http://slack.sarava.org/packages/noarch/}{http://slack.sarava.org/packages/noarch/}. Depois, basta usar o comando
+
+\begin{verbatim}
+installpkg simplepkg-VERSAO-noarch-BUILD.tgz
+\end{verbatim}
+
+\section{Usando o simplepkg}
+
+As três principais aplicações desse conjunto são:
+
+\begin{itemize}
+  \item Gerenciamento de pacotes
+  \item Criação e manutenção de jaulas
+  \item Criação de pacotes
+\end{itemize}
+
+O gerencamento de pacotes Ã© feito através do \link{http://slack.sarava.org/simplaret}{simplaret}, e por ser algo bem específico está detalhado no artigo correspondente. As seções a seguir mostrarão como o \emph{simplepkg} pode ser utilizado para criar e manter jaulas, assim como também criar pacotes.
+
+\section{Criando templates de instalação}
+
+Originalmente, o \emph{simplepkg} foi desenvolvido para ajudar na automatização de instalações de sistemas slackware. Para isso, ele trabalha com templates -- listas com pacotes instalados, scripts e arquivos de configuração -- permitindo criar perfis de instalação que podem ser então usados para instalar o sistema numa outra partição ou criar um chroot.
+
+A construção de um template Ã© feita através do programa templatepkg. Para criar um template de nome "meu-slackware" contendo a lista de pacotes atualmente instalados no seu sistema, digite
+
+\begin{verbatim}
+templatepkg -c meu-slackware
+\end{verbatim}
+
+A opção -c (ou --create) criará a pasta /etc/simplepkg/templates/meu-slackware, que conterá os seguintes componentes:
+
+\begin{itemize}
+  \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.d}: cópia de arquivos de configuração
+  \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.s}: scripts de pós-instalação
+  \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.perms}: informações sobre arquivos
+  \item \emph{/etc/simplepkg/templates/meu-slackware/meu-slackware.template}: lista de pacotes
+\end{itemize}
+
+Esses quatro componentes são suficientes para armazenar todas as características de uma instalação de slackware: a lista de pacotes controla o software instalado (a partir do conteúdo da pasta \emph{/var/log/packages}), a cópia dos arquivos de configuração controla as personalizações feitas para o uso dos aplicativos e os scripts de pós-instalação cuidam de qualquer rotina que precisa ser realizada exatamente após a instalação do sistema. Já o arquivo de informações sobre arquivos contém as permissões, o dono/a e grupo de cada arquivo de configuração presente no template.
+
+Se você quiser criar um template a partir de uma instalação de slackware presente numa outra partição do sistema que não seja a raíz, basta usar um comando do tipo
+
+\begin{verbatim}
+templatepkg -c meu-slackware /mnt/slackware
+\end{verbatim}
+
+onde /mnt/slackware Ã© o local onde o sistema alternativo está instalado. Após criado, o template possuirá apenas a lista de pacotes contendo o nome dos aplicativos instalados no seu sistema. Como a pasta /var/log/packages não preserva a ordem de instalação dos pacotes, então talvez você queira editar manualmente a lista de pacotes de um template. Para isso, use o comando
+
+\begin{verbatim}
+templatepkg -e meu-slackware
+\end{verbatim}
+
+Para adicionar um arquivo de configuração no seu novo template, basta dar um comando como
+
+\begin{verbatim}
+templatepkg -a meu-slackware /etc/hosts
+\end{verbatim}
+
+Isso adicionará o arquivo /etc/hosts no template "meu-slackware". Além de salvar o arquivo e copiá-lo automaticamente quando você instalar seu sistema, o \emph{simplepkg} ainda pode tomar conta de qualquer alteração que o /etc/hosts sofrer no sistema, seja mudança no conteúdo do arquivo, dono ou permissão. Se você ainda estiver armazenando seus templates num repositório svn (o que veremos a seguir), o \emph{simplepkg} pode ainda manter um histórico completo das alterações do arquivo.
+
+ATENÇÂO: evite ao máximo deixar arquivos contendo senhas ou chaves privadas num template. O lugar mais adequado para deixar esse tipo de coisa Ã© num backup seguro.
+
+\section{Criando jaulas e replicando instalações}
+
+Uma vez que um template foi criado com uma lista de pacotes e opcionalmente com arquivos de configuração e scripts de pós-instalação (que serão detalhados a seguir), você pode replicar sua instalação de slackware utilizando o comando
+
+\begin{verbatim}
+mkjail jaula meu-slackware
+\end{verbatim}
+
+Isso cria uma nova Ã¡rvore do slackware em /vservers/jaula contendo todos os pacotes e arquivos de configuração do template "meu-slackware". A instalação dos pacotes será feita pelo aplicativo \link{http://slack.sarava.org/simplaret}{simplaret}, que deve estar configurado corretamente e cuja configuração padrão deve funcionar para a maioria dos casos.
+
+Se você quiser instalar essa jaula em outro local que não seja a pasta /vservers (esse local padrão pode ser mudado pelo arquivo de configuração do \emph{simplepkg}), basta usar um comando do tipo
+
+\begin{verbatim}
+ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+O comando acima faz exatamente o que você está pensando: replica sua instalação slackware em /mnt/hda2, dispensando totalmente o programa de instalação do slackware!
+
+Caso nenhum template for especificado, o mkjail utiliza o template /etc/simplepkg/default. O \emph{simplepkg} já vem com alguns templates padrões, presentes em /etc/simplepkg/defaults/templates.
+
+\section{Scripts de pós-instalação}
+
+Opcionalmente, Ã© possível manter scripts de pós-instalação num template. Tais script são executados exatamente
+após a instalação de uma jaula e cópia de arquivos de configuração pelo mkjail. Para criar ou editar um script
+de pós-instalação, use um comando como
+
+\begin{verbatim}
+templatepkg -b meu-slackware nome-do-script.sh
+\end{verbatim}
+
+Isso adicionará o script nome-do-script.sh no template "meu-slackware". O mkjail passa dois argumentos para cada script de pós-instalação: a pasta superior e o nome da jaula ("/mnt" e "hda2" no nosso exemplo anterior). Assim, um exemplo de script seria algo como
+
+\begin{verbatim}
+#!/bin/bash
+chroot $1/$2/ sbin/ldconfig
+\end{verbatim}
+
+\section{Listando o conteúdo de um template}
+
+Para listar os templates disponíveis ou o conteúdo de um template, use comandos como
+
+\begin{verbatim}
+templatepkg -l
+templatepkg -l meu-slackware
+\end{verbatim}
+
+\section{Removendo arquivos de um template}
+
+Analogamente Ã  forma como se adicona arquivos num template, removê-los pode ser feito com o seguinte comando:
+
+\begin{verbatim}
+templatepkg -d meu-slackware /etc/hosts
+\end{verbatim}
+
+Isso remove o arquivo /etc/hosts do template "meu-slackware".
+
+\section{Apagando um template}
+
+Para apagar um template, basta utilizar um comando como
+
+\begin{verbatim}
+templatepkg -r meu-slackware
+\end{verbatim}
+
+\section{Atualizando um template}
+
+Agora que já abordamos as opções do templatepkg, Ã© hora de visitarmos um outro aplicativo, desta vez utilizado para manter um template atualizado. O jail-commit Ã© um script que copia as alterações dos arquivos (conteúdo, propriedade e permissões) de um template a partir do conteúdo de uma jaula ou instalação.
+
+Por exemplo, caso se queira copiar as alterações da jaula /mnt/hda2 no template "meu-slackware", basta usar o comando
+
+\begin{verbatim}
+jail-commit /mnt/hda2 meu-slackware
+\end{verbatim}
+
+Além da lista de pacotes do template "meu-slackware" ser atualizada de acordo com a lista de pacotes presente em /mnt/hda2/var/log/packages, todos os arquivos de configuração presentes no template "meu-slackware" serão comparados com os correspondentes da pasta /mnt/hda2 e as diferenças são copiadas para o template. Da mesma forma, as permissões e informação de dono/grupo dos arquivos também Ã© atualizada no template.
+
+O comando jail-commit possibilita que um template sempre esteja atualizado e refletindo a configuração atual de uma instalação de slackware. Se você quiser atualizar apenas a lista de pacotes de um template, porém, use
+
+\begin{verbatim}
+templatepkg -u meu-template
+\end{verbatim}
+
+Para facilitar ainda mais o controle das alterações do sistema, existe ainda uma facilidade do arquivo /etc/simplepkg/jailist. Esse arquivo serve, além de outros propósitos descritos na \link{http://slack.sarava.org/simplaret}{documentação do simplaret}, para que o jail-commit saiba de antemão quais são as instalações de sistema do tipo Slackware presentes numa máquina, além da instalação principal na raíz do sistema.
+
+Suponha que uma máquina possua duas instalações de slackware, além da principal (raíz):
+
+\begin{itemize}
+  \item /mnt/slackware-1 usando o template "slackware-1"
+  \item /mnt/slackware-2 usando o template "slackware-2"
+\end{itemize}
+
+Se o arquivo /etc/simplepkg/jailist contiver as seguintes linhas,
+
+\begin{verbatim}
+/mnt/slackware-1
+/mnt/slackware-2
+\end{verbatim}
+
+então o comando
+
+\begin{verbatim}
+jail-commit
+\end{verbatim}
+
+atualizará o template "slackware-1" de acordo com o conteúdo da jaula /mnt/slackware-1 e o template "slackware-2" com o conteúdo da jaula /mnt/slackware-2. Se, além desses dois templates, existir um outro de nome "main", então o jail-commit sem argumentos também copiará as atualizações da instalação raíz, deixando-as no template "main".
+
+Você pode inclusive colocar uma entrada no crontab do tipo
+
+\begin{verbatim}
+20 4 * * * jail-commit
+\end{verbatim}
+
+para que seus templates sejam atualizados diariamente. Se você ainda possui o envio de emails configurado na sua máquina, então a saída do jail-commit será enviada pelo cron diariamente para seu email, contendo diffs das alterações de arquivos de configuração a lista de pacotes adicionados ou removidos no sistema.
+
+\section{Restaurando arquivos de configuração numa jaula}
+
+A operação contrária ao que o jail-commit faz também Ã© possível: suponha que você mexeu na configuração do sistema mas se arrependeu das alterações e deseja voltar a configuração para o modo como ela se encontra no seu template, basta usar o comando
+
+\begin{verbatim}
+jail-update /mnt/hda2 meu-slackware
+\end{verbatim}
+
+\section{Armazenando as configurações no repositório Subversion}
+
+Para aumentar ainda mais a flexibilidade e o controle do conteúdo dos templates, Ã© possível armazená-los num repositório Subversion. Para isso, edite o arquivo /etc/simplepkg/simplepkg.conf e deixe o parâmetro de configuração \emph{TEMPLATES\_UNDER\_SVN} com o valor "yes".
+
+Depois, crie um repositório subversion para armazenar seus templates, usando algo como
+
+\begin{verbatim}
+svnadmin create /var/svn/simplepkg --fs-type fsfs
+\end{verbatim}
+
+Com o repositório criado, basta importar seus templates com o comando
+
+\begin{verbatim}
+templatepkg -e file:///var/svn/simplepkg
+\end{verbatim}
+
+A partir daí, o comando jail-commit enviará automaticamente todas as alterações dos templates para o repositório subversion. Se, por outro lado, você quiser baixar as alterações dos templates que estão no repositório remoto para sua cópia local, use o comando
+
+\begin{verbatim}
+templatepkg -s
+\end{verbatim}
+
+Caso você queira importar uma pasta de templates de um repositório já existente, use
+
+\begin{verbatim}
+templatepkg -i file:///var/svn/simplepkg
+\end{verbatim}
+
+onde file:///var/svn/simplepkg Ã© o camninho do repositório.
+
+\section{Atualização de jaulas}
+
+A atualização de jaulas e sistemas instalados Ã© feita através do \link{http://slack.sarava.org/simplaret}{simplaret} e também utiliza o arquivo /etc/simplepkg/jailist. Para mais informações a respeito, consulte a \link{http://slack.sarava.org/simplaret}{documentação do simplaret} para mais detalhes.
+
+\section{Arquiteturas e versões diferentes}
+
+O \emph{simplepkg} foi idealizado para permitir que um mesmo template possa ser usado para criar jaulas de arquiteturas e versões diferentes de sistemas padrão slackware. A atualização desses sistemas também Ã© unificada. Essa possibilidade só Ã© permitida se você usa o \link{http://slack.sarava.org/simplaret}{simplaret} e não o swaret como ferramenta de obtenção de pacotes.
+
+Por exemplo, para criar uma instalação de slackware 10.1 (assumindo que suas definições de repositórios do /etc/simplepkg/repos.conf contenham locais com slack 10.1), basta usar o comando
+
+\begin{verbatim}
+VERSION=10.1 mkjail minha-jaula template-servidor
+\end{verbatim}
+
+Arquiteturas diferentes também podem ser usadas. Se você está num sistema x86\_64 e quer instalar um slack 10.2 numa partição, experimente
+
+\begin{verbatim}
+ARCH=i386 VERSION=10.2 ROOT=/mnt mkjail hda2 meu-slackware
+\end{verbatim}
+
+Note que os templates independem de arquitetura e versão, já que eles só contém nomes de pacotes, arquivos de configuração e scripts.
+
+\section{Criando um pacote de um template}
+
+Se, por algum motivo, você quiser construir um pacote com o conteúdo de um template, experimente o comando
+
+\begin{verbatim}
+templatepkg -p nome-do-template
+\end{verbatim}
+
+No entanto, o \emph{simplepkg} foi criado para que esse tipo de comportamento seja evitado, já que Ã© mais simples manter templates de configuração do que pacotes contendo a configuração de uma instalação.
+
+\section{Construindo pacotes}
+
+Até aqui, apenas mostramos os aplicativos do \emph{simplepkg} usados para a manutenção de instalações de slackware. No entanto, uma das outras finalidades desta suíte Ã© a construção de pacotes, o que Ã© feita pelo programa createpkg, Como dito anteriormente, o createpkg: baixa, compila e empacota software de acordo com scripts presentes num repositório de scripts, funcionando com um gerenciador de "ports" para slackware.
+
+O createpkg pode funcionar com qualquer tipo de script de construção de pacotes (SlackBuilds) mas funcionará melhor se os mesmos seguirem o padrão descrito na página
+
+\begin{verbatim}
+http://slack.sarava.org/wiki/Main/SlackBuilds
+\end{verbatim}
+
+Especificamente, o createpkg foi desenvolvido para utilizar os slackbuild disponíveis em \link{http://slack.sarava.org/slackbuilds}{http://slack.sarava.org/slackbuilds}. O createpkg trabalha com repositórios do tipo subversion.
+
+Para obter os scripts do repositório do slack.sarava.org, digite
+
+\begin{verbatim}
+createpkg --sync
+\end{verbatim}
+
+Em seguida, você pode listas todos os scripts disponíveis:
+
+\begin{verbatim}
+createpkg --list
+\end{verbatim}
+
+Para buscar por um pacote, use
+
+\begin{verbatim}
+createpkg --search latex2html
+\end{verbatim}
+
+No caso, a busca Ã© feita pelo SlackBuild do aplicativo "latex2html". Suponha agora que você queira construir o pacote desse aplicativo:
+
+\begin{verbatim}
+createpkg latex2html
+\end{verbatim}
+
+O pacote resultante estará na pasta /tmp ou no valor especificado pela variável de ambiente \emph{\$REPOS}. Para criar e também instalar o pacote, basta
+
+\begin{verbatim}
+createpkg --install latex2html
+\end{verbatim}
+
+Se o pacote possuir dependências listadas num arquivo slack-required e que não estiverem instaladas no sistema, o createpkg tentará processá-las uma a uma antes de tentar construir o pacote desejado: se as dependências não forem encontradas no repositório de scripts, então o createpkg tentará baixá-las de um repositório binário através do \link{http://slack.sarava.org/simplaret}{simplaret}. Se você não quiser que a resolução de dependências seja seguida, use a opção --no-deps.
+
+Para mais detalhes de funcionamento, experimente o comando
+
+\begin{verbatim}
+createpkg --help
+\end{verbatim}
+
+ou então acesse a página http://slack.sarava.org/wiki/Main/SlackBuilds.
+
+\section{Aplicativos auxiliares}
+
+O \emph{simplepkg} acompanha ainda alguns aplicativos auxiliares:
+
+\begin{itemize}
+   \item lspkg: lista pacotes instalados
+   \item rebuildpkg: reconstrói um pacote a partir de sua entrada no /var/log/packages
+   \item repos: cria e mantém repositórios
+   \item mkbuild: cria scripts de construção de pacotes
+\end{itemize}
+
+O comando lspkg Ã© um utilitário simples para a visualização de pacotes instalados no sistema. Já o rebuildpkg ajuda a recuperar pacotes instalados cujo tgz original foi perdido. O comando rebuildpkg reconstrói um pacote a partir de uma entrada no /var/log/packages. O comando
+
+\begin{verbatim}
+rebuildpkg coreutils
+\end{verbatim}
+
+reconstrói um pacote do coreutils usando os arquivos e as metainformações listadas no arquivo do /var/log/packages/ correspondente ao coreutils.
+
+Por fim, os scripts repos e mkbuild são os que se encontram na etapa de maior desenvolvimento: repos cria um repositório de pacotes a partir de uma pasta contendo pacotes do tipo pkgtool e o mkbuild Ã© um aplicativo para auxiliar a criação de scripts de construção de pacotes que podem ser utilizados sozinhos ou pelo o createpkg.
+
+\section{Parâmetros de configuração}
+
+O arquivo de configuração do \emph{simplepkg} Ã© o /etc/simplepkg/simplepkg.conf. Ele contém parâmetros de configuração de todos os scripts, porém neste texto não trataremos das opções específicas ao \link{http://slack.sarava.org/simplaret}{simplaret}, as quais tem uma seção específica no artigo correspondente.
+
+\begin{itemize}
+  \item \emph{JAIL\_ROOT}: pasta padrão onde as jaulas são criadas pelo mkjail. Valor padrão: "/vservers".
+  \item \emph{ADD\_TO\_JAIL\_LIST}: controla se uma jaula criada pelo mkjail deve ser adicionada automaticamente no arquivo /etc/simplepkg/jailist. O valor padrão Ã© "1" (habilitado).
+  \item \emph{TEMPLATES\_UNDER\_SVN}: indica se os templates estão armazenados num repositório subversion.  O valor padrão Ã© "no" (não).
+  \item \emph{TEMPLATE\_FOLDER}: indica qual Ã© a pasta de templates. O valor padrão Ã© "/etc/simplepkg/templates" e não Ã© recomendável alterá-lo.
+  \item \emph{TEMPLATE\_STORAGE\_STYLE}: controla a forma de armazenamento de templates. O valor padrão Ã© "own-folder" e essa opção apenas deve ser modificada se você armazena seus templates num formato antigo do \emph{simplepkg} e deseja manter compatibilidade.
+\end{itemize}
+
+Vale lembrar que todas as opções booleanas (isto Ã©, que podem ser apenas habilitadas ou desabilitadas) do simplepkg.conf tem os seguintes valores permitidos: "1" e "yes" para habilitado e "0" ou "no" para desabilitado.
+
+\section{Mais informações}
+
+O \emph{simplepkg} foi escrito por Silvio Rhatto (rhatto at riseup.net) sob licença GPL e seu código fonte Ã© disponibilizado através do repositório subversion:
+
+\begin{verbatim}
+svn checkout svn://slack.sarava.org/simplepkg
+\end{verbatim}
+
+O wiki de desenvolvimento: http://slack.sarava.org/wiki/Main/SimplePKG e o endereço da lista de discussão utilizada para discussões sobre o \emph{simplepkg} ou mesmo distribuições e pacotes do tipo Slackware Ã© http://listas.sarava.org/wws/info/slack.
+
+\end{document}
diff --git a/tags/0.5/install/doinst.sh b/tags/0.5/install/doinst.sh
new file mode 100644 (file)
index 0000000..a61648e
--- /dev/null
@@ -0,0 +1,3 @@
+( if [ ! -f "etc/simplepkg/simplepkg.conf" ]; then mv etc/simplepkg/simplepkg.conf.new etc/simplepkg/simplepkg.conf; fi )
+( if [ ! -f "etc/simplepkg/repos.conf" ]; then mv etc/simplepkg/repos.conf.new etc/simplepkg/repos.conf; fi )
+( if [ ! -f "etc/simplepkg/generic.mkslackbuild" ]; then mv etc/simplepkg/generic.mkSlackBuild.new etc/simplepkg/generic.mkSlackBuild; fi )
diff --git a/tags/0.5/install/slack-desc b/tags/0.5/install/slack-desc
new file mode 100644 (file)
index 0000000..38ea489
--- /dev/null
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description.  Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in.  You must
+# make exactly 11 lines for the formatting to be correct.  It's also
+# customary to leave one space after the ':'.
+
+         |-----handy-ruler-------------------------------------------------------|
+simplepkg: simplepkg (slackware management system)
+simplepkg:
+simplepkg: simplepkg is a very small set of scripts intended to help slackware
+simplepkg: users and developers, like the createpkg packaging tool, simplaret
+simplepkg: package retrieval, mkjail chroot installer and templatepkg template
+simplepkg: management system.
+simplepkg: 
+simplepkg:
+simplepkg:
+simplepkg:
+simplepkg:
diff --git a/tags/0.5/lib/common.sh b/tags/0.5/lib/common.sh
new file mode 100644 (file)
index 0000000..8d2bb2f
--- /dev/null
@@ -0,0 +1,712 @@
+#!/bin/bash
+#
+# common.sh: common functions for simplepkg
+# feedback: rhatto at riseup.net | gpl
+#
+# Uses some functions from pkgtools, which license is:
+#
+# Copyright 1999  Patrick Volkerding, Moorhead, Minnesota, USA 
+# Copyright 2001, 2002, 2003  Slackware Linux, Inc., Concord, California, USA
+# All rights reserved.
+#
+# Redistribution and use of this script, with or without modification, is
+# permitted provided that the following conditions are met:
+#
+# 1. Redistributions of this script must retain the above copyright
+#    notice, this list of conditions and the following disclaimer.
+#
+#  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
+#  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+#  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO
+#  EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+#  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
+#  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+#  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+#  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+#  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+#
+
+BASE_CONF="/etc/simplepkg"
+CONF="$BASE_CONF/simplepkg.conf"
+JAIL_LIST="$BASE_CONF/jailist"
+SIMPLARET="simplaret"
+
+# -----------------------------------------------
+#               pkgtool functions
+# -----------------------------------------------
+
+function package_name {
+
+  STRING=`basename $1 .tgz`
+  # Check for old style package name with one segment:
+  if [ "`echo $STRING | cut -f 1 -d -`" = "`echo $STRING | cut -f 2 -d -`" ]; then
+    echo $STRING
+  else # has more than one dash delimited segment
+    # Count number of segments:
+    INDEX=1
+    while [ ! "`echo $STRING | cut -f $INDEX -d -`" = "" ]; do
+      INDEX=`expr $INDEX + 1`
+    done
+    INDEX=`expr $INDEX - 1` # don't include the null value
+    # If we don't have four segments, return the old-style (or out of spec) package name:
+    if [ "$INDEX" = "2" -o "$INDEX" = "3" ]; then
+      echo $STRING
+    else # we have four or more segments, so we'll consider this a new-style name:
+      NAME=`expr $INDEX - 3`
+      NAME="`echo $STRING | cut -f 1-$NAME -d -`"
+      echo $NAME
+    fi
+  fi
+
+}
+
+# -----------------------------------------------
+#             package info functions
+# -----------------------------------------------
+
+function package_version {
+
+  # get VERSION from a package name
+  local file pack version
+  file="`basename $1`"
+  pack="`package_name $1`"
+  version="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 1`"
+  echo $version
+
+}
+
+function package_arch {
+
+  # get ARCH from a package name
+  local file pack arch
+  file="`basename $1`"
+  pack="`package_name $1`"
+  arch="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 2`"
+  echo $arch
+
+}
+
+function package_build {
+
+  # get BUILD from a package name
+  local file pack build
+  file="`basename $1 .tgz`"
+  pack="`package_name $1`"
+  build="`echo $file | sed -e "s/^$pack-//" | cut -d "-" -f 3`"
+  echo $build
+
+}
+
+# -----------------------------------------------
+#       package administrative functions
+# -----------------------------------------------
+
+function install_packages {
+
+  local check installed unable_to_install root
+
+  # check if is time to clean the local repository
+  if [ "$SIMPLARET_CLEAN"  == "1" ]; then
+    ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+  elif [ ! -z "$SIMPLARET_PURGE_WEEKS" ] && [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
+    ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge -w $SIMPLARET_PURGE_WEEKS
+  fi
+
+  root="$JAIL_ROOT/$server"
+
+  # now tries to install each package listed in the template
+  for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1 | awk '{ print $1 }'`; do
+
+    # try to install the package
+    ROOT=/$root ARCH=$ARCH VERSION=$VERSION $SIMPLARET --install $pack --skip-checks
+
+    # check if the package was installed
+    pack="`echo $pack | sed -e 's/\+/\\\+/'`"
+    installed=`eval "ls /$root/var/log/packages/ | egrep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
+    check=$?
+
+    if [ ! -z "$installed" ] && [ "$check" == "0" ]; then
+      # the package is installed
+      if [ ! -z "$SIMPLARET_DELETE_DURING" ] && [ "$SIMPLARET_DELETE_DURING" != "0" ]; then
+        SILENT=1 ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+      fi
+    else
+      unable_to_install="$unable_to_install\n\t$pack"
+    fi
+
+  done
+
+  # purge packages, if needed
+  if [ "$SIMPLARET_DELETE_DOWN" == "1" ]; then
+    ARCH=$ARCH VERSION=$VERSION $SIMPLARET --purge
+  fi
+
+  if [ ! -z "$unable_to_install" ]; then
+    echo "mkjail was unable to install the following packages on $root:"
+    echo -e "$unable_to_install"
+  fi
+
+}
+
+function remove_packages {
+
+  for pack in `cat $TEMPLATE | grep -v -e "^#" | cut -d : -f 1`; do
+    ROOT=/$JAIL_ROOT/$server removepkg $pack
+  done
+
+}
+
+# -----------------------------------------------
+#             config file functions
+# -----------------------------------------------
+
+function eval_parameter {
+
+  # usage: eval $1 parameter from $CONF
+  # return the evaluated parameter if available or $2 $3 ... $n
+
+  if grep -qe "^$1=" $CONF; then
+    grep -e "^$1=" $CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | sed -e 's/ *#.*$//'
+  else
+    shift
+    echo $*
+  fi
+
+}
+
+function eval_boolean_parameter {
+
+  # get a boolean parameter from the configuration
+
+  local value
+
+  # get the value
+  value="`eval_parameter $1 $2`"
+
+  # force case insensitiveness
+  value="`echo $value | tr '[:upper:]' '[:lower:]'`"
+
+  # convert it to wheter 0 or 1
+  if [ "$value" == "yes" ] || [ "$value" == "1" ]; then
+    echo 1
+  else
+    echo 0
+  fi
+
+}
+
+function eval_config {
+
+  # simplepkg config file evaluation
+  # usage: eval_config <program-name> [-u]
+
+  if [ -f "$CONF" ]; then
+
+    DEFAULT_ARCH="`eval_parameter DEFAULT_ARCH $(default_arch)`"
+    DEFAULT_VERSION="`eval_parameter DEFAULT_VERSION $(default_version)`"
+
+    STORAGE="`eval_parameter STORAGE /var/simplaret/packages`"
+    JAIL_ROOT="`eval_parameter JAIL_ROOT /vservers`"
+    PATCHES_DIR="`eval_parameter PATCHES_DIR /var/simplaret/patches`"
+    ROOT_PRIORITY="`eval_parameter ROOT_PRIORITY patches slackware extra testing pasture`"
+    REPOS_PRIORITY="`eval_parameter REPOS_PRIORITY patches slackware extra testing pasture`"
+    SIMPLARET_PURGE_WEEKS="`eval_parameter SIMPLARET_PURGE_WEEKS 0`"
+    FTP_TOOL="`eval_parameter FTP_TOOL curl`"
+    HTTP_TOOL="`eval_parameter HTTP_TOOL curl`"
+    CONNECT_TIMEOUT="`eval_parameter CONNECT_TIMEOUT 0`"
+    TEMPLATE_FOLDER="`eval_parameter TEMPLATE_BASE /etc/simplepkg/templates`"
+    TEMPLATE_STORAGE_STYLE="`eval_parameter TEMPLATE_STORAGE_STYLE own-folder`"
+
+    SIMPLARET_CLEAN="`eval_boolean_parameter SIMPLARET_CLEAN 1`"
+    SIMPLARET_DELETE_DOWN="`eval_boolean_parameter SIMPLARET_DELETE_DOWN 1`"
+    SIMPLARET_UPDATE="`eval_boolean_parameter SIMPLARET_UPDATE 0`"
+    SIMPLARET_DELETE_DURING="`eval_boolean_parameter SIMPLARET_DELETE_DURING 0`"
+    SIMPLARET_PURGE_PATCHES="`eval_boolean_parameter SIMPLARET_PURGE_PATCHES 1`"
+    SIMPLARET_DOWNLOAD_FROM_NEXT_REPO="`eval_boolean_parameter SIMPLARET_DOWNLOAD_FROM_NEXT_REPO 1`"
+    PASSIVE_FTP="`eval_boolean_parameter PASSIVE_FTP 0`"
+    WARNING="`eval_boolean_parameter WARNING 0`"
+    SIGNATURE_CHECKING="`eval_boolean_parameter SIGNATURE_CHECKING 0`"
+    DEPENDENCY_CHECKING="`eval_boolean_parameter DEPENDENCY_CHECKING 1`"
+    TEMPLATES_UNDER_SVN="`eval_boolean_parameter TEMPLATES_UNDER_SVN 0`"
+    ADD_TO_JAIL_LIST="`eval_boolean_parameter ADD_TO_JAIL_LIST 1`"
+
+    # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+    # donwload even # already applied patches, a good option when you plan
+    # to keep local copies of all needed patches for your system
+    DOWNLOAD_EVEN_APPLIED_PATCHES="`eval_boolean_parameter DOWNLOAD_EVEN_APPLIED_PATCHES 0`"
+
+    # Enabling this option, jail-upgrade will look at your
+    # standard repositories for new packages; if it find a package
+    # with different version of your current installed package and
+    # also this package isnt in the packages folder, then the new
+    # package is apllied; if in doubt, just say no or leave blank.
+    CONSIDER_ALL_PACKAGES_AS_PATCHES="`eval_boolean_parameter CONSIDER_ALL_PACKAGES_AS_PATCHES 0`"
+
+    # Enabling this option (i.e, setting to "1" or "yes"), simplaret will
+    # store patches it finds on ROOT repositories on
+    #
+    #   $PATCHES_DIR/$ARCH/$VERSION/root-$repository_name.
+    #
+    # By default this option is turned off because it breaks the standard
+    # way to store packages and can cause some confusion, but its an useful
+    # feature if you like to see all patches apart from common packages and/or
+    # stored in the same tree.
+    STORE_ROOT_PATCHES_ON_PATCHES_DIR="`eval_boolean_parameter STORE_ROOT_PATCHES_ON_PATCHES_DIR 0`"
+
+    # now we place "patches" on the top of ROOT_PRIORITY
+    ROOT_PRIORITY="patches `echo $ROOT_PRIORITY | sed -e 's/patches//'`"
+
+  else
+    echo $1 error: config file $CONFIG not found
+    exit 1
+  fi
+
+  if [ ! -d "$STORAGE" ]; then
+    mkdir -p $STORAGE
+  fi
+
+  if [ ! -d "$PATCHES_DIR" ]; then
+    mkdir -p $PATCHES_DIR
+  fi
+
+  if [ -z "$ARCH" ]; then
+    ARCH="$DEFAULT_ARCH" 
+  fi
+
+  if [ -z "$VERSION" ]; then
+    VERSION="$DEFAULT_VERSION"
+  fi
+
+  if [ "$FTP_TOOL" != "wget" ] && [ "$FTP_TOOL" != "curl" ] && [ "$FTP_TOOL" != "ncftpget" ]; then
+    echo "$1 configuration error: invalid value $FTP_TOOL for config parameter FTP_TOOL"
+    echo "$1 assuming value \"curl\" for variable FTP_TOOL"
+    FTP_TOOL="curl"
+  fi
+
+  if [ "$HTTP_TOOL" != "wget" ] && [ "$HTTP_TOOL" != "curl" ]; then
+    echo "$1 configuration error: invalid value $HTTP_TOOL for config parameter HTTP_TOOL"
+    echo "$1 assuming value \"curl\" for variable HTTP_TOOL"
+    HTTP_TOOL="curl"
+  fi
+
+  if which $SIMPLARET &> /dev/null; then
+    if [ "$SIMPLARET_UPDATE" == "1" ]; then
+      if [ "$2" == "-u" ]; then
+        ARCH=$ARCH VERSION=$VERSION $SIMPLARET --update
+      fi
+    fi
+  else
+    echo "$SIMPLARET not found, please install it before run $0"
+  fi
+
+  if [ "$TEMPLATE_STORAGE_STYLE" != "simplepkg-folder" ] && \
+     [ "$TEMPLATE_STORAGE_STYLE" != "templates-folder" ] && \
+     [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ]; then
+    TEMPLATE_STORAGE_STYLE="own-folder"
+  fi
+
+  if [ ! -z "$ROOT" ]; then
+    JAIL_ROOT="$ROOT"
+  fi
+
+}
+
+# -----------------------------------------------
+#           arch and version functions
+# -----------------------------------------------
+
+function default_version {
+
+  # get version from /etc/slackware-version
+  if [ -f "$1/etc/slackware-version" ]; then
+    cat $1/etc/slackware-version | awk '{ print $2 }' | sed -e 's/.0$//'
+  else
+    echo "none"
+  fi
+
+}
+
+function default_arch {
+
+  # get arch from /etc/slackware-version
+
+  local arch
+  arch="`cat $1/etc/slackware-version | awk '{ print $3 }' | sed -e 's/(//' -e 's/)//'`"
+
+  if [ -z "$arch" ]; then
+    echo i386
+  else
+    echo $arch
+  fi
+
+}
+
+# -----------------------------------------------
+#              template functions
+# -----------------------------------------------
+
+function search_default_template {
+
+  if [ -e "$BASE_CONF/default.template" ]; then
+    TEMPLATE_BASE="$BASE_CONF/default"
+    echo $BASENAME using default template
+  elif [ -e "$TEMPLATE_FOLDER/default.template" ]; then
+    TEMPLATE_BASE="$TEMPLATE_FOLDER/default"
+    echo $BASENAME: using default template
+  elif [ -e "$TEMPLATE_FOLDER/default/default.template" ]; then
+    TEMPLATE_BASE="$TEMPLATE_FOLDER/default/default"
+    echo $BASENAME: using default template
+  elif [ -e "$BASE_CONF/defaults/templates/default/default.template" ]; then
+    TEMPLATE_BASE="$BASE_CONF/defaults/templates/default"
+    echo $BASENAME using default template
+  else
+    echo $BASENAME: error: default template not found
+    echo $BASENAME: please create a template using templatepkg
+    return 1
+  fi
+
+}
+
+function search_template {
+
+  # determine the template to be used
+  # usage: search-template <template-name> [--new | --update]
+
+  #
+  # templates can be stored either on
+  #
+  # - $BASE_CONF/template_name.template
+  # - $TEMPLATE_FOLDER/template_name.template
+  # - $TEMPLATE_FOLDER/template_name/template_name.template
+  #
+  # also, there's a folder for "oficial" simplepkg templates,
+  # $BASE_CONF/defaults/templates/ and you can override any template
+  # in the default folder by placing a template with the same name
+  # in the template storage folders
+  #
+
+  if [ -f "$BASE_CONF/$1.template" ]; then
+    TEMPLATE_BASE="$BASE_CONF/$1"
+  elif [ -f "$TEMPLATE_FOLDER/$1.template" ]; then
+    TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+  elif [ -f "$TEMPLATE_FOLDER/$1/$1.template" ]; then
+    TEMPLATE_BASE="$TEMPLATE_FOLDER/$1/$1"
+  elif [ -f "$BASE_CONF/defaults/templates/$1/$1.template" ] && \
+       [ "$2" != "--update" ]; then
+    TEMPLATE_BASE="$BASE_CONF/defaults/templates/$1/$1"
+  else
+    if [ "$2" == "--new" ]; then
+      # we need to return the path for a new template
+      if [ "$TEMPLATE_STORAGE_STYLE" == "simplepkg-folder" ]; then
+        TEMPLATE_BASE="$BASE_CONF/$1"
+      elif [ "$TEMPLATE_STORAGE_STYLE" == "templates-folder" ]; then
+        TEMPLATE_BASE="$TEMPLATE_FOLDER/$1"
+      else
+        TEMPLATE_BASE="$TEMPLATE_FOLDER/$1/$1"
+      fi
+    elif [ "$2" == "--update" ]; then
+      return 1
+    else
+      echo $BASENAME: template $1 not found
+      search_default_template
+    fi
+  fi
+
+}
+
+# -----------------------------------------------
+#           unix permission functions
+# -----------------------------------------------
+
+function numeric_perm {
+
+  # get the numeric permission of a file
+  # usage: numeric_perm <file-name>
+
+  # just a bit of forbidden secrets
+
+  if [ -a "$1" ]; then
+    ls -lnd $1 | awk '{ print $1 }' | \
+    sed -e 's/^.//' -e 's/r/4/g' -e 's/w/2/g' -e 's/x/1/g' \
+        -e 's/-/0/g' -e 's/\(.\)\(.\)\(.\)/\1+\2+\3/g' |   \
+    fold -w5 | bc -l | xargs | sed -e 's/ //g'
+  fi
+
+}
+
+function get_owner {
+
+  # get the numeric owner for a file
+  # usage: get_owner <file>
+
+  if [ -a "$1" ]; then
+    ls -lnd $1 | awk '{ print $3 }'
+  fi
+
+}
+
+function get_group {
+
+  # get the numeric group for a file
+  # usage: get_group <file>
+
+  if [ -a "$1" ]; then
+    ls -lnd $1 | awk '{ print $4 }'
+  fi
+
+}
+
+# -----------------------------------------------
+#              subversion functions
+# -----------------------------------------------
+
+function use_svn {
+
+  # check if svn usage is enabled
+
+  if [ "$TEMPLATES_UNDER_SVN" == "1" ] && \
+     [ "$TEMPLATE_STORAGE_STYLE" == "own-folder" ]; then
+     return 0
+   else
+     return 1
+   fi
+
+}
+
+function svn_check {
+
+  # check if a file is under svn
+  # usage: svn_check <file>
+
+  local cwd folder
+
+  cwd="`pwd`"
+  folder="`dirname $1`"
+
+  if [ -d "$folder/.svn" ]; then
+
+    cd $folder
+
+    if [ "`svn status $1 | awk '{ print $1 }'`" == "?" ]; then
+      return 1
+    else
+      return 0
+    fi
+
+    cd $cwd
+
+  else
+
+    return 1
+
+  fi
+
+}
+
+# -----------------------------------------------
+#           update jail functions
+# -----------------------------------------------
+
+function update_template_files {
+
+  # update template files from svn
+  # usage: update_template_files
+
+  if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then
+    echo Checking out last template revision from svn...
+    cd `dirname $TEMPLATE_BASE`
+    svn update
+  fi
+
+}
+
+function copy_template_files {
+
+  # copy template files into jail
+  # usage: copy_template_files <jail-path>
+
+  if [ -d "$1" ]; then
+    if [ -d "$TEMPLATE_BASE.d" ]; then 
+      echo "Copying template files to $1..."
+      if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then
+        rsync -av --exclude=.svn $TEMPLATE_BASE.d/ $1/
+      else
+        rsync -av $TEMPLATE_BASE.d/ $1/
+      fi
+    fi
+  fi
+
+}
+
+function set_jail_perms {
+
+  # set template file permissions under a jail
+  # usage: set_jail_perms <jail-path>
+
+  if [ -s "$TEMPLATE_BASE.perms" ]; then
+    echo Setting jail $1 permissions...
+    cat $TEMPLATE_BASE.perms | while read entry; do
+      file="`echo $entry | cut -d ";" -f 1`"
+      if [ -e "$TEMPLATE_BASE.d/$file" ] && [ -a "$1/$file" ]; then
+        owner="`echo $entry | cut -d ";" -f 2`"
+        group="`echo $entry | cut -d ";" -f 3`"
+        perms="`echo $entry | cut -d ";" -f 4`"
+        chmod $perms $1/$file
+        chown $owner:$group $1/$file
+      fi
+    done
+  fi
+
+}
+
+# -----------------------------------------------
+#           repository build functions
+# -----------------------------------------------
+
+function svn_add_meta {
+
+  find *meta -exec svn add {} 2> /dev/null \;
+  find . -name *meta -exec svn add {} 2> /dev/null \;
+
+}
+
+function gen_filelist {
+
+  # generate FILELIST.TXT
+  # usage: gen_filelist
+
+  find . -type f -name *.tgz -follow -print | sort | tr '\n' '\0' | \
+       xargs -0r ls -ldL --time-style=long-iso > FILELIST.TXT
+  echo "Created new FILELIST.TXT"
+
+}
+
+function gen_patches_filelist {
+
+  # generate FILE_LIST
+  # usage: gen_patches_filelist <folder>
+
+  if [ ! -z "$1" ] && [ -d "$1" ]; then
+
+    cwd="`pwd`"
+    cd $1
+    for file in `find | grep -e ".tgz$"`; do ls -l $file; done > FILE_LIST
+    cd $cwd
+
+    if [ "$1" == "." ]; then
+      echo "Created new FILE_LIST"
+    else
+      echo "Created new $1/FILE_LIST"
+    fi
+
+  fi
+
+}
+
+function gen_packages_txt {
+
+  # generate PACKAGES.TXT
+  # usage: gen_packages_txt <folder>
+
+  if [ ! -z "$1" ] && [ -d "$1" ]; then
+
+    cwd="`pwd`"
+    cd $1
+
+    echo '' > PACKAGES.TXT
+    find . -type f -name '*.meta' -exec cat {} \; >> PACKAGES.TXT
+    cat PACKAGES.TXT | gzip -9 -c - > PACKAGES.TXT.gz
+    cd $cwd
+
+    if [ "$1" == "." ]; then
+      echo "Created new PACKAGES.TXT and PACKAGES.TXT.gz"
+    else
+      echo "Created new $1/PACKAGES.TXT and $1/PACKAGES.TXT.gz"
+    fi
+
+  fi
+
+}
+
+function gen_md5_checksums {
+
+  # generate CHECKSUMS.md5
+  # usage: gen_md5_checksums <folder>
+
+  if [ -d "$1" ]; then
+
+    cwd="`pwd`"
+    cd $1
+
+    echo '' > CHECKSUMS.md5
+    find . -type f -name '*.tgz' -exec md5sum {} \; >> CHECKSUMS.md5
+    cat CHECKSUMS.md5 | gzip -9 -c - > CHECKSUMS.md5.gz
+    cd $cwd
+
+    if [ "$1" == "." ]; then
+      echo "Created new CHECKSUMS.md5 and CHECKSUMS.md5.gz"
+    else
+      echo "Created new $1/CHECKSUMS.md5 and $1/CHECKSUMS.md5.gz"
+    fi
+
+  fi
+
+}
+
+function gen_meta {
+
+  # generate metafiles
+  # usage: gen_meta <package-file>
+
+  if [ ! -f $1 ]; then
+    echo "File not found: $1"
+    exit 1;
+  else
+    echo "Processing $1"
+  fi
+
+  if [ "`echo $1|grep -E '(.*{1,})\-(.*[\.\-].*[\.\-].*).tgz[ ]{0,}$'`" == "" ]; then
+    return;
+  fi
+
+  NAME=$(echo $1|sed -re "s/(.*\/)(.*.tgz)$/\2/")
+  LOCATION=$(echo $1|sed -re "s/(.*)\/(.*.tgz)$/\1/")
+  SIZE=$( expr `gunzip -l $1 | tail -n 1|awk '{print $1}'` / 1024 )
+  USIZE=$( expr `gunzip -l $1 | tail -n 1|awk '{print $2}'` / 1024 )
+  REQUIRED=$(tar xzfO $1 install/slack-required 2>/dev/null|xargs -r -iZ echo -n "Z,"|sed -e "s/,$//")
+  CONFLICTS=$(tar xzfO $1 install/slack-conflicts 2>/dev/null|xargs -r -iZ echo -n "Z,"|sed -e "s/,$//")
+  SUGGESTS=$(tar xzfO $1 install/slack-suggests 2>/dev/null|xargs -r )
+  METAFILE=${NAME%tgz}meta
+
+  echo "PACKAGE NAME:  $NAME" > $LOCATION/$METAFILE
+
+  if [ -n "$DL_URL" ]; then
+    echo "PACKAGE MIRROR:  $DL_URL" >> $LOCATION/$METAFILE
+  fi
+
+  echo "PACKAGE LOCATION:  $LOCATION" >> $LOCATION/$METAFILE
+  echo "PACKAGE SIZE (compressed):  $SIZE K" >> $LOCATION/$METAFILE
+  echo "PACKAGE SIZE (uncompressed):  $USIZE K" >> $LOCATION/$METAFILE
+  echo "PACKAGE REQUIRED:  $REQUIRED" >> $LOCATION/$METAFILE
+  echo "PACKAGE CONFLICTS:  $CONFLICTS" >> $LOCATION/$METAFILE
+  echo "PACKAGE SUGGESTS:  $SUGGESTS" >> $LOCATION/$METAFILE
+  echo "PACKAGE DESCRIPTION:" >> $LOCATION/$METAFILE
+
+  tar xzfO $1 install/slack-desc | grep -E '\w+\:'|grep -v '^#' >> $LOCATION/$METAFILE
+
+  echo "" >> $LOCATION/$METAFILE
+
+}
+
+# -----------------------------------------------
+#                 misc functions
+# -----------------------------------------------
+
+function slash {
+
+  # remove additional slashes
+  echo $* | sed -e 's/\/\+/\//g'
+
+}
+
diff --git a/tags/0.5/simplepkg.SlackBuild b/tags/0.5/simplepkg.SlackBuild
new file mode 100755 (executable)
index 0000000..60ff082
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/bash
+#
+# SlackBuild script for simplepkg
+#
+
+PACKAGE="simplepkg"
+PACK_DIR="package-$PACKAGE"
+BUILD=${BUILD:=1rha}
+VERSION="0.5"
+ARCH="noarch"
+LIBEXEC="/usr/libexec/$PACKAGE"
+BINDIR="/usr/bin"
+BINARY_LIST="simplaret repos lspkg mkbuild"
+SBINDIR="/usr/sbin"
+SBINARY_LIST="exec-slackbuild mkjail templatepkg jail-update jail-commit metapkg rebuildpkg createpkg exec-slackbuild"
+LIB_LIST="common.sh"
+DOC_DIR="/usr/doc"
+DOC_LIST="COPYING TODO CHANGELOG README README.pt_BR README.simplaret README.simplaret.pt_BR"
+
+rm -rf $PACK_DIR
+mkdir -p $PACK_DIR/install
+cp install/slack-desc $PACK_DIR/install
+cp install/doinst.sh $PACK_DIR/install
+
+mkdir -p $PACK_DIR/$SBINDIR
+for binary in $SBINARY_LIST; do
+  if [ -f "src/$binary" ]; then
+    cp src/$binary $PACK_DIR/$SBINDIR
+    chmod +x $PACK_DIR/$SBINDIR/$binary
+  fi
+done
+
+mkdir -p $PACK_DIR/$BINDIR
+for binary in $BINARY_LIST; do
+  cp src/$binary $PACK_DIR/$BINDIR/
+  chmod +x $PACK_DIR/$BINDIR/$binary
+done
+
+mkdir -p $PACK_DIR/$LIBEXEC
+for lib in $LIB_LIST; do
+  cp lib/$lib $PACK_DIR/$LIBEXEC/
+done
+
+rm -rf $PACK_DIR/$DOC_DIR
+mkdir -p $PACK_DIR/$DOC_DIR/$PACKAGE-$VERSION
+for file in $DOC_LIST; do
+ cp doc/$file $PACK_DIR/$DOC_DIR/$PACKAGE-$VERSION/
+done
+
+mkdir -p $PACK_DIR/etc/$PACKAGE/{defaults,templates}
+rsync -av --exclude=.svn templates/* $PACK_DIR/etc/$PACKAGE/defaults/templates/
+chmod +x $PACK_DIR/etc/$PACKAGE/defaults/templates/vserver/vserver.s/*.sh
+chmod +x $PACK_DIR/etc/$PACKAGE/defaults/templates/vserver-legacy/vserver-legacy.s/*.sh
+cp conf/simplepkg.conf.new $PACK_DIR/etc/$PACKAGE
+cp conf/repos.conf.new $PACK_DIR/etc/$PACKAGE
+cp conf/generic.mkSlackBuild.new $PACK_DIR/etc/$PACKAGE
+cp utils/exec-slackbuild $PACK_DIR/$SBINDIR/
+
+if [ -f "$PACK_DIR/usr/sbin/jail-upgrade" ]; then
+  cd $PACK_DIR/usr/sbin && ln -s jail-upgrade vserver-upgrade
+  cd -
+fi
+
+cd $PACK_DIR
+chown -R root.root *
+
+makepkg -c y -l y ../simplepkg-$VERSION-$ARCH-$BUILD.tgz
+cd ..
+
+if [ "$CLEANUP" != "no" ]; then
+  rm -rf $PACK_DIR
+fi
+
diff --git a/tags/0.5/src/createpkg b/tags/0.5/src/createpkg
new file mode 100644 (file)
index 0000000..a80b033
--- /dev/null
@@ -0,0 +1,501 @@
+#!/bin/bash
+#
+# createpkg: package builder using http://slack.sarava.org/slackbuilds scripts
+# feedback: rhatto at riseup.net | gpl
+#
+#  createpkg is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  createpkg is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# /etc/simplepkg/slackbuildrc parameters:
+#
+# SLACKBUILDS_DIR="/folder/to/place/slackbuilds", defaults to /var/slackbuilds
+# SVN="svn://repository", defaults do svn://slack.sarava.org/slackbuilds
+# SYNC="yes|no", whether to always update the repository
+#
+# TODO
+#
+# - optionally show a dependency tree before create the package
+# - in function solve_dep: resolve program versions
+# - mkdir source directory - error... (please check!)
+
+#---------------------------------------------------
+#               Createpkg functions
+#---------------------------------------------------
+
+CREATEPKG_VERSION="1.0.4.1"
+
+function error_codes {
+
+    # Slackbuilds error codes
+    ERROR_WGET=31       # wget error
+    ERROR_MAKE=32       # make source error
+    ERROR_INSTALL=33    # make install error
+    ERROR_MD5=34        # md5sum error
+    ERROR_CONF=35       # ./configure error
+    ERROR_HELP=36       # dasable
+    ERROR_TAR=37        # tar error
+    ERROR_MKPKG=38      # makepkg error
+    ERROR_GPG=39        # gpg check error
+    ERROR_PATCH=40      # patch error
+    ERROR_VCS=41        # cvs error
+    ERROR_MKDIR=42      # make directory error
+
+    # Createpkg error codes
+    ERROR_INSTPKG=200    # installpkg error
+    ERROR_DEPEN=201      # dependency error
+    SCRIPT_OR_PACKAGE_NOT_FOUND=202     # Script or package not found
+}
+
+function eecho {
+
+    # echoes a message
+    # usage: eecho <message-type> <message>
+    # message-type can be: commun, messag, error, normal
+
+    echo -e "${1}${2}${normal}"
+
+}
+
+function handle_error {
+
+    # This function deals with internal createpkg errors
+    # and also with non-zero exit codes from slackbuilds
+    # Input:    $1 - error code
+    # Output:   Error mensage
+    #
+    # check slackbuild exit status are:
+    #
+    # ERROR_WGET=31;      ERROR_MAKE=32;      ERROR_INSTALL=33
+    # ERROR_MD5=34;       ERROR_CONF=35;      ERROR_HELP=36
+    # ERROR_TAR=37;       ERROR_MKPKG=38      ERROR_GPG=39
+    # ERROR_PATCH=40;     ERROR_VCS=41;       ERROR_MKDIR=42
+    #
+    # thanks to rudsonalves at yahoo.com.br for this spec.
+
+    # we don't want to process when exit status = 0
+    [ "$1" == "0" ] && return
+
+    # Exit codes
+    case $1 in
+        2)  usage ;;
+        3)  eecho $alert "$BASENAME: could not update the repository $2" ;;
+        4)  eecho $alert "$BASENAME: could not create folder $2" ;;
+        5)  eecho $alert "$BASENAME: script not found for $2" ;;
+        $ERROR_WGET)
+            eecho $error "$BASENAME: error downloading source/package for $2" ;;
+        $ERROR_MAKE)
+            eecho $error "$BASENAME: error compiling $2 source code" ;;
+        $ERROR_INSTALL)
+            eecho $error "$BASENAME: error installing $2" ;;
+        $ERROR_MD5)
+            eecho $error "$BASENAME: error on source code integrity check for $2" ;;
+        $ERROR_CONF)
+            eecho $error "$BASENAME: error configuring the source code for $2" ;;
+        $ERROR_HELP)
+            exit 0 ;; # its supposed to never happen here :P
+        $ERROR_TAR)
+            eecho $error "$BASENAME: error decompressing source code for $2" ;;
+        $ERROR_MKPKG)
+            eecho $error "$BASENAME: error creating package $2" ;;
+        $ERROR_GPG)
+            eecho $error "$BASENAME: error verifying GPG signature the source code for $2" ;;
+        $ERROR_PATCH)
+            eecho $error "$BASENAME: error patching the source code for $2" ;;
+        $ERROR_VCS)
+            eecho $error "$BASENAME: error downloading $2 source from version control system" ;;
+        $ERROR_MKDIR)
+            eecho $error "$BASENAME: make directory $2 error, aborting" ;;
+        $ERROR_INSTPKG)
+            eecho $error "$BASENAME: install package $2 error, aborting" ;;
+        $ERROR_DEPEN)
+            eecho $error "$BASENAME: dependency solve error, aborting" ;;
+        *)  eecho $error "$BASENAME: unknown error or user interrupt" ;;
+        $SCRIPT_OR_PACKAGE_NOT_FOUND)
+            eecho $error "$BASENAME: SlackBuild or package not found" ;;
+    esac
+
+    exit $1
+
+}
+
+function build_repo {
+
+    # Checkout a new slackbuild working copy
+    BASEDIR="`dirname $SLACKBUILDS_DIR`"
+    mkdir -p $BASEDIR || handle_error 4 $BASEDIR
+    cd $BASEDIR
+    svn checkout $SVN
+    cd $SLACKBUILDS_DIR
+
+}
+
+function usage {
+
+    # Help mensage
+    eecho $commun "Createpkg version $CREATEPKG_VERSION\n"
+    eecho $commun "Usage: createpkg [--install/-i] package-name"
+    eecho $commun "       createpkg --no-deps/-np package-name"
+    eecho $commun "       createpkg --search/-s package-name"
+    eecho $commun "       createpkg --info/-f package-name"
+    eecho $commun "       createpkg --list/-l"
+    eecho $commun "       createpkg --sync"
+    eecho $commun "       createpkg --help/-h"
+}
+
+function check_config {
+
+    # check the configuration
+    TMP=${TMP:=/tmp};
+    REPOS=${REPOS:=$TMP};
+    # Create $TMP and $REPOS if need
+    [ ! -e $TPM ] && mkdir $TMP
+    [ ! -e $REPOS ] && mkdir $REPOS
+    #
+    SLACKBUILDS_DIR=${SLACKBUILDS_DIR:=/var/slackbuilds}
+    SVN=${SVN:=svn://slack.sarava.org/slackbuilds}
+    SYNC=${SYNC:=no}
+    BASEDIR="`dirname $SLACKBUILDS_DIR`"
+
+}
+
+function solve_dep {
+
+    # Solve dependency
+    local PACK="$1"
+    local COND="$2"
+    local VER="$3"
+
+    # Check package in local system
+    PACK="`echo $PACK | sed -e 's/\+/\\\+/'`"
+    INSTALLED=`eval "ls /var/log/packages/ | egrep -E '^$PACK-[^-]+-[^-]+-[^-]+$'"`
+    CHECK=$?
+
+    # TODO: Make check version procedures
+    if [ -z "$INSTALLED" ]; then
+        if [ $CHECK -ne 0 ]; then
+            # Check package in SlackBuilds tree
+            eecho $messag "$BASENAME: processing $PACKAGE dependency $PACK"
+            SYNC=no CREATEPKG_CHILD=$CREATEPKG_CHILD createpkg --install $PACK
+
+            # check if the package was built and installed
+            EXIT_CODE="$?"
+
+            if [ "$EXIT_CODE" == "5" ]; then
+
+                # exit code 5 == slackbuild not found
+                # try to use simplaret
+                ARCH=$DEFAULT_ARCH simplaret --update
+                ARCH=$DEFAULT_ARCH simplaret --install $PACK
+                EXIT_CODE="$?"
+                if [ "$EXIT_CODE" != "0" ]; then
+                    handle_error $SCRIPT_OR_PACKAGE_NOT_FOUND $PACK
+                fi
+
+            elif [ "$EXIT_CODE" != "0" ]; then
+                handle_error $EXIT_CODE $PACK
+            fi
+
+        fi
+    fi
+
+}
+
+function check_repo {
+
+    # Verify if repository exist
+    [ ! -d "$SLACKBUILDS_DIR" ] && build_repo
+
+}
+
+function sync_repo {
+
+    # Synchronize repository
+    cd $SLACKBUILDS_DIR
+    svn update || build_repo
+    #simplaret --update
+
+}
+
+function find_slackbuild {
+
+    # Find SlackBuild script in the repository
+    find $SLACKBUILDS_DIR -iname $1.SlackBuild
+
+}
+
+function info_builds {
+
+    # Show packages info
+    if [ "$PKG_PATH" != "" ]; then
+        for i in $PKG_PATH; do
+            PACKAGE=`basename $i .SlackBuild`
+            NAME_UP=`echo $PACKAGE | tr [a-z] [A-Z]`
+            eecho $commun "$NAME_UP: "
+
+            PKG_DIR=`dirname $i`
+            if [ -e $PKG_DIR/slack-desc ]; then
+                eval "cat $PKG_DIR/slack-desc | grep '^$PACKAGE:' | cut -f2- -d:"
+                eecho $normal
+            else
+                eval "cat $i | grep '^$PACKAGE:' | cut -f2- -d:"
+                eecho $normal
+            fi
+
+            if [ -e $PKG_DIR/slack-required ]; then
+                eecho $commun "slack-required"
+                cat $PKG_DIR/slack-required | sed 's/^/ /'
+            fi
+        done
+    fi
+
+}
+
+function list_builds {
+
+    # List all available SlackBuilds
+    cd $SLACKBUILDS_DIR
+    echo "Sarava SlackBuilds list"
+    # level 1
+    for i in *; do
+        if [ -d $i ]; then
+            echo -e "  $i: "
+            (
+            cd $i
+            # level 2
+            for j in *; do
+                if [ -d $j ]; then
+                    eecho $commun "    $j"
+                    (
+                    cd $j
+                    BUILD="`ls *.SlackBuild 2>/dev/null`"
+                    if [ "$BUILD" != "" ]; then
+                        # level 3
+                        for k in $BUILD; do
+                            eecho $messag "      $k"
+                        done
+                    else
+                        BUILD=""
+                    fi
+                    for k in *; do
+                        if [ -d $k ]; then
+                            eecho $messag "      $k.SlackBuild"
+                        fi
+                    done
+                    )
+                fi
+            done
+            )
+        fi
+    done
+
+}
+
+function color_select {
+
+    # Select color mode: gray, color or none (*)
+    # commun - Communication
+    # messag - Commum messages
+    # error - Error messages
+    # normal   - turn off color
+    case "$1" in
+    'gray')
+        commun="\033[37;1m"
+        messag="\033[37;1m"
+        error="\033[30;1m"
+        alert="\033[37m"
+        normal="\033[m"
+        ;;
+    'color')
+        commun="\033[34;1m" # green
+        messag="\033[32;1m" # blue
+        error="\033[31;1m" # red
+        alert="\033[33;1m" # yellow
+        normal="\033[m"       # normal
+        ;;
+    *)
+        commun=""
+        messag=""
+        error=""
+        alert=""
+        normal=""
+        ;;
+    esac
+
+}
+
+#---------------------------------------------------
+#                 Starting createpkg
+#---------------------------------------------------
+# Common functions
+COMMON="/usr/libexec/simplepkg/common.sh"
+SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
+
+# Loading error codes
+error_codes
+
+# First load simplepkg helper functions
+source $COMMON && source $SIMPLEPKG_CONF
+if [ $? -ne 0 ]; then
+    eecho $error "error: file $COMMON not found, check your $BASENAME installation"
+    exit 1
+fi
+
+# Load slackbuildrc definitions
+if [ -f ~/.slackbuildrc ]; then
+    source ~/.slackbuildrc
+else
+    source /etc/slackbuildrc 2>/dev/null
+fi
+
+# Select color mode: gray, color or none (*)
+color_select $COLOR
+
+# This is used to show how many children process we have
+if [ -z "$CREATEPKG_CHILD" ]; then
+    CREATEPKG_CHILD="1"
+else
+    let CREATEPKG_CHILD++
+fi
+
+BASENAME="`basename $0`[$CREATEPKG_CHILD]"
+
+check_config
+check_repo
+
+case $1 in
+    '--search'|'-s')
+        [ $# -ne 2 ] && handle_error 2   # two parameters is required
+        find_slackbuild $2
+        exit
+    ;;
+    '--info'|'-f')
+        [ $# -ne 2 ] && handle_error 2   # two parameters is required
+        PKG_PATH=`find_slackbuild $2`
+        info_builds
+        exit
+    ;;
+    '--install'|'-i')
+        [ $# -ne 2 ] && handle_error 2   # two parameters is required
+        PACKAGE="$2"
+        INSTALL="1"
+    ;;
+    '--no-deps'|'-nd')
+        [ $# -ne 2 ] && handle_error 2   # two parameters is required
+        NO_DEPS="1"
+        PACKAGE="$2"
+    ;;
+    '--sync')
+        sync_repo
+        exit 0
+    ;;
+    '--help'|'-h'|'')
+        usage
+        exit 0
+    ;;
+    '--list'|'-l')
+        list_builds
+        exit 0
+    ;;
+    *)
+        if [ "${1:0:1}" != "-" ]; then
+            PACKAGE="$1"
+        else
+            handle_error 2
+        fi
+    ;;
+esac
+
+# Synchronize repository
+[ "$SYNC" == "yes" ] && sync_repo
+
+# Get SlackBuild script
+BUILD_SCRIPT="`find_slackbuild $PACKAGE`"
+
+# Check SlackBuild script found
+if [ -z "$BUILD_SCRIPT" ]; then
+    handle_error 5 $PACKAGE
+fi
+
+# Select one SlackBuild
+if [ "`echo $BUILD_SCRIPT | wc -w`" -gt 1 ]; then
+    AUX="$PS3"
+    PS3="Choice: "
+    LIST=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`" EXIT"
+
+    select PACKAGE in `echo $LIST`; do
+        break
+    done
+
+    if [ "$PACKAGE" = "EXIT" ]; then
+        eecho $error "error: None package select"
+        exit 1
+    fi
+
+    # Select only one SlackBuild in BUILD_SCRIPT
+    BUILD_SCRIPT=`echo $BUILD_SCRIPT | sed 's/ /\n/g' | grep "/$PACKAGE.SlackBuild"`
+    PS3="$AUX"
+else
+    #PACKAGE=`echo $BUILD_SCRIPT | sed -r 's/.*\/(.*)\.SlackBuild$/\1/'`
+    PACKAGE=`basename $BUILD_SCRIPT .SlackBuild`
+fi
+
+# Get dirname and script name from slackbuild
+SCRIPT_BASE="`dirname $BUILD_SCRIPT`"
+SCRIPT_NAME="`basename $BUILD_SCRIPT`"
+eecho $messag "$BASENAME: found script $PACKAGE.SlackBuild, now checking for dependencies"
+
+# Sets the package's slack-required
+if [ -f "$SCRIPT_BASE/$PACKAGE.slack-required" ]; then
+    SLACK_REQUIRED="$SCRIPT_BASE/$PACKAGE.slack-required"
+elif [ -f "$SCRIPT_BASE/slack-required" ]; then
+    SLACK_REQUIRED="$SCRIPT_BASE/slack-required"
+fi
+
+if [ ! -z "$SLACK_REQUIRED" -a "$NO_DEPS" != "1" ]; then
+    # this routine checks for dependencies in package's slack-required
+    ( grep '^[^#]' $SLACK_REQUIRED | while read dep; do
+        if [ ! -z "$dep" ]; then
+            PROGRAM="`echo $dep | awk '{ print $1 }'`"
+            CONDITION="`echo $dep | awk '{ print $2 }' | tr [=\>\<] [egl]`"
+            VERSION="`echo $dep | awk '{ print $3 }' | tr -dc '[:digit:]'`"
+            solve_dep $PROGRAM $CONDITION $VERSION
+        fi
+        true
+    done )
+    if [ $? -ne 0 ]; then
+        eecho $messag "$BASENAME: dependency solve error"
+        exit 1
+    fi
+    eecho $messag "$BASENAME: done checking for $PACKAGE dependencies"
+else
+    eecho $messag "$BASENAME: no unmet dependencies for $PACKAGE"
+fi
+
+eecho $messag "$BASENAME: processing $SCRIPT_NAME"
+
+# Change to script base directory
+cd $SCRIPT_BASE
+
+# Execute SlackBuild script with variables protection
+( INTERACT=no sh ./$SCRIPT_NAME )
+
+# Check if package was built
+handle_error $? $PACKAGE
+
+PKG_TGZ="`ls -1 -c $REPOS/$PACKAGE-*-*-*.tgz | head -n 1`"
+
+if [ "$INSTALL" == "1" ]; then
+    # as we dont have the full package file name, we'll
+    # use the newer file name that matches our wildcard:
+
+    upgradepkg --install-new $PKG_TGZ
+fi
diff --git a/tags/0.5/src/jail-commit b/tags/0.5/src/jail-commit
new file mode 100755 (executable)
index 0000000..f40e5cd
--- /dev/null
@@ -0,0 +1,175 @@
+#!/bin/bash
+#
+# jail-commit: update config files from a jail to a template
+# feedback: rhatto@riseup.net | gpl
+#
+#  Jail-commit is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Jail-commit is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+  eval_config $BASENAME
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function usage {
+
+  echo $BASENAME: commit a jail configuration into a template
+  echo "usage: \"$BASENAME [<jail-path> [template]]\""
+  echo "       \"$BASENAME --all\" to commit all templates"
+  echo "       \"$BASENAME --help\" for help"
+
+}
+
+function template_merge {
+
+  # copy differences between the jail
+  # and the template in the template folder
+
+  # usage: template_merge <jail-path>
+
+  if [ -z "$1" ] || [ ! -d "$TEMPLATE_BASE.d" ]; then
+    return 1
+  fi
+
+  echo "" > $TEMPLATE_BASE.perms.tmp
+  cd $TEMPLATE_BASE.d
+
+  for file in `find | grep -v -e "/.svn$" | grep -v -e "/.svn/" | grep -v -e  "^\.$"`; do
+
+    if [[ -e "$file" && -e "$1/$file" ]]; then
+
+      if [ ! -d "$file" ] && [ ! -h "$file" ]; then
+        if ! diff $file $1/$file; then
+          echo Updating $file
+          cp -af $1/$file $file
+        fi
+      elif [ -h "$file" ]; then
+        if [ "`readlink $file`" != "`readlink $1/$file`" ]; then
+          rm -f $file
+          ln -s `readlink $1/$file` $file
+        fi
+      fi
+
+      perms="`numeric_perm $1/$file`"
+      owner="`get_owner $1/$file`"
+      group="`get_group $1/$file`"
+
+      # secure the file
+      chown root.root $TEMPLATE_BASE.d/$file
+      chmod $perms $TEMPLATE_BASE.d/$file
+      
+      echo "$file;$owner;$group;$perms" >> $TEMPLATE_BASE.perms.tmp
+
+    else
+      if [ ! -e "$1/$file" ]; then
+        echo $BASENAME: warning: missing file `slash $1/$file`
+      fi
+    fi
+
+  done
+
+  cat $TEMPLATE_BASE.perms.tmp | sed '/^$/d' > $TEMPLATE_BASE.perms
+  rm -f $TEMPLATE_BASE.perms.tmp
+
+  if ! svn_check $TEMPLATE_BASE,perms; then
+    svn add $TEMPLATE_BASE,perms
+  fi
+
+}
+
+function template_svn_commit {
+
+  # issue a svn_commit from a template folder
+  # usage: template_svn_commit <template-folder>
+
+  if use_svn && [ -d "$1/.svn" ]; then
+    cd $1
+    echo First checking out from the repository...
+    svn update
+    echo Commiting changes to the repository...
+    svn commit -m "changes for `date`"
+    if [ "$?" != "0" ]; then
+      echo $BASENAME: commit error
+    fi
+  fi
+
+}
+
+function do_commit {
+
+  # commit jail changes to a repository
+  # usage: do_commit <jailpath> [template]
+
+  local jailpath template
+
+  jailpath="$1"
+  jail="`basename $jailpath`"
+
+  if [ ! -z "$2" ]; then
+    template="$2"
+  else
+    template="$jail"
+  fi
+
+  search_template $template --update
+  if [ "$?" == "0" ] && ! echo "$TEMPLATE_UPDATE_LIST" | grep -q " `basename $TEMPLATE_BASE` "; then
+    TEMPLATE_UPDATE_LIST=" $TEMPLATE_UPDATE_LIST `basename $TEMPLATE_BASE` " # the spaces are important
+    if [ "$jailpath" == "/" ]; then
+      echo Updating main installation...
+    else
+      echo Updating $jailpath...
+    fi
+    if [ -d "$TEMPLATE_BASE.d" ] || [ -a "$TEMPLATE_BASE.template" ]; then
+      SILENT=yes templatepkg -u $template $jailpath
+      template_merge $jailpath
+    fi
+  else
+    if [ -z "$SILENT" ]; then
+      echo $BASENAME: template $template not found
+    fi
+    return 1
+  fi
+
+}
+
+TEMPLATE_UPDATE_LIST=""
+
+if [ "$1" == "--help" ]; then
+  usage
+elif [ "$1" == "--all" ]; then
+  template_svn_commit $BASE_CONF/templates
+elif echo $1 | grep -q -e "^--"; then
+  usage
+elif [ ! -z "$1" ]; then
+  do_commit $1 $2
+  if [ "$?" == "0" ]; then
+    template_svn_commit `dirname $TEMPLATE_BASE`
+  fi
+else
+  SILENT="yes"
+  if [ -e $JAIL_LIST ]; then
+    for jailpath in `cat $JAIL_LIST`; do
+      do_commit $jailpath
+    done
+  fi
+  # main jail
+  do_commit / main
+  template_svn_commit $BASE_CONF/templates
+fi
+
diff --git a/tags/0.5/src/jail-update b/tags/0.5/src/jail-update
new file mode 100755 (executable)
index 0000000..c5a008f
--- /dev/null
@@ -0,0 +1,61 @@
+#!/bin/bash
+#
+# jail-update: update config files from a jail to a template
+# feedback: rhatto@riseup.net | gpl
+#
+#  Jail-update is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Jail-update is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+  eval_config $BASENAME
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function usage {
+
+  echo "$BASENAME: update a jail configuration from a template"
+  echo "usage: $BASENAME <jail-path> [template]"
+
+}
+
+if [ -z "$1" ] || [ "$1" == "--help" ] || echo $1 | grep -q -e "^--"; then
+  usage
+  exit 1
+fi
+
+if [ -z "$2" ]; then
+  template_name="`basename $1`"
+else
+  template_name="$2"
+fi
+
+search_template $template_name --update
+
+if [ "$?" != "0" ]; then
+  echo $BASENAME: template $template_name not found
+  exit 1
+elif [ ! -d "$1" ]; then
+  echo $BASENAME: jail $1 not found
+  exit 1
+fi
+
+update_template_files
+copy_template_files $1
+set_jail_perms $1
+
diff --git a/tags/0.5/src/lspkg b/tags/0.5/src/lspkg
new file mode 100755 (executable)
index 0000000..01900f2
--- /dev/null
@@ -0,0 +1,132 @@
+#!/bin/bash
+#
+# lspkg v0.3: view installed and contents of slackware packages
+#
+# feedback: rhatto at riseup.net | gpl
+#
+#  Lspkg is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Lspkg is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+    source $COMMON
+else
+    echo "error: file $COMMON not found, check your `basename $0` installation"
+    exit 1
+fi
+
+function head_line {
+    echo "usage: [ROOT=/otherroot] `basename $0` [option expression]"
+}
+
+function usage {
+    head_line
+    echo "
+options are:
+
+   -v, --view: view installed package contents
+   -p, --print: print the contents of a package file
+   -r, --remove: remove matching packages
+   -s, --search: search a file under installed packages
+   -d, --description: show matching packages' descriptions
+"
+}
+
+# -----------------------------------------------------
+#                       lspkg
+# -----------------------------------------------------
+
+if [ $# -eq 2 ]; then
+    LIST_PKGS="`ls /$ROOT/var/log/packages/$2-[0-9]* 2> /dev/null`"
+    if [ -z "$LIST_PKGS" ]; then
+        LIST_PKGS="`ls /$ROOT/var/log/packages/$2* 2> /dev/null`"
+    fi
+elif [ $# -eq 1 ]; then
+    LIST_PKGS="`ls /$ROOT/var/log/packages/$1-[0-9]* 2> /dev/null`"
+    if [ -z "$LIST_PKGS" ]; then
+        LIST_PKGS="`ls /$ROOT/var/log/packages/$1* 2> /dev/null`"
+    fi
+else
+    LIST_PKGS="`ls /$ROOT/var/log/packages/ 2> /dev/null`"
+fi
+
+LIST_PKGS="`slash $LIST_PKGS`"
+
+case $1 in
+    "-h"|"--help")
+        usage
+    ;;
+    "-v"|"--view")
+        if [ ! -z "$2" ]; then
+            if [ ! -z "$LIST_PKGS" ]; then
+                for file in $LIST_PKGS; do
+                    less $file
+                done
+            else
+                if [ ! -z "$ROOT" ]; then
+                    echo "$2: package not found on /$ROOT/var/log/packages"
+                else
+                    echo "$2: package not found on /var/log/packages"
+                fi
+            fi
+        else
+            head_line
+            exit 1
+        fi
+    ;;
+    "-p"|"--print")
+        if [ -f "$2" ]; then
+            tar ztvf $2
+        else
+            echo $2: file not found
+        fi
+    ;;
+    "-r"|"--remove")
+        if [ ! -z "$2" ]; then
+            if [ ! -z "$LIST_PKGS" ]; then
+                removepkg /$ROOT/var/log/packages/$1-[0-9]*
+            fi
+        fi
+    ;;
+    "-s"|"--search")
+        if [ ! -z "$2" ]; then
+            eval "grep -l '\/$2$' /$ROOT/var/log/packages/*"
+        fi
+    ;;
+    "-d"|"--description")
+        if [ ! -z "$2" ]; then
+            for file in $LIST_PKGS; do
+                pack="`package_name $file`"
+                echo -e " Package description for $file:\n"
+                sed -n "/^$pack:/ { s/$pack://; p; }" $file
+            done
+        else
+            head_line
+            exit 1
+        fi
+    ;;
+    *)
+        if [ ! -z "$LIST_PKGS" ]; then
+            for pack in $LIST_PKGS; do
+              echo $pack
+            done
+        else
+            if [ ! -z "$ROOT" ]; then
+                echo "$1: package not found on /$ROOT/var/log/packages"
+            else
+                echo "$1: package not found on /var/log/packages"
+            fi
+        fi
+    ;;
+esac
diff --git a/tags/0.5/src/mkbuild b/tags/0.5/src/mkbuild
new file mode 100755 (executable)
index 0000000..fce2533
--- /dev/null
@@ -0,0 +1,680 @@
+#!/bin/bash
+#
+# Script para gerar SlackBuild
+# Por Rudson R. Alves
+#
+# Este script auxilia a criação de SlackBuilds, com o modelo
+# do Luiz do Sarava Linux
+#
+# SlackBuilds são scripts utilizados no Slackware para gerar
+# pacotes tgz.
+#
+# Version 0.9.8
+PROG_VERSION=0.9.8
+
+#--------------------------------------------------------------------
+# Functions
+#--------------------------------------------------------------------
+function mkbuild_use()
+
+{
+    # mkbuild help function
+    echo "
+NAME
+        mkbuild - create SlackBuild script from .mkbuild input file
+
+SYNOPSIS
+        mkbuild [OPIONS] [mkbuild_file]
+
+DESCRIPTION
+        <mkbuild_file> input file with build rules and variables
+
+        Input options:
+            -a, --author <author_name>
+                author name
+            -ai, --author_initials <initials>
+                author signature
+            -cs, --const_string <string>
+                construction string to source name
+            -u, --url <url_address>
+                url address to source
+            -pn, --pkg_name <package_name>
+                package name
+            -sn, --src_name <source_name>
+                source name
+            -pv, --pkg_version <version>
+                package version
+            -md, --model <SlackBuild_model>
+                SlackBuild model file
+            -j, --jobs <jobs_number>
+                Number of jobs to run simultaneously
+            --prefix <install_dir>
+                Prefix install directory
+
+        Program options:
+        -h, --help
+            this help mesage
+        -c, --commit
+            commit SlackBuilds in local svn tree
+        -v, --version
+            program version
+
+EXAMPLES
+        mkbuild --prefix /usr/local pyrex.mkbuild
+            build pyrex.SlackBuild with prefix /usr/local and pyrex.mkbuild
+            variables and options definitions.
+
+AUTHOR
+        Written by Rduson R. Alves
+
+AVAILABILITY
+        by svn: svn checkout svn://slack.sarava.org/simplepkg
+        this mkbuild is found in branches/0.6/
+
+REPORTING BUGS
+        Report bugs to <alves_list@yahoo.com.br>
+
+COPYRIGHT
+        Copyright Â© 2006 Free Software Foundation, Inc.
+        This is free software. You may redistribute copies of it under the
+        terms of the GNU General Public License
+        <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the
+        extent permitted by law.
+" | less
+}
+
+function error_codes {
+
+    # Start error codes function
+    NULL_STRING=499
+    ERROR_FILE_NOT_FOUND=500
+    ERROR_CONSTRUCTION=501
+    ERROR_PROGRAM=502
+    ERROR_INPUT_PAR=503
+}
+
+function mkbuild_error {
+
+    # Error function
+    case $1 in
+        "$ERROR_FILE_NOT_FOUND")
+            echo "File $2 not found!"
+        ;;
+        "$ERROR_CONSTRUCTION")
+            echo "Construction error in $2 variable."
+        ;;
+        "$ERROR_PROGRAM")
+            echo "Program logical error."
+        ;;
+        "$ERROR_INPUT_PAR")
+            echo "Input parameter $2 error. See \"mkbuild --help\"."
+        ;;
+        *)
+            echo "Unknow error!"
+        ;;
+    esac
+    exit $1
+}
+
+function is_number {
+
+    # Check if argument is a number
+    local -i int
+    if [ $# -eq 0 ]; then
+            return 1
+    else
+            (let int=$1)  2>/dev/null
+            return $?       # Exit status of the let thread
+    fi
+}
+
+function set_parameters {
+
+    # Get and set mkbuild variables with parameters input
+    # Use: set_parameters $@
+    #           where $@ are the parameters input
+    #
+    ALL_PAR=( $@ )      # carrega todos os parâmetros
+    N_PAR=$#            # carrega o número de parâmetros
+
+    i=0                 # inicia o contador
+    # Checa todos os parâmetros passados
+    while [ $i -lt $N_PAR ]; do
+        # get parameter[i]
+        PAR=${ALL_PAR[$i]}
+        case $PAR in
+            '-c'|'--commit')
+                # Commit directory
+                COMMIT=1
+            ;;
+            '-d'|'--debug')
+                # Debug mode
+                set -x
+            ;;
+            '-h'|'--help' )
+                # Show help mesage
+                mkbuild_use && exit 0
+            ;;
+            '-v'|'--version')
+                # Show program version
+                echo -e "\nmkbuild version $PROG_VERSION\n" && exit 0
+            ;;
+            '-a'|'--author')
+                # Enter with author name
+                let i++
+                AUTHOR=${ALL_PAR[$i]}
+                [ ${AUTHOR:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR AUTHOR
+            ;;
+            '-ai'|'--author_initials')
+                # Enter with author name
+                let i++
+                AUTHOR_INITIALS=${ALL_PAR[$i]}
+                [ ${AUTHOR_INITIALS:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR AUTHOR_INITIALS
+            ;;
+            '-cs'|'--const_string')
+                # Enter with construction source name string
+                let i++
+                CONST_STRING=${ALL_PAR[$i]}
+                [ ${CONST_STRING:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR CONST_STRING
+            ;;
+            '-md'|'--model')
+                # Enter with SlackBuild model
+                let i++
+                MODEL=${ALL_PAR[$i]}
+                [ ${MODEL:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR MODEL
+            ;;
+            '-j'|'--jobs')
+                # Enter with SlackBuild model
+                let i++
+                NUMJOBS=${ALL_PAR[$i]}
+                [ ${NUMJOBS:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR NUMJOBS
+                [ ! is_number $NUMJOBS ] &&  mkbuild_error $ERROR_INPUT_PAR NUMJOBS
+                NUMJOBS="-j$NUMJOBS"
+            ;;
+            '--prefix')
+                # Enter with SlackBuild model
+                let i++
+                PREFIX=${ALL_PAR[$i]}
+                [ ${PREFIX:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR PREFIX
+            ;;
+            '-pn'|'--pkg_name')
+                # Enter with package name
+                let i++
+                PKG_NAME=${ALL_PAR[$i]}
+                [ ${PKG_NAME:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR PKG_NAME
+            ;;
+            '-pv'|'pkg_version')
+                # Enter with package version
+                let i++
+                VERSION=${ALL_PAR[$i]}
+                [ ${VERSION:0:1} = "-" ] && mkbuild_error $ERROR_INPUT_PAR VERSION
+            ;;
+            '-sn'|'--src_name')
+                # Enter with source name
+                let i++
+                SRC_NAME=${ALL_PAR[$i]}
+                [ ${SRC_NAME:0:1} = '-' ] && mkbuild_error $ERROR_INPUT_PAR SRC_NAME
+            ;;
+            '-u'|'--url')
+                # Enter with url address
+                let i++
+                URL=${ALL_PAR[$i]}
+                [ ${URL:0:1} = '-' ] && mkbuild_error $ERROR_INPUT_PAR URL
+            ;;
+            *)
+                # mkbuild input file
+                MK_INPUT_FILE="${PAR//.mkbuild}.mkbuild"
+                [ ! -e $MK_INPUT_FILE ] && mkbuild_error $ERROR_FILE_NOT_FOUND $MK_INPUT_FILE
+            ;;
+        esac
+        let i++
+    done
+}
+
+function get_variable {
+
+    # Get variable value from mkbuild file (MK_INPUT_FILE)
+    [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
+    [ -z $MK_INPUT_FILE ] && echo "Warning: no [mkbuild_file]." && return 0
+
+    grep "^\[\[${1}\]\]" $MK_INPUT_FILE | cut -f2 -d\"
+}
+
+function edit_file {
+
+    # Edit file  $3, by change string [[$1]] to $2
+    local STR_OLD
+    local STR_NEW
+
+    [ $# -ne 3 ] && mkbuild_error $ERROR_PROGRAM
+    STR_OLD=$( echo $1 | sed 's/\//\\\//g' )
+    STR_NEW=$( echo $2 | sed 's/\//\\\//g' )
+    eval "sed 's/\[\[$STR_OLD\]\]/$STR_NEW/' $3 > $AUX_TMP"
+    mv $AUX_TMP $3
+}
+
+function edit_file_full {
+
+    # Edit file  $3, by change string $1 to $2
+    local STR_OLD
+    local STR_NEW
+
+    [ $# -ne 3 ] && mkbuild_error $ERROR_PROGRAM
+    STR_OLD=$( echo $1 | sed 's/\//\\\//g' )
+    STR_NEW=$( echo $2 | sed 's/\//\\\//g' )
+    eval "sed 's/$STR_OLD/$STR_NEW/' $3 > $AUX_TMP"
+    mv $AUX_TMP $3
+}
+
+function start_build  {
+
+    # Build initial sections
+    [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
+
+    edit_file "SLACKBUILD AUTHOR" "$AUTHOR" $1
+    edit_file "SLACKBUILD AUTHOR INITIALS" $AUTHOR_INITIALS $1
+    edit_file "SOURCE NAME" "$SRC_NAME" $1
+    edit_file "PROGRAM NAME" "$PKG_NAME" $1
+    edit_file "PACKAGE NAME" "$PKG_NAME" $1
+    edit_file "DECOMPRESSOR" "$DECOMPRESSOR" $1
+    edit_file "DECOMPRESSOR TEST FLAG" "$DECOMPRESSOR_TEST_FLAG" $1
+    edit_file "PROGRAM URL" "$URL" $1
+    edit_file "ARCH" "$ARCH" $1
+    [ `is_number $NUMJOBS` ] && NUMJOBS="-j${NUMJOBS}"
+    edit_file "NUMBER OF JOBS" "$NUMJOBS" $1
+    edit_file "VERSION" $VERSION $1
+    edit_file "SOURCE NAME CONSTRUCTION STRING" "$CONST_STRING" $1
+    edit_file "EXTENSION" "$EXTENSION" $1
+    edit_file "DOWNLOAD FOLDER URL" "$URL_BASE" $1
+    edit_file "OTHER CONFIGURE ARGS" "$OPTIONS" $1
+    edit_file "DOCUMENTATION FILES" "$DOCFILES" $1
+    edit_file "PREFIX" "$PREFIX" $1
+
+    edit_file_full "\$EXTENSION" "$EXTENSION" $1
+}
+
+function clear_files {
+
+    # Remove temporary files
+    rm $AUX_TMP 2>/dev/null
+    rm $SLACKBUILD_TEMP 2>/dev/null
+}
+
+function set_status {
+
+    # Set status section
+    # $1 - Section
+    # $2 - Status
+    # $3 - file
+    [ $# -ne 3 ] && mkbuild_error $ERROR_PROGRAM
+    if [ "`get_status $1 $3`" != "all" ]; then
+        eval "sed 's/^<$1>.*$/<$1> $2/' $3" > $AUX_TMP
+        mv $AUX_TMP $3
+    else
+        echo "Warning: Section $1 have status all. Can't change!"
+    fi
+}
+
+function get_status {
+
+    # Get status from section
+    # $1 - Section
+    # $2 - file
+    [ $# -ne 2 ] && mkbuild_error $ERROR_PROGRAM
+    eval "sed '/^<$1>.*$/! d' $2"
+}
+
+function activate_sections {
+
+    # Enable and desable sections
+    ACTIONS_LIST=`sed '/^#>>/,/<</ ! d; /^#/ d ' $MK_INPUT_FILE | tr -d ' '`
+    for i in $ACTIONS_LIST; do
+        STATUS=`echo $i | cut -f1 -d:`
+        SECTION=`echo $i | cut -f2 -d:`
+        set_status $SECTION $STATUS $SLACKBUILD_TEMP
+    done
+}
+
+function build_slackbuild {
+
+    # Remove off sections
+    [ -e $SLACKBUILD ] && mv $SLACKBUILD $SLACKBUILD.old
+    sed '/^<[a-z].*> off/, /^<\/[a-z].*>$/ d' $SLACKBUILD_TEMP > $AUX_TMP
+    # Remove sections names
+    sed '/^<.*$/ d' $AUX_TMP > $SLACKBUILD_TEMP
+    # Remove clear lines
+    sed ':i ; $! N; s/\n/<NL>/ ; t i' $SLACKBUILD_TEMP | sed 's/<NL><NL><NL>/<NL><NL>/g' | sed 's/<NL><NL><NL>/<NL><NL>/g' | sed 's/<NL>/\n/g' > $AUX_TMP
+    sed '1,/^#\!/ {/^#\!/ b; d }' $AUX_TMP > $SLACKBUILD
+}
+
+function section_edit {
+
+    # Edit sections by change you values
+    [ -z $MK_INPUT_FILE ] && return 0
+
+    SECTION_LIST=`grep '^#>[a-z]' $MK_INPUT_FILE | cut -c3-`
+
+    # Check for sections change
+    [ -z "$SECTION_LIST" ] && return 0
+
+    # Change sections
+    for i in $SECTION_LIST; do
+        if [ "$i" = "slackdesc" ]; then
+            # Special slackdesc section
+            slackdesc_edit > $AUX_TMP
+            mv $AUX_TMP $SLACKBUILD_TEMP
+        else
+            # Others sections
+            section_change $i
+        fi
+    done
+}
+
+function slackdesc_edit {
+
+    # Edit slackdesc section
+    sed -n '1,/|-----/ { /<slackdesc>/ b; /|-----/ b; p; }' $SLACKBUILD_TEMP
+    echo -n $PKG_NAME | tr [a-z+\-] " "
+    echo -n "|-----handy-ruler"
+    let N=18+${#PKG_NAME}
+    for i in `seq $N $SLACKDESC_LEN`; do
+        echo -n "-"
+    done
+    echo -en "|\n"
+
+    sed -n '/#>slackdesc/,/#<slackdesc/ { /^#/ b; p }' $MK_INPUT_FILE
+    sed '1, /\[\[SLACK-DESC\]\]/ d' $SLACKBUILD_TEMP
+}
+
+function section_change {
+
+    # Change section lines
+    [ $# -ne 1 ] && mkbuild_error $ERROR_PROGRAM
+
+    # Copy first half
+    eval "sed '1,/^<$1>/! d' $SLACKBUILD_TEMP > $AUX_TMP"
+    # Paste new section
+    eval "sed -n '/#>$1/,/#<$1/ { /^#>/ b; /^#</ b; p }' $MK_INPUT_FILE >> $AUX_TMP"
+    # Copy second halt
+    eval "sed '/^<\/$1>/,$ ! d' $SLACKBUILD_TEMP >> $AUX_TMP"
+
+    mv $AUX_TMP $SLACKBUILD_TEMP
+}
+
+function make_slack_required {
+
+    # Build slack-required file
+    [ -e slack-required ] && mv slack-required slack-required.old
+    [ -z "$SLACK_REQUIRED" ] && return 0
+
+    echo -e "# Dependency list to $SRC_NAME\n#\n# dependency [condition] [version]]" > slack-required
+
+    echo $SLACK_REQUIRED | sed 's/:/\n/g' | while read i; do
+        REQ=`echo $i | awk '{ print $1 }'`
+        CON=`echo $i | awk '{ print $2 }'`
+        VER=`echo $i | awk '{ print $3 }'`
+        echo -e "$REQ\t\t$CON\t\t$VER" >> slack-required
+    done
+}
+
+function change_others_fields {
+
+    # Change others fields started by '[[' in .mkbuild file
+    grep '\[\[[A-Za-z]' $MK_INPUT_FILE | while read i; do
+        CHANGE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\1/'`"
+        VALUE="`echo $i | sed 's/\[\[\(.*\)\]\]=\"\(.*\)\"/\2/'`"
+        edit_file "$CHANGE" "$VALUE" $SLACKBUILD
+    done
+}
+
+function commit_slackbuild {
+
+    # Commit SlackBuild in local Slack.Sarava tree
+    # Get SlackBuild path
+    SLACKBUILD_PATH=`validate_parameter "$SLACKBUILD_PATH" "SLACKBUILD PATH" ""`
+    if [ $? != 0 ]; then
+        # Mount SlackBuild path
+        AUX=`lynx -dump http://gentoo-portage.com/Search?search=$PKG_NAME | sed -n '/Results:/,+1 { /Results:/ b ; p }' | head --lines=1 | tr -d " "`
+        [ ! -z $AUX ] && SLACKBUILD_PATH="`dirname $AUX | tr - /`/`basename $AUX`" || SLACKBUILD_PATH="others/unclassified/$PKG_NAME"
+    fi
+
+    # check SlackBuilds directory
+    [ ! -e $SLACKBUILDS_DIR ] && createpkg --sync
+    # change to SlackBuilds directory
+    cd $SLACKBUILDS_DIR/
+
+    # Add SlackBuild scripts
+    # check path
+    [ ! -e $SLACKBUILD_PATH ] && svn_mkdir $SLACKBUILD_PATH
+    # add SlackBuild
+    svn_add $SLACKBUILD $SLACKBUILD_PATH
+
+    # check slack-required
+    # add slack-required
+    [ -e $WORK/slack-required ] && svn_add slack-required $SLACKBUILD_PATH
+
+    cd $WORK
+}
+
+function svn_mkdir {
+
+    # svn make directory
+    [ $# -ne 1 ] && mkbuild_error 0
+
+    echo "svn_mkdir $1  $2"
+    DIR_LIST=`echo $1 | tr '/' ' '`
+
+    DIR=""
+    for i in $DIR_LIST; do
+        DIR=$DIR/$i
+        [ ! -e ${DIR:1} ] && svn mkdir ${DIR:1}
+    done
+}
+
+function svn_add {
+
+    # svn add file
+    [ $# -ne 2 ] && mkbuild_error 0
+
+    # copy file
+    if [ -e $2/$1 ]; then
+        echo "$2/$1 exist. Overwriter it."
+        cp $WORK/$1 $2/
+    else
+        cp $WORK/$1 $2/
+        # add file to svn tree
+        svn add $2/$1
+    fi
+}
+
+function is_number {
+
+    # Check if $1 is a number
+    local -i int
+    if [ $# -eq 0 ]; then
+        return 1
+    else
+        (let int=$1)  2>/dev/null
+        return $?       # Exit status of the let thread
+    fi
+}
+
+function validate_parameter {
+
+    # Validate parameter in .mkbuild file
+    if [ ! -z "$1" ]; then
+        echo "$1"
+    else
+        local STRING="`get_variable "$2"`"
+        if [ -z "$STRING" ]; then
+            [ ! -z "$3" ] && echo "$3" || return 1
+        else
+            echo "$STRING"
+        fi
+    fi
+}
+
+function decompress_find {
+
+    # Find decompressor program and test flag
+    case $EXTENSION in
+        'gz'|'GZ')
+            DECOMPRESSOR="gunzip"
+            DECOMPRESSOR_TEST_FLAG="-t"
+        ;;
+        'bz2'|'BZ2')
+            DECOMPRESSOR="bunzip2"
+            DECOMPRESSOR_TEST_FLAG="-t"
+        ;;
+        'zip'|'ZIP')
+            DECOMPRESSOR="unzip"
+            DECOMPRESSOR_TEST_FLAG="-t"
+        ;;
+        *)
+            mkbuild_error $ERROR_CONSTRUCTION "DECOMPRESSOR"
+        ;;
+    esac
+}
+
+#=============================
+#        Main Program
+#=============================
+#-----------------------------
+# Common functions
+COMMON="/usr/libexec/simplepkg/common.sh"
+SIMPLEPKG_CONF="/etc/simplepkg/simplepkg.conf"
+WORK=`pwd`
+LANG=en_US
+COMMIT=0
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  mk_exit 0
+fi
+
+# createpkg and mkbuild section
+SLACKBUILDS_DIR="`eval_parameter SLACKBUILDS_DIR /var/slackbuilds`"
+#-----------------------------
+
+# Start variables
+DOWNLOAD_SOURCE=0       # desable download source
+# Auxiliar file
+AUX_TMP=/tmp/mkbuild_tmp.$RANDOM
+# Derectory to SlackBuild models
+MODEL_DIR=${MODEL_DIR:="/etc/simplepkg/defaults/mkbuild"}
+# SlackDesk line length
+SLACKDESC_LEN=78
+
+# Load error codes
+error_codes
+
+[ $# -eq 0 ] && mkbuild_use && exit 1
+
+# Configure input parameters
+set_parameters $@
+
+# Get values
+# Author name
+AUTHOR=${AUTHOR:="`get_variable "SLACKBUILD AUTHOR"`"}
+[ -z "$AUTHOR" ] && mkbuild_error $ERROR_CONSTRUCTION "SLACKBUILD AUTHOR"
+
+# Author initials
+STR_MOUNT=`echo $AUTHOR | sed 's/ /\n/g' | sed 's/^\([A-Z]\).*/\1/' | sed ':i; $!N;  s/\n//; ti' | tr [A-Z] [a-z]`
+AUTHOR_INITIALS="`validate_parameter "$AUTHOR_INITIALS" "SLACKBUILD AUTHOR INITIALS" "$STR_MOUNT"`" || mkbuild_error $ERROR_CONSTRUCTION "SLACKBUILD AUTHOR INITIALS"
+
+# URL program
+URL=`validate_parameter "$URL" "DOWNLOAD FOLDER URL" ""` || mkbuild_error $ERROR_CONSTRUCTION "URL"
+
+STR_MOUNT="`echo $URL | rev | cut -c1-3 | rev | tr -d '.'`"
+if [ $STR_MOUNT = "gz" -o $STR_MOUNT = "tgz" -o $STR_MOUNT = "bz2" -o $STR_MOUNT = "zip" ]; then
+    SOURCE_NAME=`basename $URL`
+    URL_BASE=`dirname $URL`
+else
+    URL_BASE=$URL
+fi
+
+# Extension
+EXTENSION=`validate_parameter "$EXTENSION" "EXTENSION" "$STR_MOUNT"` || mkbuild_error $ERROR_CONSTRUCTION "EXTENSION"
+
+# Build archteture
+ARCH=`validate_parameter "$ARCH" "ARCH" "i486"`
+
+# Source name
+STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\1/'`
+SRC_NAME=`validate_parameter "$SRC_NAME" "SOURCE NAME" "$STR_MOUNT"` || mkbuild_error $ERROR_CONSTRUCTION "SOURCE NAME"
+
+# Package name
+STR_MOUNT=`echo $SRC_NAME | tr [A-Z_] [a-z\-]`
+PKG_NAME=`validate_parameter "$PKG_NAME" "PACKAGE NAME" "$STR_MOUNT"`
+
+# Version
+STR_MOUNT=`echo $SOURCE_NAME | sed -r 's/(.*)-(.*)\.(.*\..*)$/\2/'`
+VERSION=`validate_parameter "$VERSION" "VERSION" $STR_MOUNT` || mkbuild_error $ERROR_CONSTRUCTION "VERSION"
+
+# Construction source name string
+CONST_STRING="`validate_parameter "$CONST_STRING" "SOURCE NAME CONSTRUCTION STRING" "\\\$SRC_NAME-\\\$VERSION.tar.$EXTENSION"`"
+
+# Build Source Name
+[ -z $SOURCE_NAME ] && SOURCE_NAME=`eval "echo $CONST_STRING"`
+
+# Decompressor program and test flag
+DECOMPRESSOR=`validate_parameter "$DECOMPRESSOR" "DECOMPRESSOR" ""` || decompress_find
+
+DECOMPRESSOR_TEST_FLAG=`validate_parameter "$DECOMPRESSOR_TEST_FLAG" "DECOMPRESSOR TEST FLAG" ""` || mkbuild_error $ERROR_CONSTRUCTION "DECOMPRESSOR TEST FLAG"
+
+# Documentations list
+DOCFILES=`validate_parameter "$DOCFILES" "DOCUMENTATION FILES" "NEWS TODO README AUTHORS INSTALL ChangeLog MAINTAINERS COPYING readme.*"`
+
+# ./configure option
+OPTIONS=`validate_parameter "$OPTIONS" "OTHER CONFIGURE ARGS" ""`
+
+# PREFIX
+PREFIX=`validate_parameter "$PREFIX" "PREFIX" "/usr"`
+
+# Number of jobs
+NUMJOBS=`validate_parameter "$NUMJOBS" "NUMBER OF JOBS" ""`
+
+# Make slack-required file.
+SLACK_REQUIRED=`validate_parameter "$SLACK_REQUIRED" "SLACK REQUIRED" ""`
+
+# SlackBuild model
+MODEL=`validate_parameter "$MODEL" "SLACKBUILD MODEL" "generic.mkSlackBuild"`
+
+#
+# Start build SlackBuild
+SLACKBUILD=${PKG_NAME}.SlackBuild
+SLACKBUILD_TEMP=$SLACKBUILD.tmp
+cp $MODEL_DIR/$MODEL $SLACKBUILD_TEMP
+
+# Change Strings from model
+start_build $SLACKBUILD_TEMP
+
+# On/Off sections
+activate_sections
+
+# Change sections
+section_edit
+
+# Remove off sections
+build_slackbuild
+
+# Make slack-required file
+make_slack_required
+
+if [ -e slack-required ]; then
+    DEPENDENCY_LIST="`cat slack-required | awk '{print $1}' | grep '^[a-z]' | tr '\012' ' '`"
+    edit_file "REQUIRES" "$DEPENDENCY_LIST" $SLACKBUILD
+else
+    edit_file "REQUIRES" "Null" $SLACKBUILD
+fi
+
+# Others changes
+change_others_fields
+
+# Clear temporary files
+clear_files
+
+[ $COMMIT -eq 1 ] && commit_slackbuild
+
diff --git a/tags/0.5/src/mkjail b/tags/0.5/src/mkjail
new file mode 100755 (executable)
index 0000000..f6c935c
--- /dev/null
@@ -0,0 +1,113 @@
+#!/bin/bash
+#          
+# mkjail v0.4: chroot jail maker
+#
+# feedback: rhatto at riseup.net | GPL
+#
+#  Mkjail is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Mkjail is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your `basename $0` installation"
+  exit 1
+fi
+
+function usage {
+
+  echo "usage: [ARCH=arch] [VERSION=version] [ROOT=/otherroot] $BASENAME <jail-name> [template]"
+  exit 1
+
+}
+
+function exec_post_install_scripts {
+
+  # exec post installation scripts
+  # usage: exec_post_install_script <jail-root> <jail-name>
+
+  local list
+
+  if [ -z "$2" ]; then
+    return 1
+  fi
+
+  echo "$BASENAME: executing template scripts..."
+  if [ -d "$TEMPLATE_BASE.s" ]; then
+    for file in $TEMPLATE_BASE.s/*; do
+      if [ -x "$file" ]; then
+        $file $1 $2
+      fi
+   done
+  fi
+
+}
+
+function jailist_update {
+
+  # update the jail list file
+  # usage: jailist_update <jail-path>
+
+  if [ "$ADD_TO_JAIL_LIST" == "1" ]; then
+    touch $JAIL_LIST
+    if ! grep -q -e "^$1\$" $JAIL_LIST; then
+      echo $1 >> $JAIL_LIST
+    fi
+  fi
+
+}
+
+if [ -z "$1" ]; then
+  usage
+else
+  server="$1"
+  eval_config $BASENAME -u
+fi
+
+if [ ! -z "$2" ]; then
+  search_template $2
+  result="$?"
+else
+  search_default_template
+  result="$?"
+fi
+
+if [ "$result" != "0" ]; then
+  exit 1
+fi
+
+TEMPLATE="$TEMPLATE_BASE.template"
+
+if [ ! -d "$JAIL_ROOT/$server" ]; then
+  mkdir -p $JAIL_ROOT/$server
+else
+  if [ ! -z "`ls $JAIL_ROOT/$server | grep -v 'lost+found'`" ]; then
+    echo $BASENAME: error: folder $JAIL_ROOT/$server already exists and seens to be not empty
+    echo $BASENAME: probably the jail $1 already exists
+    exit 1
+  fi
+fi
+
+echo "$BASENAME: instaling packages into $JAIL_ROOT/$server using $TEMPLATE..."
+
+install_packages
+copy_template_files $JAIL_ROOT/$server
+set_jail_perms $JAIL_ROOT/$server
+jailist_update $JAIL_ROOT/$server
+exec_post_install_scripts $JAIL_ROOT $server
+
+echo $BASENAME: done creating $server jail
+
diff --git a/tags/0.5/src/rebuildpkg b/tags/0.5/src/rebuildpkg
new file mode 100755 (executable)
index 0000000..6d3d10c
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/bash
+#
+# rebuildpkg: build a package from a /var/log/packages entry
+#
+# feedback: rhatto at riseup.net | gpl
+#
+#  Rebuildpkg is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Rebuildpkg is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+TMP="/tmp"
+
+function usage {
+  echo "usage: ROOT=/otherroot `basename $0` <package-name>"
+}
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your `basename $0` installation"
+  exit 1
+fi
+
+if [ -z "$1" ]; then
+  usage
+  exit 1
+fi
+
+pack="$1"
+
+for file in `ls $ROOT/var/log/packages/$pack*`; do
+  if [[ "`package_name $file.tgz`" == "$pack" ]]; then
+    package_file="$file"
+    break
+  fi
+done
+
+if [ -z "$package_file" ]; then
+  echo error: package $pack does not exist
+  exit 1
+fi 
+
+if [ -d "$TMP/package-$pack" ]; then
+  rm -rf $TMP/package-$pack
+fi
+
+mkdir $TMP/package-$pack
+cd $TMP/package-$pack
+
+for file in `grep -v -e "^PACKAGE NAME:" -e "^UNCOMPRESSED PACKAGE SIZE:"    \
+                     -e "^COMPRESSED PACKAGE SIZE:" -e "^PACKAGE LOCATION:"  \
+                     -e "^PACKAGE DESCRIPTION:" -e "^$pack:" -e "^FILE LIST:" $package_file`; do
+
+  if [ "$file" != "install" ] && [ "$file" != "install/slack-desc" ] && [ "$file" != "install/doinst,sh" ]; then
+    if [ -d /$file ]; then
+      mkdir -p $TMP/package-$pack/$file
+    elif [ -f /$file ]; then
+      cp /$file $TMP/package-$pack/$file
+    else
+      echo file /$file was not found, please add it manually, exploding and making the package again
+    fi
+  fi
+
+done
+
+mkdir $TMP/package-$pack/install
+grep "^$pack:" $package_file > $TMP/package-$pack/install/slack-desc
+
+package_name="`grep "PACKAGE NAME:" $package_file | awk '{ print $3 }'`"
+
+if [ -f "$ROOT/var/log/scripts/$package_name" ]; then
+  cp $ROOT/var/log/scripts/$package_name $TMP/package-$pack/install/doinst.sh
+fi
+
+makepkg $package_name.tgz
+mv $package_name.tgz $TMP/
+echo "done: package rebuilt and stored at $TMP/$package_name.tgz"
diff --git a/tags/0.5/src/repos b/tags/0.5/src/repos
new file mode 100755 (executable)
index 0000000..e4a17ee
--- /dev/null
@@ -0,0 +1,87 @@
+#!/bin/bash
+#
+# repos script got from
+# http://software.jaos.org/BUILD/slapt-get/FAQ.html#slgFAQ17
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# any later version.
+#
+# Changes by rhatto at riseup.net to fit http://slack.sarava.org needs
+#
+
+BASENAME="`basename $0`"
+REPOS_CONF="/etc/simplepkg/repos.conf"
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function usage {
+
+  echo "`basename $0` [pkg [file]|all|new|svnmeta|PACKAGESTXT|FILELIST|MD5]"
+
+}
+
+function do_all {
+
+  for pkg in `find . -type f -name '*.tgz' -print`; do
+    gen_meta $pkg
+  done
+  $0 PACKAGESTXT
+  $0 FILELIST
+  $0 MD5
+
+}
+
+# ---------------------------------
+#              main
+# ---------------------------------
+
+case "$1" in
+  pkg)
+      if [ -n "$2" ]; then
+        gen_meta $2
+      else
+        usage
+      fi
+    ;;
+    all)
+      do_all
+    ;;
+    new)
+      for pkg in `find . -type f -name '*.tgz' -print`; do
+        if [ ! -f ${pkg%tgz}meta ]; then
+          gen_meta $pkg
+        fi
+      done
+    ;;
+    svnmeta)
+      svn_add_meta
+    ;;
+    PACKAGESTXT)
+      gen_packages_txt .
+      gen_packages_txt patches
+    ;;
+    FILELIST)
+      gen_filelist
+      gen_patches_filelist patches
+    ;;
+    MD5)
+      gen_md5_checksums .
+      gen_md5_checksums patches
+    ;;
+    usage)
+      usage
+    ;;
+    *)
+      do_all
+      svn_add_meta
+    ;;
+esac
+
diff --git a/tags/0.5/src/simplaret b/tags/0.5/src/simplaret
new file mode 100755 (executable)
index 0000000..c8cc2f7
--- /dev/null
@@ -0,0 +1,1131 @@
+#!/bin/bash
+#
+# simplaret v0.2: simplepkg's retrieval tool
+# feedback: rhatto at riseup.net | gpl
+#
+#  Simplaret is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Simplaret is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+BASENAME="`basename $0`"
+REPOS_CONF="/etc/simplepkg/repos.conf"
+COMMON="/usr/libexec/simplepkg/common.sh"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function simplaret_usage {
+
+  echo "usage: [ARCH=otherarch] [VERSION=otherversion] $BASENAME <OPTION> package-name"
+  echo -e "\t OPTIONS: --install, --update, --upgrade, --search, --get, --get-patches, --purge, --remove"
+  exit 1
+
+}
+
+function simplaret_get_index {
+
+  for file in `simplaret_metafiles`; do
+    simplaret_download $1 $file $2 --no-verbose
+  done
+
+}
+
+function simplaret_backup_index {
+
+  for file in `simplaret_metafiles`; do
+    if [ -f "$1/$file" ]; then
+      mv $1/$file $1/$file.old
+    fi
+  done
+
+}
+
+function simplaret_check_index {
+
+  for file in `simplaret_metafiles`; do
+    if [ ! -f "$1/$file" ] && [ -f "$1/$file" ]; then
+      echo restoring old $file to $1...
+      mv $1/$file.old $1/$file
+     else
+      rm -f $1/$file.old
+    fi
+  done
+
+}
+
+function simplaret_download {
+
+  # download a file from a repo to a folder
+  # usage: simplaret <repository_url> <package> <destination-folder> [--no-verbose]
+
+  local protocol file
+  local wget_timeout wget_passive_ftp wget_verbose
+  local curl_timeout curl_passive_ftp curl_verbose
+  local ncftpget_timeout ncftpget_passive_ftp
+
+  protocol="`echo $1 | cut -d : -f 1`"
+  file="`basename $2`"
+
+  if [ ! -d "$3" ]; then
+    mkdir -p $3
+  fi
+
+  if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
+    wget_timeout="--timeout $CONNECT_TIMEOUT"
+    ncftpget_timeout="-t $CONNECT_TIMEOUT"
+    curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
+  fi
+
+  if [ "$4" == "--no-verbose" ]; then
+    wget_verbose="--no-verbose"
+    curl_verbose="-#"
+    echo ""
+  fi
+
+  if [ "$protocol" == "http" ]; then
+
+    echo Getting $1/$2:
+    if [ "$HTTP_TOOL" == "wget" ]; then
+      wget $wget_timeout $wget_verbose $1/$2 -O $3/$file
+    elif [ "$HTTP_TOOL" == "curl" ]; then
+      curl $curl_timeout $curl_verbose $1/$2 > $3/$file
+    else
+      echo $BASENAME: error: invalid value for config variable HTTP_TOOL: $HTTP_TOOL
+      echo $BASENAME: please check your config file $CONF
+      exit 1
+    fi
+
+  elif [ "$protocol" == "ftp" ]; then
+    echo Getting $1/$2:
+
+    if [ "$PASSIVE_FTP" == "1" ]; then
+      wget_passive_ftp="--passive-ftp"
+      ncftpget_passive_ftp="-F"
+      curl_passive_ftp="--ftp-pasv"
+    fi 
+
+    if [ "$FTP_TOOL" == "ncftpget" ]; then
+      ncftpget -c $ncftpget_timeout $ncftpget_passive_ftp $1/$2 > $3/$file
+    elif [ "$FTP_TOOL" == "wget" ]; then
+      wget $wget_timeout $wget_passive_ftp $wget_verbose $1/$2 -O $3/$file
+    elif [ "$FTP_TOOL" == "curl" ]; then
+      curl $curl_timeout $curl_passive_ftp $curl_verbose $1/$2 > $3/$file
+    else
+      echo $BASENAME: error: invalid value for config variable FTP_TOOL: $FTP_TOOL
+      echo $BASENAME: please check your config file $CONF
+      exit 1
+    fi
+
+  elif [ "$protocol" == "file" ]; then
+
+    url="`echo $1 | sed -e 's/file:\/\///'`"
+    if [ -f "$3/$file" ]; then
+      rm -f $3/$file
+    fi
+    echo -n "Copying $url/$2..."
+    if [ -f "$url/$2" ]; then
+      cp $url/$2 $3/$file 2> /dev/null
+    fi
+    if [ -f "$3/$file" ]; then
+      echo " done."
+    else
+      echo " failed."
+    fi
+
+  else
+
+    echo $BASENAME error: invalid protocol $protocol
+
+  fi
+
+}
+
+function simplaret_repository {
+
+  # return a repository definition from $REPOS_CONF file
+  # usage: simplaret_repository [root|repos|noarch|patches]
+
+  local definition
+
+  if [ -z "$1" ]; then
+    definition="ROOT"
+  else
+    definition="`echo $1 | tr '[:lower:]' '[:upper:]'`"
+  fi
+
+  if [ "$definition" == "REPOS" ] || [ "$definition" == "PATCHES" ]; then
+    definition="$definition-$ARCH-$VERSION"
+  elif [ "$definition" == "ROOT" ]; then
+    definition="$definition-$ARCH"
+  fi
+
+  grep -e "^$definition=" $REPOS_CONF | cut -d = -f 2 | sed -e 's/"//g' -e "s/'//g" | cut -d "#" -f 1
+
+}
+
+function simplaret_repository_name {
+
+  # return a repository name according the value of $repository
+
+  if [ -z "$repository" ]; then
+    false
+  elif echo $repository | grep -qe %; then
+    repository_name="`echo $repository | cut -d % -f 1`"
+    if [ -z "$repository_name" ]; then
+      echo $BASENAME: you should set a name for the repository $repository
+      echo $BASENAME: please correct your $REPOS_CONF
+      exit 1
+    fi
+  else
+    echo $BASENAME: you should set a name for the repository $repository
+    echo $BASENAME: please correct your $REPOS_CONF
+    exit 1
+  fi
+
+}
+
+function simplaret_repository_url {
+
+  # return a repository url according the value of $repository
+
+  if echo $repository | grep -qe %; then
+    repository_url="`echo $repository | cut -d % -f 2`"
+    if [ -z "$repository_url" ]; then
+      echo $BASENAME: you should set a url for the repository $repository
+      echo $BASENAME: please correct your $REPOS_CONF
+      exit 1
+    fi
+  else
+    echo $BASENAME: you should set a url for the repository $repository
+    echo $BASENAME: please correct your $REPOS_CONF
+    exit 1
+  fi
+
+  if [ "$repos_type" == "root" ]; then
+    simplaret_distro_folder
+    repository_url="$repository_url/$DISTRO_FOLDER/$EXTRA_FOLDER" 
+  fi
+
+}
+
+function simplaret_set_storage_folder {
+
+  storage="$STORAGE/$ARCH/$VERSION/$repos_type"
+  if [ "$repos_type" == "noarch" ]; then
+    storage="$STORAGE/noarch"
+  elif [ "$repos_type" == "patches" ]; then
+    storage="$PATCHES_DIR/$ARCH/$VERSION"
+  fi
+
+}
+
+function simplaret_update {
+
+  local storage
+
+  echo Updating package information for arch $ARCH and version $VERSION... 
+
+  for repos_type in patches root repos noarch; do
+
+    simplaret_set_storage_folder
+
+    for repository in `simplaret_repository $repos_type`; do
+
+      simplaret_repository_name
+      simplaret_repository_url
+
+      if [ ! -d "$storage/$repository_name" ]; then
+        mkdir -p $storage/$repository_name
+      else
+        simplaret_backup_index $storage/$repository_name
+      fi
+
+      simplaret_get_index $repository_url $storage/$repository_name
+      simplaret_check_index $storage/$repository_name
+
+      unset repository_name repository_url repository_protocol
+
+    done
+  done
+
+}
+
+function simplaret_find_package {
+
+  # grep packages in a repository's file list
+  # usage: simplaret_find_package <package-name|-all> <repository-folder>
+
+  if [ "$1" == "-all" ]; then
+    grep -e ".tgz$" $2/`simplaret_filelist` | awk '{ print $8 }'
+  else
+    grep $1 $2/`simplaret_filelist` | awk '{ print $8 }' | grep -e ".tgz$"
+  fi
+
+}
+
+function simplaret_show_package {
+
+  # print a package result
+  # usage: simplaret_show_package <package-file-name> [--basename-only|--filename-only|--formatted]
+
+  if [ "$2" == "--basename-only" ]; then
+    echo `basename $1`
+  elif [ "$2" == "--filename-only" ]; then
+    echo $1
+  elif [ "$2" == "--formatted" ]; then
+    echo $1,$repos_type,$repository
+  else 
+    if echo $1 | grep -q "/patches/"; then
+      patch="(patch)"
+    fi
+    if [ "$repos_type" == "noarch" ]; then
+      echo $name repository $repository_name: `basename $1` $patch
+    else
+      echo $name repository $repository_name, arch: $ARCH, version: $VERSION: `basename $1` $patch
+    fi
+  fi
+  unset patch
+
+}
+
+function simplaret_filelist {
+
+  if [ "$repos_type" == "patches" ]; then
+    echo FILE_LIST
+  else
+    echo FILELIST.TXT
+  fi
+
+}
+
+function simplaret_metafiles {
+
+  echo `simplaret_filelist` CHECKSUMS.md5
+
+}
+
+function simplaret_search {
+
+  # search packages
+  # usage: simplaret_search [package-name] [-display_mode]
+  # display_mode can be any accepted by simplaret_show_package
+
+  local priority priority_match message pattern mode
+
+  if [ ! -z "$1" ] && ! echo $1 | grep -q -e "^-"; then
+    pattern="$1"
+    mode="$2"
+  else
+    pattern="-all"
+    mode="$1"
+  fi
+
+  for repos_type in patches root repos noarch; do
+
+    name="`echo $repos_type | tr '[:lower:]' '[:upper:]'`"
+    simplaret_set_storage_folder
+
+    for repository in `simplaret_repository $repos_type`; do
+      
+      simplaret_repository_name
+
+      if [ ! -f "$storage/$repository_name/`simplaret_filelist`" ]; then
+        if [ "$WARNING" != "0" ] || [ ! -z "$SILENT" ]; then
+          if [ "$repos_type" == "noarch" ]; then
+            message=""
+          else
+            message="on arch $ARCH version $VERSION"
+          fi
+          echo warning: no file list for $repository_name repository $repository_name $message
+          echo please do a simplaret --update
+        fi
+      else
+
+        if [ "$repos_type" == "root" ]; then
+          # root repositories has ROOT_PRIORITY
+          for priority in $ROOT_PRIORITY; do
+            for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
+              simplaret_show_package $file $mode
+            done
+            priority_match="$priority_match|/$priority/"
+          done
+          # now we should return all matches that are not part of ROOT_PRIORITY
+          priority_match="`echo $priority_match | sed -e 's/^|//'`"
+          for file in `simplaret_find_package $pattern $storage/$repository_name | egrep -v $priority_match`; do
+            simplaret_show_package $file $mode
+          done
+          priority_match=""
+        elif [ "$repos_type" == "repos" ]; then
+          # repos repositories has REPOS_PRIORITY
+          for priority in $REPOS_PRIORITY; do
+            for file in `simplaret_find_package $pattern $storage/$repository_name | grep "/$priority/"`; do
+              simplaret_show_package $file $mode
+            done
+            priority_match="$priority_match|/$priority/"
+          done
+          # now we should return all matches that are not part of REPOS_PRIORITY
+          priority_match="`echo $priority_match | sed -e 's/^|//'`"
+          for file in `simplaret_find_package $pattern $storage/$repository_name | egrep -v $priority_match`; do
+            simplaret_show_package $file $mode
+          done 
+          priority_match=""
+        else
+          for file in `simplaret_find_package $pattern $storage/$repository_name`; do
+            simplaret_show_package $file $mode
+          done
+        fi
+
+      fi
+
+    done
+  done
+
+}
+
+function simplaret_purge {
+
+  # purge simplaret package cache
+  # usage: simplaret_purge [-w N]
+
+  local mtime mtime_message which and_patches
+
+  if [ "$1" == "-w" ] && [ ! -z "$2" ]; then
+    mtime="-mtime +`echo "$2*7" | bc -l`"
+    mtime_message="older than $2 weeks"
+  elif [ "$SIMPLARET_PURGE_WEEKS" != "0" ]; then
+    mtime="-mtime +`echo "$SIMPLARET_PURGE_WEEKS*7" | bc -l`"
+    mtime_message="older than $SIMPLARET_PURGE_WEEKS weeks"
+  else
+    mtime=""
+    mtime_mesage=""
+  fi
+
+  which="root repos noarch"
+  and_patches=""
+
+  if [ "$SIMPLARET_PURGE_PATCHES" == "1" ]; then
+    which="patches $which"
+    and_patches="including patches"
+  fi
+
+  if [ -z "$SILENT" ]; then
+    if [ -z "$mtime_message" ]; then
+      echo "$BASENAME: purging all packages for:"
+    else
+      echo "$BASENAME: purging all packages $mtime_message for:"
+    fi
+    echo -e "\t- Arch $ARCH and version $VERSION $and_patches"
+    echo -e "\t- Noarch folder"
+  fi
+
+  for repos_type in $which; do
+
+    simplaret_set_storage_folder
+
+    for file in `find $storage/ $mtime 2> /dev/null`; do
+      for extension in tgz asc meta txt slack-required; do
+        if echo $file | grep -qe ".$extension$"; then
+          rm $file
+        fi
+      done
+    done
+
+  done
+
+  if [ -z "$SILENT" ]; then
+    echo $BASENAME: done purging simplaret cache
+    echo $BASENAME: please run $BASENAME --update to retrieve new package listings on this arch and version
+  fi
+
+}
+
+function simplaret_search_and_delete {
+
+  # search and delete packages
+  # usage: simplaret_search_and_delete <package> <folder> [--silent]
+
+  local file candidate place basename name version build
+  local name_version name_build
+
+  name="`package_name $1`"
+
+  if [ "$name" != "$1" ]; then
+    # searching by full package filename
+    name_version="`package_version $1`"
+    name_build="`package_build $1`"
+
+    # search wheter the package filename is in the repositories
+    if [ "`simplaret_search $1 | grep $1 | wc -l`" == "0" ]; then 
+      echo "Error: package not found: $1"
+      return 1
+    fi
+
+    for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+      candidate="`basename $file`"
+      version="`package_version $candidate`"
+      build="`package_build $candidate`"
+      if [ "`package_name $candidate`" == "$name" ]; then
+
+        if [ "$name_version" == "$version" ] && \
+           [ "$name_build" == "$build" ]; then
+           LAST_DOWNLOADED_PACKAGE="$file"
+           if [ "$3" != "--silent" ]; then
+             echo Package $candidate already downloaded
+             # echo Package $candidate stored at `dirname $file`
+           else
+             true
+             # echo $file
+           fi
+           return 1
+         else
+           place="`dirname $file`"
+           basename="`basename $file tgz`"
+           rm -f $file
+           rm -f $place/$candidate.slack-required
+           rm -f $file.asc $place/$basename.meta $place/$basename.txt
+           break
+         fi
+           
+       fi
+    done
+
+  else
+
+    for file in `find $2/ -name $name*tgz 2> /dev/null`; do
+      candidate="`basename $file`"
+      version="`package_version $candidate`"
+      build="`package_build $candidate`"
+      if [ "`package_name $candidate`" == "$name" ]; then
+        # check if has the same version and build number, otherwise erase the old one
+        for result in `simplaret_search $(package_name $candidate) --basename-only`; do
+          if [ "`package_name $candidate`" == "`package_name $result`" ]; then
+
+            if [ "$version" == "`package_version $result`" ] && \
+               [ "$build" == "`package_build $result`" ]; then
+               LAST_DOWNLOADED_PACKAGE="$file"
+               if [ "$3" != "--silent" ]; then
+                 echo Package $candidate already downloaded
+                 # echo Package $candidate stored at `dirname $file`
+               else
+                 true
+                 # echo $file
+               fi
+               return 1
+             else
+               place="`dirname $file`"
+               basename="`basename $file tgz`"
+               rm -f $file
+               rm -f $place/$candidate.slack-required
+               rm -f $file.asc $place/$basename.meta $place/$basename.txt
+               break
+             fi
+
+          fi
+        done
+      fi
+    done
+
+  fi
+
+}
+
+function simplaret_get {
+
+  # get a package
+  # usage: simplaret_get <package-name|package-file-name> [--silent]
+
+  local silent generate_patches search search_results
+  local name version build
+
+  # prevent user to stay in $storage
+  cd 
+
+  name="`package_name $1`"
+
+  if [ "$name" != "$1" ]; then
+    # simplaret_get was called with the package file
+    # name and not with just the package name
+    version="`package_version $1`"
+    build="`package_build $1`"
+  else
+    version=""
+    build=""
+  fi
+
+  # first search for an already downloaded package
+  for repos_type in patches root repos noarch; do
+
+    simplaret_set_storage_folder
+    simplaret_search_and_delete $1 $storage $2
+
+    if [ "$?" == "1" ]; then
+      return 0
+    fi
+
+  done
+
+  # then search for the package in the repositories
+  search="`simplaret_search $1 --formatted`"
+  search_results="`echo "$search" | wc -l`"
+
+  for result in $search; do
+
+    # remaining search results
+    let search_results--
+
+    file="`echo $result | cut -d , -f 1`"
+    repos_type="`echo $result | cut -d , -f 2`"
+    repository="`echo $result | cut -d , -f 3`"
+
+    simplaret_set_storage_folder
+    simplaret_repository_name
+
+    candidate="`basename $file`"
+    if [ "`package_name $candidate`" == "$name" ]; then
+
+      if [ ! -z "$build" ] && [ ! -z "$version" ]; then
+        # simplaret_get was called with the package file
+        # name and not with just the package name
+        if [ "$version" != "`package_version $candidate`" ] && \
+           [ "$build" != "`package_build $candidate`" ]; then
+           # the package version and/or build doesnt matched
+           # the desired one
+           continue
+         fi
+      fi
+
+      simplaret_repository_url
+
+      # if repos_type == root, the package is a patch and
+      # STORE_ROOT_PATCHES_ON_PATCHES_DIR config parameter is enabled, then
+      # save it on $PATCHES_DIR/root-$repository_name, so all patches
+      # are placed in the same tree
+      if [ "$repos_type" == "root" ] && \
+         [ "$STORE_ROOT_PATCHES_ON_PATCHES_DIR" == "1" ] && echo $file | grep -q "patches"; then
+        folder="$PATCHES_DIR/$ARCH/$VERSION/root-$repository_name"
+        generate_patches="1"
+      else
+        folder="$storage/$repository_name"
+      fi
+
+      # download the package
+      simplaret_download $repository_url $file $folder
+
+      if [ -f "$folder/$candidate.asc" ]; then
+        rm $folder/$candidate.asc
+      fi
+
+      if [ -f "$folder/$name.slack-required" ]; then
+        rm $folder/$name.slack-required
+      fi
+
+      # download the signature, if exist
+      if simplaret_check_url $repository_url/$file.asc; then
+        simplaret_download $repository_url $file.asc $folder
+      fi
+
+      # download slack-required, if exist
+      if simplaret_check_url $repository_url/`dirname $file`/$name.slack-required; then
+        simplaret_download $repository_url `dirname $file`/$name.slack-required $folder
+      fi
+
+      if [ ! -f "$folder/$candidate" ]; then
+        LAST_DOWNLOADED_PACKAGE="0"
+        if [ "$2" != "--silent" ]; then
+          echo Error downloading $candidate from $repos_type repository $repository_url, please check your settings
+        fi
+        # check if there's also more repositories to try
+        if [ "$SIMPLARET_DOWNLOAD_FROM_NEXT_REPO" != "1" ]; then
+          return 1
+        else
+          if [ "$2" != "--silent" ]; then
+            echo Trying to fetch $candidate from the next repository...
+          fi
+          if (($search_results <= 0)); then
+            return 1
+          fi
+        fi
+      else
+        LAST_DOWNLOADED_PACKAGE="$folder/$candidate"
+        if [ "$2" != "--silent" ]; then
+          silent=""
+          echo Package $candidate stored at $folder
+        else
+          # echo $folder/$candidate
+          silent="--silent"
+        fi
+        if [ -f "$folder/$candidate.asc" ] || [ "$SIGNATURE_CHECKING" == "1" ]; then
+          gpg --verify $folder/$candidate.asc $folder/$candidate
+        fi
+        # generate the patches FILE_LIST and PACKAGES.TXT if needed
+        if [ "$generate_patches" == "1" ]; then
+          gen_patches_filelst $folder
+          gen_packages_txt $folder
+          gen_md5_checksums $folder
+        fi
+        simplaret_checksum $storage/$repository_name/CHECKSUMS.md5 $folder/$candidate $silent
+        return $?
+      fi
+
+    fi
+
+  done
+
+}
+
+function simplaret_search_and_process_patch {
+
+  local package_version package_build installed_version
+  local installed_build repos_type get is_patch package_match
+
+  # get the repository type
+  repos_type="`echo $sugested | cut -d , -f 2`"
+
+  # get just the file name
+  sugested="`echo $sugested | cut -d , -f 1`"
+
+  if echo $sugested | grep -q "patches"; then
+    is_patch="yes"
+  else
+    is_patch="no"
+  fi
+
+  # now split the file name into pieces
+  package_version="`package_version $sugested`"
+  package_build="`package_build $sugested`"
+  sugested="`package_name $sugested`"
+
+  # check if the patch was already downloaded
+  if echo "$DOWNLOADED_PATCHES" | grep -q " $ARCH:$VERSION:$sugested "; then
+    if [ "$IS_UPGRADE" != "1" ]; then
+      echo Package $sugested already downloaded
+      # echo "Jail $root needs package $sugested (already downloaded, skipping)"
+      return
+    fi
+  fi
+
+  # search if its installed in the jail
+  installed_packs="`ls /$root/var/log/packages/$sugested* 2> /dev/null`"
+  if [ ! -z "$installed_packs" ]; then
+
+    for installed in $installed_packs; do
+      if [[ "$sugested" == "`package_name $installed.tgz`" ]]; then
+        package_installed="1"
+        installed_version="`package_version $installed.tgz`"
+        installed_build="`package_build $installed.tgz`"
+        break
+      fi
+    done
+
+    get="no"
+
+    # if the package is installed, download the patch
+    if [ "$package_installed" == "1" ]; then
+      if [ "$repos_type" == "patches" ]; then
+
+        if  [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+          get="yes"
+          package_match="no"
+        elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
+          get="yes"
+        fi
+
+      elif [ "$repos_type" == "root" ] && [ "$is_patch" == "yes" ]; then
+
+        if  [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+          get="yes"
+          package_match="no"
+        elif [ "$DOWNLOAD_EVEN_APPLIED_PATCHES" == "1" ]; then
+          get="yes"
+        fi
+
+      else
+        # here, we're dealing with repositories other than ROOT and REPOS,
+        # so we need to check if either version or build number are different,
+        # otherwise all installed packages would be downloaded
+        if [ "$package_version" != "$installed_version" ] || [ "$package_build" != "$installed_build" ]; then
+          get="yes"
+          package_match="no"
+        fi
+      fi
+    fi
+
+    # finally, get the package
+    if [ "$get" == "yes" ]; then
+      if [ "$IS_UPGRADE" == "1" ]; then
+        if [ "$package_match" == "no" ]; then
+          simplaret_install $sugested
+        else
+          simplaret_get $sugested
+        fi
+      else
+        simplaret_get $sugested
+      fi
+      if [ "$?" == "0" ]; then
+        DOWNLOADED_PATCHES="$DOWNLOADED_PATCHES $ARCH:$VERSION:$sugested " # the ending space is important
+      fi
+    fi
+
+  fi
+
+  unset package_installed get
+
+}
+
+function simplaret_get_jail_patches {
+
+  # get patches from a jail
+  # usage: simplaret_get_jail_patches <jail-folder>
+
+  local oldarch oldversion
+
+  if [ ! -z "$1" ]; then
+    root="$1"
+  else
+    root="/"
+  fi
+
+  # save current arch and version
+  oldarch="$ARCH"
+  oldversion="$VERSION"
+
+  ARCH="`default_arch $root`"
+  VERSION="`default_version $root`"
+
+  # in case there's something wrong with the jail, abort
+  if [ -z "$VERSION" ] || [ -z "$ARCH" ]; then
+    return
+  fi
+
+  # we need to do that for each arch/version pairs, but just once for each pair
+  if ! echo "$DISTRO_UPDATED" | grep -q " $ARCH:$VERSION "; then
+    simplaret_update
+    DISTRO_UPDATED="$DISTRO_UPDATED $ARCH:$VERSION " # the ending space is important
+    echo ""
+  fi
+
+  echo Fetching patches for arch $ARCH and version $VERSION for jail $root
+
+  # list all available patches from PATCHES and ROOT repositories
+  for sugested in `simplaret_search --formatted | grep patches | grep -v ",repos," | grep -v ",noarch,"`; do
+    simplaret_search_and_process_patch
+  done
+
+  # grab patches from every other places
+  if [ "$CONSIDER_ALL_PACKAGES_AS_PATCHES" == "1" ]; then
+
+    for sugested in `simplaret_search --formatted | grep patches | grep ",repos," | grep ",noarch,"`; do
+      simplaret_search_and_process_patch
+    done
+
+    for sugested in `simplaret_search --formatted | grep -v patches`; do
+      simplaret_search_and_process_patch
+    done
+
+  fi
+
+  # restore arch and version
+  ARCH="$oldarch"
+  VERSION="$oldversion"
+
+}
+
+function simplaret_get_patches {
+
+  local jailpath
+
+  if [ "$1" == "--upgrade" ]; then
+    IS_UPGRADE="1"
+  fi
+
+  if [ ! -z "$ROOT" ]; then
+    simplaret_get_jail_patches $ROOT
+    return $?
+  fi
+
+  # first get patches from the root system
+  simplaret_get_jail_patches
+
+  # then get the needed patches for each installed jail
+  if [ -s "$JAIL_LIST" ]; then
+    for jailpath in `cat $JAIL_LIST`; do
+      if [ -d "$jailpath/var/log/packages" ]; then
+        ROOT="$jailpath"
+        simplaret_get_jail_patches $jailpath
+      fi
+    done
+  fi
+
+  ROOT=""
+
+}
+
+function simplaret_checksum {
+
+  # simplaret_checksum <md5file> <file-name> [--silent]
+
+  if [ ! -f "$1" ] || [ ! -f "$2" ]; then
+    if [ "$3" != "--silent" ]; then
+      echo Checksum error: file not found
+    fi
+    return 1
+  fi
+
+  pack="`basename $2`"
+  checksum="`grep -e "$pack\$" $1 | awk '{ print $1 }'`"
+
+  if [ -z "$checksum" ]; then
+    echo file $2 not in checksum $1
+    return 1
+  elif [ "$checksum" != "`md5sum $2 | awk '{ print $1 }'`" ]; then
+    if [ "$3" != "--silent" ]; then
+      echo Checksum mismatch for file `basename $file`
+    fi
+    return 1
+  else
+    if [ "$3" != "--silent" ]; then
+      echo Checksum ok for file `basename $file`
+    fi
+    return 0
+  fi
+
+}
+
+function simplaret_install {
+
+  # download and install a package
+  # usage: simplaret_install <package-name|package-file-name> [--skip-checks]
+
+  local package root jail_arch jail_version slack_required dep dependency tmp
+  local name version build
+
+  name="`package_name $1`"
+
+  root="/$ROOT"
+  mkdir -p $root/var/log/setup/tmp
+
+  if [ "`echo $1 | sed -e 's/\(..\).*/\1/g'`" == "--" ]; then
+    echo $BASENAME: install: syntax error: expected package name
+    return 1
+  fi
+
+  # now we check if ARCH and VERSION from the
+  # repository are the same of the jail
+  if [ "$2" != "--skip-checks" ]; then
+    jail_arch="`default_arch $root`"
+    jail_version="`default_version $root`"
+    if [ "$ARCH" != "$jail_arch" ]; then
+      echo "$BASENAME: requested repository arch ($ARCH) doesn't match jail arch ($jail_arch)"
+      echo "$BASENAME: please use \"$BASENAME --get $1 --skip-checks\" to ignore this warning and install anyway"
+      return
+    elif [ "$VERSION" != "$jail_version" ]; then
+      echo "$BASENAME: requested repository version ($VERSION) doesn't match jail version ($jail_version)"
+      echo "$BASENAME: please use \"$BASENAME --get $1 --skip-checks\" to ignore this warning and install anyway"
+      return 1
+    fi
+  fi
+
+  # package="`simplaret_get $1 --silent`"
+  simplaret_get $1 --silent
+  package="$LAST_DOWNLOADED_PACKAGE"
+
+  if [ "$package" != "0" ] && [ ! -z "$package" ]; then
+    slack_required="`dirname $package`/$name.slack-required"
+    if [ -f "$package" ]; then
+
+      if [ -f "$slack_required" ] && [ "$DEPENDENCY_CHECKING" == "1" ]; then
+        # this routine checks for dependencies in package's slack-required
+        # procedure adapted from createpkg script
+        ( cat $slack_required | while read dep; do
+           if [ ! -z "$dep" ]; then
+            dependency="`echo $dep | awk '{ print $1 }'`"
+            simplaret_solve_dep $name $dependency $root
+           fi
+           true
+         done )
+      fi
+
+      ROOT=$root upgradepkg --install-new $package
+      LAST_DOWNLOADED_PACKAGE="0"
+
+    else
+      echo "Error: could not install package $1: file not found"
+      LAST_DOWNLOADED_PACKAGE="0"
+      return 1
+    fi
+  else
+    echo "Error: could not install package $1"
+    LAST_DOWNLOADED_PACKAGE="0"
+    return 1
+  fi
+
+}
+
+function simplaret_distro_folder {
+
+  # first we point to the correct arch
+  simplaret_set_arch
+
+  # then we set the distro folder
+  if [ "$ARCH" == "i386" ]; then
+    DISTRO="slackware"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  elif [ "$ARCH" == "x86_64" ]; then
+    # EXTRA_FOLDER="tree"
+    DISTRO="slamd64"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  elif [ "$ARCH" == "s390" ]; then
+    DISTRO="slack390"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  elif [ "$ARCH" == "x86_uclibc" ]; then
+    DISTRO="ucslack"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  elif [ "$ARCH" == "arm" ]; then
+    DISTRO="armedslack"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  elif [ "$ARCH" == "powerpc" ]; then
+    DISTRO="slackintosh"
+    DISTRO_FOLDER="$VERSION"
+  elif [ "$ARCH" == "sparc" ]; then
+    DISTRO="splack"
+    DISTRO_FOLDER="tree-$VERSION"
+  else
+    DISTRO="$ARCH"
+    DISTRO_FOLDER="$DISTRO-$VERSION"
+  fi
+
+}
+
+function simplaret_set_arch {
+
+  # set correct value for ARCH
+
+  local repos_type new_arch
+
+  # any arch defined in ARCH_i386 that hasn't an entry
+  # on $REPOS_CONF will be mapped to i386
+
+  ARCH_i386=" nocona prescott pentium4m pentium4 pentium-m pentium3m pentium3 "
+  ARCH_i386="$ARCH_i386 pentium2 i686 pentium-pro i586 pentium-mmx pentium i486 "
+  ARCH_i386="$ARCH_i386 athlon-mp athlon-xp athlon4 athlon-tbird athlon k6 k6-2 "
+  ARCH_i386="$ARCH_i386 k6-3 winchip-c6 winchip2 c3 c3-2 i386 "
+
+  # any arch defined in ARCH_x86_64 that hasn't an entry
+  # on $REPOS_CONF will be mapped to x86_64
+
+  ARCH_x86_64=" k8 opteron athlon64 athlon-fx x86_64 "
+
+  for repos_type in patches root repos noarch; do
+    if [ -z "`simplaret_repository $repos_type`" ]; then
+      # there's no repository definition for that arch
+      if echo "$ARCH_i386" | grep -q " $ARCH "; then
+        new_arch="i386"
+      elif echo "$ARCH_x86_64" | grep -q " $ARCH "; then
+        new_arch="x86_64"
+      else
+        echo "$BASENAME: error: no repository definition for arch $ARCH"
+        echo "$BASENAME: please check your $CONF and $REPOS_CONF config files"
+        exit 1
+      fi
+    else
+      return
+    fi
+  done
+
+  echo "$BASENAME: changing arch from $ARCH to $new_arch"
+
+  ARCH="$new_arch"
+
+}
+
+function simplaret_check_url {
+
+  # check if a given url exist, use just with small files
+  # usage: simplaret_check_url <url>
+
+  if [ -z "$1" ]; then
+    return 1
+  fi
+
+  if [ ! -z "$CONNECT_TIMEOUT" ] || [ "$CONNECT_TIMEOUT" != "0" ]; then
+    curl_timeout="--connect-timeout $CONNECT_TIMEOUT"
+  fi
+
+  if [ "`curl $curl_timeout -I $1 2> /dev/null | head -n 1 | awk '{ print $2 }'`" == "200" ]; then
+    # server gave a 200 response, so the url exist
+    return 0
+  else
+    # the url is missing
+    return 1
+  fi
+
+}
+
+function simplaret_solve_dep {
+
+  # solve dependency for a package
+  # this function was adapted from createpkg script
+  # usage: simplaret_solve_dep <package-name> <package-depencency-name> [root-folder]
+
+  local installed check exit_code
+
+  local package="$1"
+  local pack="$2"
+  local root="/$3"
+
+  pack="`echo $pack| sed -e 's/\+/\\\+/'`"
+  installed=`eval "ls $root/var/log/packages/ | egrep -E '^$pack-[^-]+-[^-]+-[^-]+$'"`
+  check=$?
+
+  if [ -z "$installed" ]; then
+    if [ $check -ne 0 ]; then
+      echo "$BASENAME: processing $1 dependency $pack" 
+      # simplaret_install $pack
+      SIMPLARET_CHILD=$SIMPLARET_CHILD ROOT=$root ARCH=$ARCH VERSION=$VERSION \
+      simplaret --install $pack
+    fi
+  fi
+
+}
+
+if [ -z "$1" ]; then
+  simplaret_usage
+  exit 1
+else
+  eval_config $BASENAME
+fi
+
+# This is used to show how many children process we have
+if [ -z "$SIMPLARET_CHILD" ]; then
+  SIMPLARET_CHILD="1"
+else
+  let SIMPLARET_CHILD++
+fi
+
+BASENAME="`basename $0`[$SIMPLARET_CHILD]"
+
+case $1 in
+  "--update" | "update") simplaret_update ;;
+  "--search" | "search") shift ; simplaret_search $* ;;
+  "--get" | "get") shift ; simplaret_get $* ;;
+  "--get-patches" | "get-patches") simplaret_get_patches ;;
+  "--purge" | "purge") shift ; simplaret_purge $* ;;
+  "--install" | "install") shift ; simplaret_install $* ;;
+  "--upgrade" | "upgrade") simplaret_get_patches --upgrade ;;
+  "--remove" | "remove") ROOT=/$ROOT removepkg $2 ;;
+  *) simplaret_usage ;;
+esac
+
diff --git a/tags/0.5/src/templatepkg b/tags/0.5/src/templatepkg
new file mode 100755 (executable)
index 0000000..4f2592f
--- /dev/null
@@ -0,0 +1,980 @@
+#!/bin/bash
+#
+# templatepkg v0.3: template maintenance script from simplepkg suite
+#
+# feedback: rhatto at riseup.net | gpl
+# 
+#  Templatepkg is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Templatepkg is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+  eval_config $BASENAME
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function usage_summary {
+
+  echo "options are:"
+  echo ""
+  echo "  -c | --create: create a template from a jail or existing template"
+  echo "  -u | --update: update a template from a jail"
+  echo "  -a | --add: add files into a template"
+  echo "  -d | --delete: delete files or folders from a template"
+  echo "  -s | --sync: sync $TEMPLATE_FOLDER working copy"
+  echo "  -e | --export: export $TEMPLATE_FOLDER to a svn repository"
+  echo "  -i | --import: grab $TEMPLATE_FOLDER from a svn repository"   
+  echo "  -r | --remove: remove a template"
+  echo "  -l | --list: list templates"
+  echo "  -b | --batch-edit: add or edit post-installation scripts"
+  echo "  -p | --pack: create a package from a template"
+  echo "  -t | --template-edit: edit template package list"
+  echo "  -h | --help: display this summary"   
+  echo ""   
+
+}
+
+function display_help {
+
+  # display help
+  # usage: help [help-topic]
+
+  local option
+
+  if [ -z "$1" ]; then
+    echo "type $BASENAME --help <option> for aditional help"
+    usage_summary
+    exit
+  fi
+
+  option="$1"
+
+  if ! echo $option | grep -q -e "^-"; then
+    option="-`echo $option | sed -e 's/--/-/' -e 's/\(.\).*/\1/'`"
+  else
+    option="`echo $option | sed -e 's/--/-/' -e 's/\(..\).*/\1/'`"
+  fi
+
+  echo "$BASENAME: help for option $option:"
+  echo ""
+
+  usage_summary | grep -e "^  $option"
+
+  echo ""
+  case $option in
+
+    "-c" | "--create")
+      echo "      $BASENAME $option <template> [jail-root|template-name]"
+      ;;
+    "-u" | "--update")
+      echo "      $BASENAME $option <template> [jail-root]"
+      ;;
+    "-a" | "--add")
+      echo "      $BASENAME $option <template> <file-name> [jail-root]"
+      echo ""
+      echo "      file-name: the file or directory to be added"
+      echo "      jail-root: the jail under file-name is located"
+      ;;
+    "-d" | "--delete")
+      echo "      $BASENAME $option <template> <file-name> [jail-root]"
+      echo ""
+      echo "      file-name: the file or directory to be removed"
+      echo "      jail-root: if specified, the file is also removed from the jail"
+      ;;
+    "-s" | "--sync")
+      echo "      $BASENAME $option"
+      ;;
+    "-e" | "--export")
+      echo "      $BASENAME $option <svn-repository>"
+      ;;
+    "-i" | "--import")
+      echo "      $BASENAME $option <svn-repository>"
+      ;;
+    "-r" | "--remove")
+      echo "      $BASENAME $option <template-name>"
+      ;;
+    "-l" | "--list")
+      echo "      $BASENAME $option [path]"
+      ;;
+    "-b" | "--batch-edit")
+      echo "      $BASENAME $option <template-name> <script-name>"
+      ;;
+    "-p" | "--pack")
+      echo "      $BASENAME $option <template-name> [version] [build] [arch]"
+      ;;
+    "-t" | "--template-edit")
+      echo "      $BASENAME $option <template-name>"
+      ;;
+    "-h" | "--help")
+      echo "  -h | --help: display this help."   
+      ;;
+    *)
+      echo $BASENAME: invalid help option $option
+  esac
+
+  case $option in
+    "-c" | "-u" | "-a")
+      echo ""
+      echo "  if ommited, jail-root defaults to /"
+      ;;
+  esac
+
+  echo ""
+
+}
+
+function usage {
+
+  echo "usage: $BASENAME <option> [<template> [arguments]]"
+  usage_summary
+  exit
+
+}
+
+function check_svn_repo {
+
+  # check a svn repository URL
+  # usage: set_svn_repo <repository>
+
+  if [ ! -z "$1" ]; then
+    if echo $1 | grep -q -v -e "^svn://"; then
+      if echo $1 | grep -q -v -e "^svn+ssh://"; then
+        if echo $1 | grep -q -v -e "^file://"; then
+          echo $BASENAME: invalid repository URL $1
+          return 1
+        fi
+      fi
+    fi
+  else
+    echo $BASENAME: no repository defined
+    return 1
+  fi
+
+}
+
+function import_export_templates {
+
+  # import from or export to $TEMPLATE_FOLDER in a svn repository
+  # usage: template_export <import|export> <repository>
+
+  local templates templates_folder basedir repository mode preposition
+
+  if [ "$?" != 0 ]; then
+    usage
+    exit 1
+  elif ! use_svn; then
+    echo $BASENAME: simplepkg not configured to use svn
+    exit 1
+  fi
+
+  templates_folder="$TEMPLATE_FOLDER"
+  templates="`basename $TEMPLATE_FOLDER`"
+  basedir="`dirname $templates_folder`"
+  mode="$1"
+  repository="$2"
+  preposition="from"
+
+  check_svn_repo $repository
+
+  if [ ! -z "$2" ]; then
+
+    if [ ! -d "$templates_folder/.svn" ]; then
+
+      cd $basedir
+
+      if [ "$mode" == "export" ]; then
+        preposition="to"
+        echo Exporting templates to $repository...
+        svn import $templates/ $repository/ -m "initial import"
+        if [ "$?" != "0" ]; then
+          echo $BASENAME: export failed
+          exit 1
+        fi
+      fi
+
+      if [ -d "templates" ]; then
+        mv $templates $templates.old
+      fi
+
+      echo Checking out templates from $repository...
+      svn checkout $repository $templates
+
+      if [ "$?" == "0" ]; then
+        rm -rf $templates.old
+      else
+        rm -rf $templates
+        mv $templates.old $templates
+        echo $BASENAME: $mode failed
+        exit 1
+      fi
+
+    else
+      echo "$BASENAME: $templates_folder seens to be already $mode""ed $preposition $repository"
+      exit 1
+    fi
+
+  fi
+
+}
+
+function template_create {
+
+  # create a new template
+
+  local template_base info_commit orig_template list
+
+  if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
+
+    echo Creating template `basename $TEMPLATE_BASE`...
+
+    if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then
+      cd `dirname $TEMPLATE_BASE`
+      svn mkdir `dirname $TEMPLATE_BASE`
+    else
+      mkdir -p `dirname $TEMPLATE_BASE`
+    fi
+
+  else
+    echo $BASENAME: template `basename $TEMPLATE_BASE` already exists
+    exit 1
+  fi
+
+  touch $TEMPLATE_BASE.perms
+  touch $TEMPLATE_BASE.template
+
+  if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then
+
+    cd `dirname $TEMPLATE_BASE`
+
+    if ! svn_check $TEMPLATE_BASE.d; then
+      svn mkdir $TEMPLATE_BASE.d
+      info_commit="yes"
+    else
+      mkdir -p $TEMPLATE_BASE.d
+    fi
+
+    if ! svn_check $TEMPLATE_BASE.s; then
+      svn mkdir $TEMPLATE_BASE.s
+      info_commit="yes"
+    else
+      mkdir -p $TEMPLATE_BASE.s
+    fi
+
+    if ! svn_check $TEMPLATE_BASE.template; then
+      svn add $TEMPLATE_BASE.template
+      info_commit="yes"
+    fi
+
+    if ! svn_check $TEMPLATE_BASE.perms; then
+      svn add $TEMPLATE_BASE.perms
+      info_commit="yes"
+    fi
+
+  elif use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then
+
+    mkdir $TEMPLATE_BASE.{d,s}
+    cd $TEMPLATE_FOLDER
+    svn add `basename $TEMPLATE_BASE`
+    info_commit="yes"
+
+  else
+    mkdir $TEMPLATE_BASE.{d,s}
+  fi
+
+  if [ -d "/$ROOT" ]; then
+    template_update
+  elif [ ! -z "$ROOT" ]; then
+
+    # copy from an existing template
+
+    if [ -d "$TEMPLATE_FOLDER/$ROOT" ]; then
+      orig_template="$TEMPLATE_FOLDER/$ROOT"
+    elif [ -d "$BASE_CONF/templates/$ROOT" ]; then
+      orig_template="$BASE_CONF/templates/$ROOT"
+    elif [ -d "$BASE_CONF/defaults/templates/$ROOT" ]; then
+      orig_template="$BASE_CONF/defaults/templates/$ROOT"
+    else
+      return 1
+    fi
+
+    if [ -f "$orig_template/$ROOT.perms" ]; then
+      cat $orig_template/$ROOT.perms > $TEMPLATE_BASE.perms
+    fi
+
+    if [ -f "$orig_template/$ROOT.template" ]; then
+      cat $orig_template/$ROOT.template > $TEMPLATE_BASE.template
+    fi
+      
+    if use_svn && [ -d "$orig_template/.svn" ]; then
+
+      cd `dirname $TEMPLATE_BASE`
+
+      list="`ls $orig_template/$ROOT.d/ 2> /dev/null`"
+      if [ ! -z "$list" ]; then
+        echo Copying files to the new template...
+        rsync -av --exclude=.svn $orig_template/$ROOT.d/ $TEMPLATE_BASE.d/
+        svn add `basename $TEMPLATE_BASE`.d/*
+        info_commit="yes"
+      fi
+
+      list="`ls $orig_template/$ROOT.s/ 2> /dev/null`"
+      if [ ! -z "$list" ]; then
+        echo Copying scripts to the new template...
+        rsync -av --exclude=.svn $orig_template/$ROOT.s/ $TEMPLATE_BASE.s/
+        svn add `basename $TEMPLATE_BASE`.s/*
+        info_commit="yes"
+      fi
+
+    else
+
+      list="`ls $orig_template/$ROOT.d/ 2> /dev/null`"
+      if [ ! -z "$list" ]; then
+        echo Copying files to the new template...
+        rsync -av $orig_template/$ROOT.d/ $TEMPLATE_BASE.d/
+      fi
+
+      list="`ls $orig_template/$ROOT.s/ 2> /dev/null`"
+      if [ ! -z "$list" ]; then
+        echo Copying scripts to the new template...
+        rsync -av $orig_template/$ROOT.s/ $TEMPLATE_BASE.s/
+      fi
+
+    fi
+
+  else
+    echo $BASENAME: warning: no root directory defined
+  fi
+
+  if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+    echo "Please run 'jail-commit --all' to add files under $file into the svn repository"
+  fi
+
+}
+
+function template_update {
+
+  # update the template package list
+
+  check_template_exist
+
+  if [ ! -d "$ROOT/var/log/packages" ]; then
+    echo $ROOT/var/log/packages: directory not found
+    exit 1
+  fi
+
+  echo Checking package list for template `basename $TEMPLATE_BASE`...
+
+  for package in `ls -1 $ROOT/var/log/packages/`; do
+    pack=`package_name $package`
+    if [ -f $TEMPLATE ]; then
+      if ! `grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | grep -q -e "^$pack\$"`; then
+        echo $pack >> $TEMPLATE
+        echo Added $pack # on $TEMPLATE
+      fi
+    else
+      echo $pack >> $TEMPLATE
+      echo Added $pack # on $TEMPLATE
+    fi
+  done
+
+  # check if each package from the template is installed
+  grep -v -e "^#" $TEMPLATE | cut -d : -f 1 | awk '{ print $1 }' | while read pack; do
+
+    if [ ! -z "$pack" ]; then
+      unset found
+      for candidate in `ls $ROOT/var/log/packages/$pack* 2> /dev/null`; do
+        candidate="`package_name $candidate`"
+        if [ "$pack" == "$candidate" ]; then
+          found="1"
+          break
+        fi
+      done
+      if [ "$found" != "1" ]; then
+        # remove a non-installed package from the template
+        sed "/^$pack$/d" $TEMPLATE | sed "/^$pack $/d" | sed "/^$pack:*/d" | sed "/^$pack */d" > $TEMPLATE.tmp
+        cat $TEMPLATE.tmp > $TEMPLATE
+        rm -f $TEMPLATE.tmp
+        echo Removed $pack # from $TEMPLATE
+      fi
+    fi
+
+  done
+
+  if ! svn_check $TEMPLATE_BASE.template && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then
+    cd `dirname $TEMPLATE_BASE`
+    svn add `basedir $TEMPLATE_BASE`.template
+  fi
+
+}
+
+function template_add {
+
+  # add a file in a template
+  # usage: template_add <jail-root> <file>
+
+  local info_commit cwd
+
+  if [ -z "$1" ] || [ -z "$2" ]; then
+    return 1
+  fi
+
+  check_template_exist
+
+  jail="/$1" 
+  file="$2"
+
+  if [ -a "$TEMPLATE_BASE.d/$file" ]; then
+    if [ -d "$TEMPLATE_BASE.d/$file" ]; then
+
+      echo $BASENAME: folder `slash $file` already on $TEMPLATE_BASE.d, checking for contents
+
+      cd $jail
+      for candidate in `find $file`; do
+        if [ ! -a "$TEMPLATE_BASE.d/$candidate" ]; then
+          mkdir -p $TEMPLATE_BASE.d/`dirname $candidate`
+          cp -a $jail/$candidate $TEMPLATE_BASE.d/$candidate
+          if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then
+            cwd="`pwd`"
+            cd $TEMPLATE_BASE.d
+            svn add ./$candidate
+            if [ "$?" != "0" ]; then
+              echo $BASENAME: error adding `slash $candidate` into the revision system
+            fi
+            cd $cwd
+            info_commit="yes"
+          else
+            echo Added `slash $jail/$candidate` on `slash $TEMPLATE_BASE.d/$candidate`
+          fi
+        fi
+      done
+
+      if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+        echo "Please run 'jail-commit --all' to add files under `slash $file` into the svn repository"
+      fi
+
+    else
+      echo $BASENAME: file `slash $file` already on $TEMPLATE_BASE.d
+      exit 1
+    fi
+  else
+
+    if [ -a "$jail/$file" ]; then
+
+      destination="`echo $TEMPLATE_BASE.d/$file | sed -e 's/\/$//'`"
+
+      if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then
+
+        if [ ! -d "$TEMPLATE_BASE.d/`dirname $file`/.svn" ]; then
+          mkdir -p $TEMPLATE_BASE.d/`dirname $file`/
+          svn add $TEMPLATE_BASE.d/`dirname $file`/
+        fi
+
+        cp -a $jail/$file $destination
+
+        cwd="`pwd`"
+        cd $TEMPLATE_BASE.d
+        svn add ./$file
+
+        if [ "$?" != "0" ]; then
+          echo $BASENAME: error adding `slash $candidate` into the revision system
+        else
+          if [ -z "$SILENT" ]; then
+            echo "Please run 'jail-commit --all' to add `slash $file` into the svn repository"
+          fi
+        fi
+
+        cd $cwd
+
+      else
+
+        mkdir -p $TEMPLATE_BASE.d/`dirname $file`/
+        cp -a $jail/$file $destination
+        echo Added `slash $jail/$file` on `slash $destination`
+
+      fi
+
+    else
+      echo $BASENAME: `slash $jail/$file`: file not found
+      exit 1
+    fi
+  fi
+
+}
+
+function check_template_exist {
+
+  # check if a template exists
+  # and create missing components
+
+  local components
+
+  components="template perms d s"
+
+  if [ ! -d "`dirname $TEMPLATE_BASE`" ]; then
+    echo $BASENAME: template not found
+    exit 1
+  fi
+
+  for component in $components; do
+
+    if [ ! -e "$TEMPLATE_BASE.$component" ]; then
+
+      echo "$BASENAME: template component not found: $TEMPLATE_BASE.$component; creating..."
+
+      cd `dirname $TEMPLATE_BASE`
+
+      if [ "$component" == "perms" ] || [ "$component" == "template" ]; then
+        touch $TEMPLATE_BASE.$component
+      else
+        mkdir $TEMPLATE_BASE.$component
+      fi
+
+      if use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ]; then
+        svn add $TEMPLATE_BASE.$component
+        info_commit="yes"
+      fi
+
+    elif use_svn && [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && \
+         ! svn_check $TEMPLATE_BASE.$component; then
+
+      cd `dirname $TEMPLATE_BASE`
+      svn add $TEMPLATE_BASE.$component
+      info_commit="yes"
+
+    fi
+
+  done
+
+  if [ "$info_commit" == "yes" ] && [ -z "$SILENT" ]; then
+    echo "Please run 'jail-commit --all' to add new files in the svn repository"
+  fi  
+
+}
+
+function template_delete {
+
+  # delete a file from a template
+  # usage: template_delete <file> [jail-root]
+
+  if [ -e "$TEMPLATE_BASE.d/$1" ]; then
+
+    # first try to remove the file from the template
+    if use_svn && [ -d "$TEMPLATE_BASE.d/.svn" ]; then
+      cd $TEMPLATE_BASE.d
+      svn del --force ./$1 || rm -rf ./$1
+      if [ -z "$SILENT" ]; then
+        echo "Please run 'jail-commit --all' to del $1 in the svn repository"
+      fi
+    else
+      rm -rf $TEMPLATE_BASE.d/$1
+      echo Removed $1 from $TEMPLATE_BASE.d
+    fi
+
+    # then, if requested, remove the file from the jail
+    if [ ! -z "$2" ]; then
+      if [ ! -d "$2" ]; then
+        echo $BASENAME: jail not found: $2
+      elif [ -e "$2/$1" ]; then
+        rm -rf $2/$1
+        echo Removed $1 from jail $2
+      else
+        echo $BASENAME: file not found: $2/$1
+      fi
+    fi
+
+  elif [ -e "$TEMPLATE_BASE.s/$1" ]; then
+    if use_svn && [ -d "$TEMPLATE_BASE.s/.svn" ]; then
+      cd $TEMPLATE_BASE.s
+      svn del --force ./$1 || rm -rf ./$1
+      if [ -z "$SILENT" ]; then
+        echo "Please run 'jail-commit --all' to del $1 in the svn repository"
+      fi
+    else
+      rm -rf $TEMPLATE_BASE.s/$1
+      echo Removed $1 from $TEMPLATE_BASE.s
+    fi
+  else
+    if [ ! -d "$TEMPLATE_BASE.d" ]; then
+      echo $BASENAME: template folder $TEMPLATE_BASE.d not found
+    else
+      echo $BASENAME: file $1 not found at $TEMPLATE_BASE.d
+    fi
+    exit 1
+  fi
+
+}
+
+function template_remove {
+
+  # remove a template
+  # usage: template_remove
+
+  local basedir template
+
+  basedir="`dirname $TEMPLATE_BASE`"
+  template="`basename $basedir`"
+
+  if [ ! -d "$basedir" ]; then
+    echo $BASENAME: template $template does not exist
+    exit 1
+  fi
+
+  if use_svn && [ -d "$basedir/.svn" ]; then
+    cd $TEMPLATE_FOLDER
+    svn update
+    svn del --force $template
+    if [ "$?" != "0" ]; then
+      echo $BASENAME: error deleting template $template
+    else
+      svn commit -m "deleted $template"
+      if [ "$?" != "0" ]; then
+        echo $BASENAME: error commiting to svn repository
+      fi
+    fi
+  else
+    rm -rf $basedir
+  fi
+
+}
+
+function template_list {
+
+  # list templates
+  # usage: template_list [path]
+
+  local list basedir template
+
+  if [ "$TEMPLATE_STORAGE_STYLE" != "own-folder" ]; then
+    echo "$BASENAME: option only available if TEMPLATE_STORAGE_STYLE configured as 'own-folder'"
+    return 1
+  fi
+
+  if echo $1 | grep -q "/" || [ ! -z "$1" ]; then
+
+    template="`echo $1 | cut -d "/" -f 1`"
+
+    if [ -e "$BASE_CONF/defaults/templates/$1" ]; then
+      list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
+      if [ "$?" == "0" ]; then
+        list="`echo $list | xargs`"
+        echo "In the default template $template: $list"
+      fi
+    fi
+
+    if [ -e "$TEMPLATE_FOLDER/$1" ]; then
+      list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
+      if [ "$?" == "0" ]; then
+        list="`echo $list | xargs`"
+        echo "In the custom template $template: $list"
+      fi      
+    fi
+
+  else
+
+    list="`ls $BASE_CONF/defaults/templates/$1 2> /dev/null`"
+    if [ "$?" == "0" ]; then
+      list="`echo $list | xargs`"
+      echo "Default templates: $list"
+    fi
+
+    list="`ls $TEMPLATE_FOLDER/$1 2> /dev/null`"
+    if [ "$?" == "0" ]; then
+      list="`echo $list | xargs`"
+      echo "Custom templates: $list"
+    fi
+
+  fi
+
+}
+
+function template_post_install_edit {
+
+  # add or edit a post-installation script
+  # usage: template_post_install_edit <script-name>
+
+  if [ -z "$1" ]; then
+    echo $BASENAME: no template specified
+    exit 1
+  elif echo $1 | grep -q "/"; then
+    echo $BASENAME: error: invalid script name $1
+  fi
+
+  if [ -f "$TEMPLATE_BASE.s/$1" ]; then
+    sha1sum="`sha1sum $TEMPLATE_BASE.s/$1`"
+    if [ ! -z "$EDITOR" ]; then
+      $EDITOR $TEMPLATE_BASE.s/$1
+    else
+      vi $TEMPLATE_BASE.s/$1
+    fi
+    if [ "$sha1sum" != "`sha1sum $TEMPLATE_BASE.s/$1`" ] && \
+       [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && [ -z "$SILENT" ]; then
+      echo "Please run 'jail-commit --all' to send changes to the repository"
+    fi    
+  else
+
+    if [ -e "$TEMPLATE_BASE.s/$1" ]; then
+
+      echo $BASENAME: file $TEMPLATE_BASE.s/$1 not a regular file
+
+    elif [ -d "$TEMPLATE_BASE.s" ]; then
+
+      touch $TEMPLATE_BASE.s/$1
+      chmod +x $TEMPLATE_BASE.s/$1
+
+      if [ -d "$TEMPLATE_BASE.s/.svn" ]; then
+        cd $TEMPLATE_BASE.s
+        svn add $1
+        if [ -z "$SILENT" ]; then
+          echo "Please run 'jail-commit --all' to send the script to the repository"
+        fi
+      fi
+
+      echo "$BASENAME: script created; run templatepkg -p `basename $TEMPLATE_BASE` $1 again to edit it"
+
+    else
+      echo $BASENAME: folder not found: $TEMPLATE_BASE.s
+    fi
+
+  fi
+
+}
+
+function template_edit {
+
+  # edit a template package list
+  # usage: template_edit
+
+  if [ -f "$TEMPLATE_BASE.template" ]; then
+    sha1sum="`sha1sum $TEMPLATE_BASE.template`"
+    if [ ! -z "$EDITOR" ]; then
+      $EDITOR $TEMPLATE_BASE.template
+    else
+      vi $TEMPLATE_BASE.template
+    fi
+    if [ "$sha1sum" != "`sha1sum $TEMPLATE_BASE.template`" ] && \
+       [ -d "`dirname $TEMPLATE_BASE`/.svn" ] && [ -z "$SILENT" ]; then
+      echo "Please run 'jail-commit --all' to send changes to the repository"
+    fi
+  elif [ -e "$TEMPLATE_BASE.template" ]; then
+    echo $BASENAME: file $TEMPLATE_BASE.template not a regular file
+  else
+    echo $BASENAME: file not found: $TEMPLATE_BASE.template
+  fi
+
+}
+
+function require {
+
+  # requires a string
+  # usage: require [string]
+
+  if [ -z "$1" ]; then
+    usage
+  fi
+
+}
+
+function setroot {
+
+  # set ROOT variable
+  # usage: setroot <value1> <value2>
+  
+  if [ -z "$1" ]; then
+    ROOT="/"
+  else
+    ROOT="$1"
+  fi
+
+}
+
+function create_doinst {
+
+  # create a doinst.sh from a template.perms file
+  # usage: create_doinst <doinst-path>
+
+  rm -f $1/doinst.sh
+
+  if [ -s "$TEMPLATE_BASE.perms" ]; then
+    echo Creating doinst.sh...
+    cat $TEMPLATE_BASE.perms | while read entry; do
+      file="`echo $entry | cut -d ";" -f 1`"
+      if [ -e "$TEMPLATE_BASE.d/$file" ]; then
+        owner="`echo $entry | cut -d ";" -f 2`"
+        group="`echo $entry | cut -d ";" -f 3`"
+        perms="`echo $entry | cut -d ";" -f 4`"
+        echo "( chmod $perms /$file )" >> $1/doinst.sh
+        echo "( chown $owner:$group /$file )" >> $1/doinst.sh
+      fi
+    done
+  fi
+
+}
+
+function package_template {
+
+  # make a package from a template
+  # usage: package_template [version] [build] [arch]
+
+  local template version build arch
+
+  template="`basename $TEMPLATE_BASE`"
+
+  if [ ! -d "$TEMPLATE_BASE.d" ]; then
+    $BASENAME: folder not found: $TEMPLATE.base.d
+    return 1
+  fi
+
+  echo Buiding package for template $template...
+
+  if [ -z "$1" ]; then
+    version="1"
+  else
+    version="$1"
+  fi
+
+  if [ -z "$2" ]; then
+    build="1"
+  else
+    build="$2"
+  fi
+
+  if [ -z "$3" ]; then
+    arch="noarch"
+  else
+    arch="$3"
+  fi
+
+  TMP=${TMP:=/tmp}
+  rm -rf $TMP/templatepkg
+  mkdir -p $TMP/templatepkg
+
+  rsync -av --exclude=.svn $TEMPLATE_BASE.d/ $TMP/templatepkg/
+  mkdir $TMP/templatepkg/install
+  create_doinst $TMP/templatepkg/install
+
+  echo "template-$template: template-$template" > $TMP/templatepkg/install/slack-desc
+  echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
+  echo "template-$template: simplepkg template $template" >> $TMP/templatepkg/install/slack-desc
+
+  for ((n=1;n<=8;n++)); do
+    echo "template-$template: " >> $TMP/templatepkg/install/slack-desc
+  done
+
+  cd $TMP/templatepkg
+
+  makepkg -c n -l y $TMP/template-$template-$version-noarch-$build.tgz
+
+  cd $TMP
+  rm -rf templatepkg
+
+}
+
+# -----------------------------------------------------
+#                       main
+# -----------------------------------------------------
+
+if [ ! -z "$2" ]; then
+  search_template $2 --new
+fi
+
+TEMPLATE="$TEMPLATE_BASE.template"
+
+if [ "$1" == "-u" ] || [ "$1" == "--update" ]; then
+
+  require $2
+  setroot $3
+  template_update
+
+elif [ "$1" == "-c" ] || [ "$1" == "--create" ]; then
+
+  require $2
+  setroot $3
+  template_create
+
+elif [ "$1" == "-a" ] || [ "$1" == "--add" ]; then
+
+  require $2
+
+  if [ -z "$3" ]; then
+    usage
+  else
+    setroot $4
+  fi
+
+  template_add $ROOT $3
+
+elif [ "$1" == "-d" ] || [ "$1" == "--delete" ]; then
+
+  require $2
+
+  if [ -z "$3" ]; then
+    usage
+  else
+    template_delete $3 $4
+  fi
+
+elif [ "$1" == "-s" ] || [ "$1" == "--sync" ]; then
+
+  if use_svn && [ -d "$TEMPLATE_FOLDER/.svn" ]; then
+    ( cd $TEMPLATE_FOLDER && svn update )
+    true
+  fi
+
+elif [ "$1" == "-e" ] || [ "$1" == "--export" ]; then
+  require $2 
+  import_export_templates export $2
+
+elif [ "$1" == "-i" ] || [ "$1" == "--import" ]; then
+
+  require $2
+  import_export_templates import $2
+
+elif [ "$1" == "-r" ] || [ "$1" == "--remove" ]; then
+
+  require $2
+  template_remove
+
+elif [ "$1" == "-l" ] || [ "$1" == "--list" ]; then
+
+  template_list $2
+
+elif [ "$1" == "-b" ] || [ "$1" == "--batch-edit" ]; then
+
+  require $3
+  template_post_install_edit $3
+
+elif [ "$1" == "-t" ] || [ "$1" == "--template-edit" ]; then
+
+  require $2
+  template_edit
+
+elif [ "$1" == "-p" ] || [ "$1" == "--pack" ]; then
+
+  require $2
+  shift ; shift
+  package_template $*
+
+elif [ "$1" == "-h" ] || [ "$1" == "--help" ]; then
+
+  display_help $2 
+
+else
+  usage
+fi
+
diff --git a/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.csh b/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.csh
new file mode 100755 (executable)
index 0000000..94e8a92
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/csh
+# Set the system locale.  (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+#   locale -a
+
+# en_US is the Slackware default locale:
+setenv LANG pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968.  These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#setenv LANG C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly.  In those cases, you can set LANG=C before
+# starting them.  Still, I'd avoid UTF unless you actually need it.
+#setenv LANG en_US.UTF-8
+
+# Another option for en_US:
+#setenv LANG en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places.  Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+setenv LC_COLLATE C
+
+# End of /etc/profile.d/lang.csh
+
diff --git a/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.sh b/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.sh
new file mode 100755 (executable)
index 0000000..c9cde20
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/sh
+# Set the system locale.  (no, we don't have a menu for this ;-)
+# For a list of locales which are supported by this machine, type:
+#   locale -a
+
+# en_US is the Slackware default locale:
+export LANG=pt_BR
+
+# 'C' is the old Slackware (and UNIX) default, which is 127-bit
+# ASCII with a charmap setting of ANSI_X3.4-1968.  These days,
+# it's better to use en_US or another modern $LANG setting to
+# support extended character sets.
+#export LANG=C
+
+# There is also support for UTF-8 locales, but be aware that
+# some programs are not yet able to handle UTF-8 and will fail to
+# run properly.  In those cases, you can set LANG=C before
+# starting them.  Still, I'd avoid UTF unless you actually need it.
+#export LANG=en_US.UTF-8
+
+# Another option for en_US:
+#export LANG=en_US.ISO8859-1
+
+# One side effect of the newer locales is that the sort order
+# is no longer according to ASCII values, so the sort order will
+# change in many places.  Since this isn't usually expected and
+# can break scripts, we'll stick with traditional ASCII sorting.
+# If you'd prefer the sort algorithm that goes with your $LANG
+# setting, comment this out.
+export LC_COLLATE=C
+
+# End of /etc/profile.d/lang.sh
+
diff --git a/tags/0.5/templates/openoffice/openoffice.d/opt/OpenOffice.org b/tags/0.5/templates/openoffice/openoffice.d/opt/OpenOffice.org
new file mode 120000 (symlink)
index 0000000..7146afd
--- /dev/null
@@ -0,0 +1 @@
+../opt2/OpenOffice.org
\ No newline at end of file
diff --git a/tags/0.5/templates/openoffice/openoffice.perms b/tags/0.5/templates/openoffice/openoffice.perms
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tags/0.5/templates/openoffice/openoffice.s/post-install.sh b/tags/0.5/templates/openoffice/openoffice.s/post-install.sh
new file mode 100755 (executable)
index 0000000..086c7a4
--- /dev/null
@@ -0,0 +1,22 @@
+#!/bin/bash
+
+if [ -z "$2" ]; then
+  echo "usage: `basename $0` <jail-root> <jail-name>"
+  exit 1
+elif [ ! -d "$1/$2" ]; then
+  echo "folder $1/$2 does not exist"
+  exit 1
+fi
+
+echo running post-installation script for $1/$2 jail...
+
+# copia de arquivos
+cp -p /etc/passwd $1/$2/etc/
+cp -p /etc/group $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+
+# pos-instalacao
+mount -t proc proc $1/$2/proc
+chroot $1/$2 /sbin/ldconfig
+cd $1/$2 && exec ./var/log/scripts/glibc-zoneinfo-*
+umount $1/$2/proc
diff --git a/tags/0.5/templates/openoffice/openoffice.template b/tags/0.5/templates/openoffice/openoffice.template
new file mode 100644 (file)
index 0000000..ef3ae52
--- /dev/null
@@ -0,0 +1,60 @@
+aaa_base: ADD
+aaa_elflibs: ADD
+acpid: REC
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cups: REC
+cxxlibs: ADD
+devs: ADD
+etc: ADD
+a2ps
+bc
+enscript
+espgs
+etc
+findutils
+gawk
+gettext
+getty-ps
+gimp-print
+glibc
+glibc-i18n
+glibc-profile
+glibc-solibs
+glibc-zoneinfo
+grep
+gzip
+hpijs
+infozip
+ispell
+kbd
+kde-i18n-pt_BR
+kdebase
+kdelibs
+koffice-i18n-pt_BR
+less
+libart_lgpl
+libidn
+libmng
+pkgtools
+qt
+sed
+shadow
+sudo
+sysklogd
+sysvinit
+utempter
+util-linux
+x11
+x11-devel
+x11-fonts-100dpi
+x11-fonts-cyrillic
+x11-fonts-misc
+x11-fonts-scale
+x11-xdmx
+x11-xnest
+x11-xvfb
+openoffice-chroot
+openssl
diff --git a/tags/0.5/templates/slackware/slackware.perms b/tags/0.5/templates/slackware/slackware.perms
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tags/0.5/templates/slackware/slackware.template b/tags/0.5/templates/slackware/slackware.template
new file mode 100644 (file)
index 0000000..c3590c1
--- /dev/null
@@ -0,0 +1,566 @@
+# This is a Slackware Installation Tagfile.
+# 
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+acpid: REC
+apmd: REC
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cpio: ADD
+cups: REC
+cxxlibs: ADD
+dcron: ADD
+devs: ADD
+e2fsprogs: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+floppy: ADD
+gawk: ADD
+genpower: OPT
+gettext: REC
+getty-ps: OPT
+glibc-solibs: ADD
+glibc-zoneinfo: ADD
+gpm: REC
+grep: ADD
+gzip: ADD
+hdparm: ADD
+hotplug: ADD
+infozip: ADD
+isapnptools: OPT
+jfsutils: OPT
+kbd: REC
+kernel-ide: REC
+kernel-modules: ADD
+less: ADD
+lilo: ADD
+loadlin: REC
+logrotate: ADD
+minicom: REC
+mkinitrd: REC
+module-init-tools: ADD
+openssl-solibs: ADD
+pciutils: OPT
+pcmcia-cs: REC
+pkgtools: ADD
+procps: ADD
+reiserfsprogs: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+smartmontools: ADD
+sysklogd: ADD
+syslinux: ADD
+sysvinit: ADD
+tar: ADD
+tcsh: REC
+udev: ADD
+umsdos-progs: ADD
+usbutils: ADD
+utempter: REC
+util-linux: ADD
+xfsprogs: OPT
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+a2ps: REC
+acct: OPT
+alsa-utils: REC
+amp: OPT
+ash: OPT
+at: OPT
+aumix: OPT
+bc: OPT
+bpe: OPT
+cdparanoia: OPT
+cdrdao: OPT
+cdrtools: OPT
+diffutils: REC
+dvd+rw-tools: OPT
+enscript: OPT
+espgs: REC
+flac: OPT
+gimp-print: OPT
+groff: ADD
+gnu-gs-fonts: REC
+hpijs: REC
+ispell: OPT
+jed: OPT
+joe: OPT
+jove: OPT
+ksh93: OPT
+lsof: OPT
+lvm: OPT
+madplay: OPT
+man: ADD
+man-pages: REC
+mc: OPT
+mdadm: OPT
+most: OPT
+mpg321: OPT
+mt-st: OPT
+mysql: OPT
+normalize: OPT
+quota: OPT
+raidtools: OPT
+rexima: REC
+rpm: OPT
+rzip: OPT
+sc: OPT
+screen: OPT
+seejpeg: REC
+sgml-tools: REC
+sox: REC
+sudo: OPT
+texinfo: REC
+vim: OPT
+vorbis-tools: OPT
+workbone: OPT
+zsh: OPT
+
+autoconf: OPT
+automake: OPT
+bin86: ADD
+binutils: ADD
+bison: ADD
+byacc: OPT
+ccache: OPT
+clisp: OPT
+cscope: OPT
+cvs: REC
+distcc: OPT
+doxygen: OPT
+flex: ADD
+gcc: ADD
+gcc-g++: REC
+gcc-g77: OPT
+gcc-gnat: OPT
+gcc-java: OPT
+gcc-objc: OPT
+gdb: REC
+gettext-tools: REC
+guile: OPT
+indent: OPT
+kernel-headers: ADD
+libtool: OPT
+m4: REC
+make: ADD
+nasm: OPT
+oprofile: OPT
+p2c: OPT
+perl: REC
+pkgconfig: REC
+pmake: REC
+python: OPT
+python-demo: OPT
+python-tools: OPT
+rcs: OPT
+strace: REC
+subversion: OPT
+# Tagfile for emacs series
+emacs: ADD
+emacs-misc: REC
+emacs-lisp: OPT
+emacs-leim: OPT
+emacs-nox: OPT
+emacs-info: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+linux-faqs: ADD
+linux-howtos: ADD
+kernel-source: REC
+aalib: REC
+alsa-driver: ADD
+alsa-lib: ADD
+alsa-oss: OPT
+arts: ADD
+aspell: REC
+aspell-en: REC
+atk: REC
+audiofile: REC
+db3: REC
+db31: REC
+db4: REC
+esound: REC
+expat: REC
+fribidi: REC
+gdbm: REC
+gdk-pixbuf: REC
+glib: REC
+glib2: REC
+glibc: REC
+glibc-i18n: OPT
+glibc-profile: OPT
+glut: REC
+gmp: REC
+gnet: REC
+gtk+: REC
+gtk+2: REC
+imlib: REC
+jre: OPT
+lcms: REC
+lesstif: REC
+libao: REC
+libart_lgpl: REC
+libcaca: OPT
+libexif: REC
+libglade: REC
+libgsf: REC
+libgtkhtml: REC
+libid3tag: REC
+libidl: REC
+libidn: REC
+libieee1284: REC
+libjpeg: REC
+libmad: REC
+libmikmod: REC
+libmng: REC
+libogg: REC
+libpng: REC
+librsvg: REC
+libtermcap: REC
+libtiff: REC
+libungif: REC
+libusb: REC
+libvorbis: REC
+libwmf: REC
+libwmf-docs: OPT
+libwpd: REC
+libxml2: REC
+libxslt: REC
+mhash: REC
+mpeg_lib: OPT
+ncurses: REC
+netpbm: REC
+pango: REC
+pcre: REC
+pilot-link: REC
+popt: REC
+readline: REC
+sdl: REC
+shared-mime-info: REC
+slang: REC
+startup-notification: ADD
+svgalib: REC
+t1lib: REC
+taglib: REC
+wv2: REC
+xaw3d: REC
+zlib: REC
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# 
+#
+apache: OPT
+autofs: OPT
+bind: REC
+bitchx: OPT
+bootp: OPT
+curl: OPT
+cyrus-sasl: REC
+dhcp: OPT
+dhcpcd: REC
+dnsmasq: OPT
+elm: OPT
+epic4: OPT
+fetchmail: OPT
+getmail: REC
+gnupg: OPT
+htdig: OPT
+imapd: OPT
+inetd: REC
+iproute2: OPT
+iptables: ADD
+iptraf: OPT
+irssi: OPT
+lftp: OPT
+links: OPT
+lynx: OPT
+metamail: REC
+mod_ssl: OPT
+mutt: OPT
+nail: REC
+nc: OPT
+ncftp: OPT
+netatalk: OPT
+netpipes: OPT
+netwatch: OPT
+newspost: OPT
+nfs-utils: OPT
+nmap: OPT
+nn: OPT
+ntp: OPT
+openssh: REC
+openssl: REC
+php: OPT
+pidentd: REC
+pine: OPT
+popa3d: REC
+portmap: REC
+ppp: OPT
+procmail: REC
+proftpd: OPT
+rdist: OPT
+rp-pppoe: OPT
+rsync: OPT
+samba: OPT
+sendmail-cf: OPT
+sendmail: REC
+slrn: OPT
+stunnel: OPT
+tcpdump: REC
+tcpip: REC
+tin: OPT
+traceroute: OPT
+trn: OPT
+uucp: OPT
+vsftpd: REC
+wget: OPT
+whois: OPT
+wireless-tools: OPT
+yptools: OPT
+ytalk: OPT
+tetex: ADD
+tetex-doc: REC
+xfig: OPT
+transfig: OPT
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+expect: OPT
+hfsutils: OPT
+tcl:  ADD
+tk:   REC
+tclx: REC
+tix: OPT
+x11: ADD
+x11-devel: ADD
+x11-docs: REC
+x11-docs-html: OPT
+x11-fonts-100dpi: OPT
+x11-fonts-cyrillic: OPT
+x11-fonts-misc: ADD
+x11-fonts-scale: ADD
+x11-xdmx: OPT
+x11-xnest: OPT
+x11-xvfb: OPT
+abiword: OPT
+blackbox: OPT
+fluxbox: OPT
+fvwm: REC
+gaim: OPT
+gftp: OPT
+gimp: REC
+gimp-help-2: REC
+gkrellm: OPT
+gnuchess: REC
+gnuplot: OPT
+gucharmap: OPT
+gv: REC
+gxine: OPT
+imagemagick: REC
+mozilla: REC
+mozilla-firefox: REC
+mozilla-thunderbird: REC
+pan: REC
+rxvt: REC
+sane: OPT
+seyon: OPT
+windowmaker: REC
+x3270: OPT
+xchat: OPT
+xfce: OPT
+xfm: OPT
+xfractint: OPT
+xgames: REC
+xine-lib: REC
+xine-ui: REC
+xpaint: OPT
+xpdf: OPT
+xmms: OPT
+xsane: OPT
+xlockmore: REC
+xscreensaver: REC
+xv: REC
+xvim: REC
+xxgdb: REC
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+bsd-games: OPT
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/httpd.conf b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/httpd.conf
new file mode 100644 (file)
index 0000000..7b7115d
--- /dev/null
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file.  It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do.  They're here only as hints or reminders.  If you are unsure
+# consult the online docs. You have been warned.  
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+#  1. Directives that control the operation of the Apache server process as a
+#     whole (the 'global environment').
+#  2. Directives that define the parameters of the 'main' or 'default' server,
+#     which responds to requests that aren't handled by a virtual host.
+#     These directives also provide default values for the settings
+#     of all virtual hosts.
+#  3. Settings for virtual hosts, which allow Web requests to be sent to
+#     different IP addresses or hostnames and have them handled by the
+#     same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path.  If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone.  Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE!  If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename. 
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this.  But if yours does (you'll know because
+# this file will be  created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this 
+# file, specified by the -f command line option), srm.conf, and access.conf 
+# in that order.  The latter two files are now distributed empty, as it is 
+# recommended that all directives be kept in a single file for simplicity.  
+# The commented-out values below are the built-in defaults.  You can have the 
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation.  Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request.  If there are fewer than MinSpareServers, it creates
+# a new spare.  If there are more than MaxSpareServers, some of the
+# spares die off.  The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies.  The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources.  On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+#       request per connection. For example, if a child process handles
+#       an initial request and 10 subsequent "keptalive" requests, it
+#       would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important.  Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module         libexec/apache/mod_env.so
+LoadModule define_module      libexec/apache/mod_define.so
+LoadModule config_log_module  libexec/apache/mod_log_config.so
+LoadModule mime_magic_module  libexec/apache/mod_mime_magic.so
+LoadModule mime_module        libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module      libexec/apache/mod_status.so
+#LoadModule info_module        libexec/apache/mod_info.so
+LoadModule includes_module    libexec/apache/mod_include.so
+LoadModule autoindex_module   libexec/apache/mod_autoindex.so
+LoadModule dir_module         libexec/apache/mod_dir.so
+LoadModule cgi_module         libexec/apache/mod_cgi.so
+#LoadModule asis_module        libexec/apache/mod_asis.so
+#LoadModule imap_module        libexec/apache/mod_imap.so
+#LoadModule action_module      libexec/apache/mod_actions.so
+#LoadModule speling_module     libexec/apache/mod_speling.so
+#LoadModule userdir_module     libexec/apache/mod_userdir.so
+LoadModule alias_module       libexec/apache/mod_alias.so
+LoadModule rewrite_module     libexec/apache/mod_rewrite.so
+LoadModule access_module      libexec/apache/mod_access.so
+LoadModule auth_module        libexec/apache/mod_auth.so
+LoadModule anon_auth_module   libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module    libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module      libexec/apache/mod_digest.so
+LoadModule proxy_module       libexec/apache/libproxy.so
+LoadModule cern_meta_module   libexec/apache/mod_cern_meta.so
+LoadModule expires_module     libexec/apache/mod_expires.so
+LoadModule headers_module     libexec/apache/mod_headers.so
+#LoadModule usertrack_module   libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module   libexec/apache/mod_unique_id.so
+LoadModule setenvif_module    libexec/apache/mod_setenvif.so
+
+#  Reconstruction of the complete module list from all available modules
+#  (static and shared ones) to achieve correct module execution order.
+#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition.  These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.  
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+#  . On HPUX you may not be able to use shared memory as nobody, and the
+#    suggested workaround is to create a user www and use that user.
+#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+#  when the value of (unsigned)Group is above 60000; 
+#  don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed.  This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you 
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your 
+# machine always knows itself by this address. If you use Apache strictly for 
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories). 
+#
+# First, we configure the "default" to be a very restrictive set of 
+# permissions.  
+#
+<Directory />
+    Options FollowSymLinks
+    AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+    Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo", 
+# "AuthConfig", and "Limit"
+#
+    AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+    Order allow,deny
+    Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+    UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories.  The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+#    AllowOverride FileInfo AuthConfig Limit
+#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+#    <Limit GET POST OPTIONS PROPFIND>
+#        Order allow,deny
+#        Allow from all
+#    </Limit>
+#    <LimitExcept GET POST OPTIONS PROPFIND>
+#        Order deny,allow
+#        Deny from all
+#    </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index.  Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+    DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients.  Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons.  Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files.  If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+    Order allow,deny
+    Deny from all
+    Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name.  With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible.  This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+    TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value.  If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type.  The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+    MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here.  If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here.  Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of:  On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType       text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType  On=InOut text/* message/* multipart/*
+# EBCDICConvertByType  On=In    application/x-www-form-urlencoded
+# EBCDICConvertByType  On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is 
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+    #
+    # Note that if you include a trailing / on fakename then the server will
+    # require it to be present in the URL.  So "/icons" isn't aliased in this
+    # example, only "/icons/".  If the fakename is slash-terminated, then the 
+    # realname must also be slash terminated, and if the fakename omits the 
+    # trailing slash, the realname must also omit it.
+    #
+    Alias /icons/ "/var/www/icons/"
+
+    <Directory "/var/www/icons">
+        Options Indexes MultiViews
+        AllowOverride None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+    # This Alias will project the on-line documentation tree under /manual/
+    # even if you change the DocumentRoot. Comment it if you don't want to 
+    # provide access to the on-line documentation.
+    #
+    Alias /manual/ "/var/www/htdocs/manual/"
+
+    <Directory "/var/www/htdocs/manual">
+        Options Indexes FollowSymlinks MultiViews
+        AllowOverride None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+    #
+    # ScriptAlias: This controls which directories contain server scripts.
+    # ScriptAliases are essentially the same as Aliases, except that
+    # documents in the realname directory are treated as applications and
+    # run by the server when requested rather than as documents sent to the client.
+    # The same rules about trailing "/" apply to ScriptAlias directives as to
+    # Alias.
+    #
+    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+    #
+    # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+    # CGI directory exists, if you have that configured.
+    #
+    <Directory "/var/www/cgi-bin">
+        AllowOverride None
+        Options None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+    #
+    # FancyIndexing is whether you want fancy directory indexing or standard
+    #
+    IndexOptions FancyIndexing
+
+    #
+    # AddIcon* directives tell the server which icon to show for different
+    # files or filename extensions.  These are only displayed for
+    # FancyIndexed directories.
+    #
+    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+    AddIconByType (TXT,/icons/text.gif) text/*
+    AddIconByType (IMG,/icons/image2.gif) image/*
+    AddIconByType (SND,/icons/sound2.gif) audio/*
+    AddIconByType (VID,/icons/movie.gif) video/*
+
+    AddIcon /icons/binary.gif .bin .exe
+    AddIcon /icons/binhex.gif .hqx
+    AddIcon /icons/tar.gif .tar
+    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+    AddIcon /icons/a.gif .ps .ai .eps
+    AddIcon /icons/layout.gif .html .shtml .htm .pdf
+    AddIcon /icons/text.gif .txt
+    AddIcon /icons/c.gif .c
+    AddIcon /icons/p.gif .pl .py
+    AddIcon /icons/f.gif .for
+    AddIcon /icons/dvi.gif .dvi
+    AddIcon /icons/uuencoded.gif .uu
+    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+    AddIcon /icons/tex.gif .tex
+    AddIcon /icons/bomb.gif core
+
+    AddIcon /icons/back.gif ..
+    AddIcon /icons/hand.right.gif README
+    AddIcon /icons/folder.gif ^^DIRECTORY^^
+    AddIcon /icons/blank.gif ^^BLANKICON^^
+
+    #
+    # DefaultIcon is which icon to show for files which do not have an icon
+    # explicitly set.
+    #
+    DefaultIcon /icons/unknown.gif
+
+    #
+    # AddDescription allows you to place a short description after a file in
+    # server-generated indexes.  These are only displayed for FancyIndexed
+    # directories.
+    # Format: AddDescription "description" filename
+    #
+    #AddDescription "GZIP compressed document" .gz
+    #AddDescription "tar archive" .tar
+    #AddDescription "GZIP compressed tar archive" .tgz
+
+    #
+    # ReadmeName is the name of the README file the server will look for by
+    # default, and append to directory listings.
+    #
+    # HeaderName is the name of a file which should be prepended to
+    # directory indexes. 
+    #
+    ReadmeName README.html
+    HeaderName HEADER.html
+
+    #
+    # IndexIgnore is a set of filenames which directory indexing should ignore
+    # and not include in the listing.  Shell-style wildcarding is permitted.
+    #
+    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+    #
+    # AddLanguage allows you to specify the language of a document. You can
+    # then use content negotiation to give a browser a file in a language
+    # it can understand.  
+    #
+    # Note 1: The suffix does not have to be the same as the language 
+    # keyword --- those with documents in Polish (whose net-standard 
+    # language code is pl) may wish to use "AddLanguage pl .po" to 
+    # avoid the ambiguity with the common suffix for perl scripts.
+    #
+    # Note 2: The example entries below illustrate that in quite
+    # some cases the two character 'Language' abbreviation is not
+    # identical to the two character 'Country' code for its country,
+    # E.g. 'Danmark/dk' versus 'Danish/da'.
+    #
+    # Note 3: In the case of 'ltz' we violate the RFC by using a three char 
+    # specifier. But there is 'work in progress' to fix this and get 
+    # the reference data for rfc1766 cleaned up.
+    #
+    # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+    # French (fr) - German (de) - Greek-Modern (el)
+    # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+    # Portugese (pt) - Luxembourgeois* (ltz)
+    # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+    # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+    # Russian (ru)
+    #
+    AddLanguage da .dk
+    AddLanguage nl .nl
+    AddLanguage en .en
+    AddLanguage et .ee
+    AddLanguage fr .fr
+    AddLanguage de .de
+    AddLanguage el .el
+    AddLanguage he .he
+    AddCharset ISO-8859-8 .iso8859-8
+    AddLanguage it .it
+    AddLanguage ja .ja
+    AddCharset ISO-2022-JP .jis
+    AddLanguage kr .kr
+    AddCharset ISO-2022-KR .iso-kr
+    AddLanguage nn .nn
+    AddLanguage no .no
+    AddLanguage pl .po
+    AddCharset ISO-8859-2 .iso-pl
+    AddLanguage pt .pt
+    AddLanguage pt-br .pt-br
+    AddLanguage ltz .lu
+    AddLanguage ca .ca
+    AddLanguage es .es
+    AddLanguage sv .sv
+    AddLanguage cs .cz .cs
+    AddLanguage ru .ru
+    AddLanguage zh-TW .zh-tw
+    AddCharset Big5         .Big5    .big5
+    AddCharset WINDOWS-1251 .cp-1251
+    AddCharset CP866        .cp866
+    AddCharset ISO-8859-5   .iso-ru
+    AddCharset KOI8-R       .koi8-r
+    AddCharset UCS-2        .ucs2
+    AddCharset UCS-4        .ucs4
+    AddCharset UTF-8        .utf8
+
+    # LanguagePriority allows you to give precedence to some languages
+    # in case of a tie during content negotiation.
+    #
+    # Just list the languages in decreasing order of preference. We have
+    # more or less alphabetized them here. You probably want to change this.
+    #
+    <IfModule mod_negotiation.c>
+        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+    </IfModule>
+
+    #
+    # AddType allows you to tweak mime.types without actually editing it, or to
+    # make certain files to be certain types.
+    #
+    AddType application/x-tar .tgz
+
+    #
+    # AddEncoding allows you to have certain browsers uncompress
+    # information on the fly. Note: Not all browsers support this.
+    # Despite the name similarity, the following Add* directives have nothing
+    # to do with the FancyIndexing customization directives above.
+    #
+    AddEncoding x-compress .Z
+    AddEncoding x-gzip .gz .tgz
+    #
+    # If the AddEncoding directives above are commented-out, then you
+    # probably should define those extensions to indicate media types:
+    #
+    #AddType application/x-compress .Z
+    #AddType application/x-gzip .gz .tgz
+
+    #
+    # AddHandler allows you to map certain file extensions to "handlers",
+    # actions unrelated to filetype. These can be either built into the server
+    # or added with the Action command (see below)
+    #
+    # If you want to use server side includes, or CGI outside
+    # ScriptAliased directories, uncomment the following lines.
+    #
+    # To use CGI scripts:
+    #
+    #AddHandler cgi-script .cgi
+
+    #
+    # To use server-parsed HTML files
+    #
+    #AddType text/html .shtml
+    #AddHandler server-parsed .shtml
+
+    #
+    # Uncomment the following line to enable Apache's send-asis HTTP file
+    # feature
+    #
+    #AddHandler send-as-is asis
+
+    #
+    # If you wish to use server-parsed imagemap files, use
+    #
+    #AddHandler imap-file map
+
+    #
+    # To enable type maps, you might want to use
+    #
+    #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+#  these come in three flavors
+#
+#    1) plain text
+ErrorDocument 500 /missing.html
+#  n.b.  the single leading (") marks it as text, it does not get output
+#
+#    2) local redirects
+ErrorDocument 404 /missing.html
+#  to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+#  N.B.: You can redirect to a script or a document using server-side-includes.
+#
+#    3) external redirects
+ErrorDocument 402 /missing.html
+#  N.B.: Many of the environment variables associated with the original
+#  request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+    #
+    # The following directives modify normal HTTP response behavior.
+    # The first directive disables keepalive for Netscape 2.x and browsers that
+    # spoof it. There are known problems with these browser implementations.
+    # The second directive is for Microsoft Internet Explorer 4.0b2
+    # which has a broken HTTP/1.1 implementation and does not properly
+    # support keepalive when it is used on 301 or 302 (redirect) responses.
+    #
+    BrowserMatch "Mozilla/2" nokeepalive
+    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+    #
+    # The following directive disables HTTP/1.1 responses to browsers which
+    # are in violation of the HTTP/1.0 spec by not being able to grok a
+    # basic 1.1 response.
+    #
+    BrowserMatch "RealPlayer 4\.0" force-response-1.0
+    BrowserMatch "Java/1\.0" force-response-1.0
+    BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+#    SetHandler server-status
+#    Order deny,allow
+#    Deny from all
+#    Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+#    SetHandler server-info
+#    Order deny,allow
+#    Deny from all
+#    Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days.  This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging 
+# script on phf.apache.org.  Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+#    Deny from all
+#    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+#    ServerAdmin webmaster@dummy-host.example.com
+#    DocumentRoot /www/docs/dummy-host.example.com
+#    ServerName dummy-host.example.com
+#    ErrorLog logs/dummy-host.example.com-error_log
+#    CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled.  To enable a particular
+# module for Apache, make sure the necessary packages are installed.  Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache.  Note that some modules may need additional configuration steps.  For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED:  openssl-solibs (A series) and/or openssl (N series),
+#                     mysql (AP series), gmp (L series), mhash (L series),
+#                     and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED:  apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/php.ini b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/php.ini
new file mode 100644 (file)
index 0000000..e6cddef
--- /dev/null
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file.  It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with.  Using this
+; file is warmly recommended for production sites.  As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3.  Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off         [Security, Performance]
+;     Global variables are no longer registered for input data (POST, GET, cookies,
+;     environment and other server variables).  Instead of using $foo, you must use
+;     you can use $_REQUEST["foo"] (includes any variable that arrives through the
+;     request, namely, POST, GET and cookie variables), or use one of the specific
+;     $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+;     on where the input originates.  Also, you can look at the
+;     import_request_variables() function.
+;     Note that register_globals is going to be depracated (i.e., turned off by
+;     default) in the next version of PHP, because it often leads to security bugs.
+;     Read http://php.net/manual/en/security.registerglobals.php for further
+;     information.
+; - display_errors = Off           [Security]
+;     With this directive set to off, errors that occur during the execution of
+;     scripts will no longer be displayed as a part of the script output, and thus,
+;     will no longer be exposed to remote users.  With some errors, the error message
+;     content may expose information about your script, web server, or database
+;     server that may be exploitable for hacking.  Production sites should have this
+;     directive set to off.
+; - log_errors = On                [Security]
+;     This directive complements the above one.  Any errors that occur during the
+;     execution of your script will be logged (typically, to your server's error log,
+;     but can be configured in several ways).  Along with setting display_errors to off,
+;     this setup gives you the ability to fully understand what may have gone wrong,
+;     without exposing any sensitive information to remote users.
+; - output_buffering = 4096        [Performance]
+;     Set a 4KB output buffer.  Enabling output buffering typically results in less
+;     writes, and sometimes less packets sent on the wire, which can often lead to
+;     better performance.  The gain this directive actually yields greatly depends
+;     on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off       [Performance]
+;     Disables registration of the somewhat redundant $argv and $argc global
+;     variables.
+; - magic_quotes_gpc = Off         [Performance]
+;     Input data is no longer escaped with slashes so that it can be sent into
+;     SQL databases without further manipulation.  Instead, you should use the
+;     function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS"       [Performance]
+;     The environment variables are not hashed into the $HTTP_ENV_VARS[].  To access
+;     environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL        [Code Cleanliness, Security(?)]
+;     By default, PHP surpresses errors of type E_NOTICE.  These error messages
+;     are emitted for non-critical errors, but that could be a symptom of a bigger
+;     problem.  Most notably, this will cause error messages about the use
+;     of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off     [Code cleanliness]
+;     It's not possible to decide to force a variable to be passed by reference
+;     when calling a function.  The PHP 4 style to do this is by making the
+;     function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.  
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision    =  14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit.  You can enable output buffering during runtime by calling the output
+; buffering functions.  You can also enable output buffering for all files by
+; setting this directive to On.  If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function.  For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+;       directive. Instead, explicitly set the output handler using ob_start().
+;       Using this ini directive may cause problems unless you know what script 
+;       is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+;       and you cannot use both "ob_gzhandler" and "zlib.output_compression". 
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP 
+;       outputs chunks that are few handreds bytes each as a result of compression. 
+;       If you want larger chunk size for better performence, enable output_buffering 
+;       also. 
+; Note: output_handler must be empty if this is set 'On' !!!!
+;       Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block.  This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block.  Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a 
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time.  This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend.  The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration.  You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =                                                                
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes.  In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here.  By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note:  If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv().  These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below.  This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode.  Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string  = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg      = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html    = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header).  It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30     ; Maximum execution time of each script, in seconds
+max_input_time = 60    ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field.  Or each number up to get desired error
+; reporting level
+; E_ALL             - All errors and warnings
+; E_ERROR           - fatal run-time errors
+; E_WARNING         - run-time warnings (non-fatal errors)
+; E_PARSE           - compile-time parse errors
+; E_NOTICE          - run-time notices (these are warnings which often result
+;                     from a bug in your code, but it's possible that it was
+;                     intentional (e.g., using an uninitialized variable and
+;                     relying on the fact it's automatically initialized to an
+;                     empty string)
+; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
+;                     initial startup
+; E_COMPILE_ERROR   - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR      - user-generated error message
+; E_USER_WARNING    - user-generated warning message
+; E_USER_NOTICE     - user-generated notice message
+;
+; Examples:
+;
+;   - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+;   - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+;   - Show all errors
+;
+error_reporting  =  E_ALL
+
+; Print out errors (as a part of the output).  For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below).  Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed.  It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting 
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if 
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct 
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php 
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including 
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+  
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&". 
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&". 
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC).  Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables.  You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data.  This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on;  Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information).  If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated.  Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off    
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header.  To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.                               
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"  
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues.  The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function.  The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers.  Left undefined, PHP turns this on by default.  You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape 
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution.  Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec.  A setting
+; of zero causes PHP to behave as before.  Default is zero.  You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client.  This allows IIS to define the
+; security context that the request runs under.  mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS.  Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0 
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+;   extension=modulename.extension
+;
+; For example, on Windows:
+;
+;   extension=msql.dll
+;
+; ... or under UNIX:
+;
+;   extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information 
+; needs to go here.  Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default.  Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default.  Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.).  Turning it off is a good idea performance-wise.  In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables  = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll 
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db    =  Not yet implemented
+;odbc.default_user  =  Not yet implemented
+;odbc.default_pw    =  Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+odbc.max_links = -1  
+
+; Handling of LONG fields.  Returns number of bytes to variables.  0 means
+; passthru.
+odbc.defaultlrl = 4096  
+
+; Handling of binary data.  0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1  
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect().  If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order).  Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects.  If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password!  And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect(). 
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links.  -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings.  This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns.  May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1.  In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler.  In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this 
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to 
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data.  php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor     = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+;   to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+;   in publically accessible computer. 
+; - User may access your site with the same session ID
+;   always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs.  If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647.  Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647.  Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch.  0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting().  Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents.  -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file = 
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to 
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+;       portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means 
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database = 
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files.  Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. 
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding 
+; is used. For the decode settings you can distinguish between motorola and 
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel    = UCS-2LE
+;exif.encode_jis = 
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel    = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/vhosts b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/vhosts
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/hosts b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/hosts
new file mode 100644 (file)
index 0000000..6e33147
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# hosts                This file describes a number of hostname-to-address
+#              mappings for the TCP/IP subsystem.  It is mostly
+#              used at boot time, when no name servers are running.
+#              On small systems, this file can be used instead of a
+#              "named" name server.  Just add the names, addresses
+#              and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine.  It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1      localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1      darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/logrotate.d/apache b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/logrotate.d/apache
new file mode 100644 (file)
index 0000000..f31fbe2
--- /dev/null
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+    monthly
+    nomail
+    compress
+    create 0664 root root
+    rotate 12
+    postrotate
+      /etc/rc.d/rc.httpd restart > /dev/null
+    endscript
+}
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/profile b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/profile
new file mode 100644 (file)
index 0000000..563594a
--- /dev/null
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+  export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH.  Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+  echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+  if [ ! $? = 0 ]; then
+    PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+  fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to 
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+  VISUAL=emacs
+#  VISUAL=gmacs
+#  VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask.  A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+  if [ -x $profile_script ]; then
+    . $profile_script
+  fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.0 b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.0
new file mode 100755 (executable)
index 0000000..bfec90a
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6         This file is executed by init when it goes into runlevel
+#              0 (halt) or runlevel 6 (reboot). It kills all processes,
+#              unmounts file systems and then either halts or reboots.
+#
+# Version:     @(#)/etc/rc.d/rc.6      2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+       *0)
+               command="halt"
+               ;;
+       *6)
+               command=reboot
+               ;;
+       *)
+               echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+               exit 1
+               ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+  . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+  if [ -x /usr/sbin/ppp-off ]; then
+    /usr/sbin/ppp-off
+  fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off process accounting."
+  /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+  killall5 -15 
+  sleep 5
+  killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+  rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.4 b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.4
new file mode 100644 (file)
index 0000000..b972052
--- /dev/null
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M         This file is executed by init(8) when the system is being
+#              initialized for one of the "multi user" run levels (i.e.
+#              levels 1 through 6).  It usually does mounting of file
+#              systems et al.
+#
+# Version:     @(#)/etc/rc.d/rc.M      2.23    Wed Feb 26 19:20:58 PST 2003
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+#              Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+#  /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+  # fall back on this old default:
+#  echo "darkstar.example.net" > /etc/HOSTNAME
+#  /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives.  This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down.  If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia start
+  # The cards might need a little extra time here to initialize.
+  if [ -r /var/run/cardmgr.pid ]; then
+    sleep 5
+  fi
+fi
+
+# Initialize the networking hardware.  If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+#  . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+  # Don't run hotplug if 'nohotplug' was given at boot.
+  if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "Activating hardware detection:  /etc/rc.d/rc.hotplug start"
+    . /etc/rc.d/rc.hotplug start
+  fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+  . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+  echo "Removing your stale hunt sockets from /tmp."
+  /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+  echo "Updating shared library links:  /sbin/ldconfig"
+  /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+  echo "Updating X font indexes:  /usr/X11R6/bin/fc-cache"
+  /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system.  This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+  # Start CUPS:
+  /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+  # Start LPRng (lpd):
+  . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+  /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems.  Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+#  /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc).  For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+#  echo "Starting genpowerd daemon..."
+#  /sbin/genpowerd
+#fi
+
+# Turn on process accounting.  To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct).  By default, process
+# accounting is not enabled (since /var/log/pacct does not exist).  This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  /sbin/accton /var/log/pacct
+  chmod 640 /var/log/pacct
+  echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+  /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+  /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab.  Here's an example:
+#
+# /dev/hda2      /home      ext3     defaults,usrquota      1   1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'.  See 'man edquota'.  Also, the
+# official Quota Mini-HOWTO has lots of useful information.  That can be found
+# here:  /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotacheck ]; then
+    echo "Checking filesystem quotas:  /sbin/quotacheck -avugm"
+    /sbin/quotacheck -avugm
+  fi
+  if [ -x /sbin/quotaon ]; then
+    echo "Activating filesystem quotas:  /sbin/quotaon -avug"
+    /sbin/quotaon -avug
+  fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+  . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+  if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+    echo "Starting APM daemon:  /usr/sbin/apmd"
+    /usr/sbin/apmd
+  fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+  . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+  . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+  . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+  . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+  . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+  . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+  . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+  . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.6 b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.6
new file mode 100755 (executable)
index 0000000..bfec90a
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6         This file is executed by init when it goes into runlevel
+#              0 (halt) or runlevel 6 (reboot). It kills all processes,
+#              unmounts file systems and then either halts or reboots.
+#
+# Version:     @(#)/etc/rc.d/rc.6      2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+       *0)
+               command="halt"
+               ;;
+       *6)
+               command=reboot
+               ;;
+       *)
+               echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+               exit 1
+               ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+  . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+  if [ -x /usr/sbin/ppp-off ]; then
+    /usr/sbin/ppp-off
+  fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off process accounting."
+  /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+  killall5 -15 
+  sleep 5
+  killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+  rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.K b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.K
new file mode 100755 (executable)
index 0000000..00a1501
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K                 This file is executed by init when it goes into runlevel
+#              1, which is the administrative state. It kills all
+#              daemons and then puts the system into single user mode.
+#              Note that the file systems are kept mounted.
+#
+# Version:     @(#)/etc/rc.d/rc.K      3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotaoff ]; then
+    echo "Turning off filesystem quotas."
+    /sbin/quotaoff -a
+  fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off accounting."
+  /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+  /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia stop
+  # The cards might need a little extra time here to initialize.
+  sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.M b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.M
new file mode 100755 (executable)
index 0000000..0cb3343
--- /dev/null
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M         This file is executed by init(8) when the system is being
+#              initialized for one of the "multi user" run levels (i.e.
+#              levels 1 through 6).  It usually does mounting of file
+#              systems et al.
+#
+# Version:     @(#)/etc/rc.d/rc.M      2.23    Wed Feb 26 19:20:58 PST 2003
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+#              Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+#  /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+  # fall back on this old default:
+#  echo "darkstar.example.net" > /etc/HOSTNAME
+#  /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives.  This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down.  If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia start
+  # The cards might need a little extra time here to initialize.
+  if [ -r /var/run/cardmgr.pid ]; then
+    sleep 5
+  fi
+fi
+
+# Initialize the networking hardware.  If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+#  . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+  # Don't run hotplug if 'nohotplug' was given at boot.
+  if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "Activating hardware detection:  /etc/rc.d/rc.hotplug start"
+    . /etc/rc.d/rc.hotplug start
+  fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+  . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+  echo "Removing your stale hunt sockets from /tmp."
+  /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+  echo "Updating shared library links: /sbin/ldconfig"
+  /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+  echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+  /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system.  This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+  # Start CUPS:
+  /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+  # Start LPRng (lpd):
+  . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+  /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems.  Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+#  /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc).  For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+#  echo "Starting genpowerd daemon..."
+#  /sbin/genpowerd
+#fi
+
+# Turn on process accounting.  To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct).  By default, process
+# accounting is not enabled (since /var/log/pacct does not exist).  This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  /sbin/accton /var/log/pacct
+  chmod 640 /var/log/pacct
+  echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+  /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+  /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab.  Here's an example:
+#
+# /dev/hda2      /home      ext3     defaults,usrquota      1   1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'.  See 'man edquota'.  Also, the
+# official Quota Mini-HOWTO has lots of useful information.  That can be found
+# here:  /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotacheck ]; then
+    echo "Checking filesystem quotas:  /sbin/quotacheck -avugm"
+    /sbin/quotacheck -avugm
+  fi
+  if [ -x /sbin/quotaon ]; then
+    echo "Activating filesystem quotas:  /sbin/quotaon -avug"
+    /sbin/quotaon -avug
+  fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+  . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+  if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+    echo "Starting APM daemon:  /usr/sbin/apmd"
+    /usr/sbin/apmd
+  fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+  . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+  . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+  . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+  . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+  . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+  . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+  . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+  . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.S b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.S
new file mode 100755 (executable)
index 0000000..05c75b4
--- /dev/null
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S:  System initialization script.
+#
+# Mostly written by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+  if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "/dev/null" > /proc/sys/kernel/hotplug
+  elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+    echo "/dev/null" > /proc/sys/kernel/hotplug
+  fi
+fi
+
+# Start devfsd if necessary.  On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+  /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+  if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+    if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+      /sbin/mount -v sysfs /sys -n -t sysfs
+    fi
+  fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+  if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    /etc/rc.d/rc.udev
+  fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+  rm -f /fsrwtestfile
+  READWRITE=yes
+else
+  echo "Testing root filesystem status:  read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+  FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+  RETVAL=0
+  if [ ! -r /etc/fastboot ]; then
+    echo "Checking root filesystem:"
+    /sbin/fsck $FORCEFSCK -C -a /
+    RETVAL=$?
+  fi
+  # An error code of 2 or higher will require a reboot.
+  if [ $RETVAL -ge 2 ]; then
+    # An error code equal to or greater than 4 means that some errors
+    # could not be corrected.  This requires manual attention, so we
+    # offer a chance to try to fix the problem in single-user mode:
+    if [ $RETVAL -ge 4 ]; then
+      echo
+      echo "***********************************************************"
+      echo "*** An error occurred during the root filesystem check. ***"
+      echo "*** You will now be given a chance to log into the      ***"
+      echo "*** system in single-user mode to fix the problem.      ***"
+      echo "***                                                     ***"
+      echo "*** If you are using the ext2 filesystem, running       ***"
+      echo "*** 'e2fsck -v -y <partition>' might help.              ***"
+      echo "***********************************************************"
+      echo
+      echo "Once you exit the single-user shell, the system will reboot."
+      echo
+      PS1="(Repair filesystem) \#"; export PS1
+      sulogin
+    else # With an error code of 2 or 3, reboot the machine automatically:
+      echo
+      echo "***********************************"
+      echo "*** The filesystem was changed. ***"
+      echo "*** The system will now reboot. ***"
+      echo "***********************************"
+      echo
+    fi
+    echo "Unmounting file systems."
+    /sbin/umount -a -r
+    /sbin/mount -n -o remount,ro /
+    echo "Rebooting system."
+    sleep 2
+    reboot -f
+  fi
+  # Remount the root filesystem in read-write mode
+  echo "Remounting root device with read-write enabled."
+  /sbin/mount -w -v -n -o remount /
+  if [ $? -gt 0 ] ; then
+    echo
+    echo "Attempt to remount root device as read-write failed!  This is going to"
+    echo "cause serious problems."
+    echo 
+    echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+    echo "read-write!  You can make sure the root filesystem is getting mounted "
+    echo "read-write with the 'rw' flag to Loadlin:"
+    echo
+    echo "loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)"
+    echo
+    echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+    echo
+    echo "rdev -R /dev/fd0 0"
+    echo
+    echo "You can also get into your system by using a boot disk with a command like this"
+    echo "on the LILO prompt line:  (change the root partition name as needed)"
+    echo 
+    echo "LILO: mount root=/dev/hda1 rw"
+    echo
+    echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+    echo -n "get into your machine and start looking for the problem. " 
+    read junk; 
+  fi
+else
+  echo "Testing root filesystem status:  read-write filesystem"
+  if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+    ROOTTYPE="umsdos"
+  fi
+  if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+    echo
+    echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+    echo
+    echo "For filesystem checking to work properly, your system must initially mount"
+    echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+    echo "it does this. If you're booting with LILO, add a line:"
+    echo
+    echo "   read-only"
+    echo
+    echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+    echo
+    echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+    echo "   rdev -R /dev/fd0 1"
+    echo
+    echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+    echo
+    echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+    echo
+    echo -n "Press ENTER to continue. "
+    read junk;
+  fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+  /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+  /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+  if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+    echo "Setting system time from the hardware clock (UTC)."
+    /sbin/hwclock --utc --hctosys
+  else
+    echo "Setting system time from the hardware clock (localtime)."
+    /sbin/hwclock --localtime --hctosys
+  fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+  if [ -x /sbin/isapnp ]; then
+    /sbin/isapnp /etc/isapnp.conf
+  fi
+fi
+
+# This loads any kernel modules that are needed.  These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+  . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+  /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or 
+# /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+  echo "Initializing LVM (Logical Volume Manager):"
+  # Check for device-mapper support.
+  if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+    # If device-mapper exists as a module, try to load it.
+    if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+      insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+    fi
+  fi
+  # Scan for new volume groups:
+  /sbin/vgscan 2> /dev/null
+  if [ $? = 0 ]; then
+    # This needs a moment to register.
+    sleep 10
+    # Make volume groups available to the kernel.
+    # This should also make logical volumes available.
+    /sbin/vgchange -ay
+    # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)
+    /sbin/swapon -a
+  fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+  echo "Checking non-root filesystems:"
+  /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB 
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+  /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+  /sbin/umount /initrd 2> /dev/null
+  rmdir /initrd 2> /dev/null
+  blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+  echo "Synchronizing UMSDOS directory structure:"
+  echo "  /sbin/umssync -r99 -v- /"
+  /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+  echo "Using /etc/random-seed to initialize /dev/urandom."
+  cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.httpd b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.httpd
new file mode 100644 (file)
index 0000000..00b8837
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable:  chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+   'start')
+      /usr/sbin/apachectl start ;;
+   'stop')
+      /usr/sbin/apachectl stop ;;
+   'restart')
+      /usr/sbin/apachectl restart ;;
+   *)
+      echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inet2 b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inet2
new file mode 100755 (executable)
index 0000000..db56589
--- /dev/null
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2     This shell script boots up the entire network system.
+#              Note, that when this script is used to also fire
+#              up any important remote NFS disks (like the /usr
+#              directory), care must be taken to actually
+#              have all the needed binaries online _now_ ...
+#
+#               Uncomment or comment out sections depending on which
+#               services your site requires.
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+  # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+  # since it will need to be running in order to mount them.  If portmap
+  # is not running, attempting to mount an NFS partition will cause mount
+  # to hang.  Keep this in mind if you plan to mount unlisted partitions...
+  if [ -x /etc/rc.d/rc.portmap ]; then
+    . /etc/rc.d/rc.portmap start
+  else
+    # Warn about a possible NFS problem.  It's also possible to mount NFS partitions
+    # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+    echo "WARNING:  NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+    echo "          not executable.  If you do not run portmap, NFS partitions will"
+    echo "          not mount properly.  To start rpc.portmap at boot, change the"
+    echo "          permissions on /etc/rc.d/rc.portmap:  chmod 755 /etc/rc.d/rc.portmap"
+    sleep 10
+  fi
+  echo "Mounting remote (NFS) file systems:  /sbin/mount -a -t nfs"
+  /sbin/mount -a -t nfs         # This may be our /usr runtime!
+  # Show the mounted volumes:
+  /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+  . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+  echo "Mounting remote (SMB) file systems:  /sbin/mount -a -t smbfs"
+  /sbin/mount -a -t smbfs
+  # Show the mounted volumes:
+  /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux.  In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+  /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+  . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+  /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+  echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+  /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+  /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+  . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server.   Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+  /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows.  ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+#   echo "Starting network routing daemon:  /usr/sbin/routed"
+#   /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+#   echo "Starting system status server:  /usr/sbin/rwhod"
+#   /usr/sbin/rwhod
+# fi
+
+#  # Fire up the PC-NFS daemon(s).  This is a primarily obsolete system, and may
+#  # not be very secure.  It's not at all needed for normal NFS server support.
+#  # You probably should not run this.
+#  if [ -x /usr/sbin/rpc.pcnfsd ]; then
+#    echo "Starting PC-NFS daemons:  /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+#    /usr/sbin/rpc.pcnfsd /var/spool/lpd
+#  fi
+#  if [ -x /usr/sbin/rpc.bwnfsd ]; then
+#    /usr/sbin/rpc.bwnfsd /var/spool/lpd
+#  fi
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inetd b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inetd
new file mode 100644 (file)
index 0000000..9fe1419
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+  if [ -x /usr/sbin/inetd ]; then
+    echo "Starting Internet super-server daemon:  /usr/sbin/inetd"
+    /usr/sbin/inetd
+  fi
+}
+
+# Stop inetd:
+inetd_stop() {
+  killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+  inetd_stop
+  sleep 1
+  inetd_start
+}
+
+case "$1" in
+'start')
+  inetd_start
+  ;;
+'stop')
+  inetd_stop
+  ;;
+'restart')
+  inetd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.ip_forward b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.ip_forward
new file mode 100644 (file)
index 0000000..52bd2fe
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward:  start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable:  chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable:  chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+  if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+    echo "Activating IPv4 packet forwarding."
+    echo 1 > /proc/sys/net/ipv4/ip_forward
+  fi
+  # When using IPv4 packet forwarding, you will also get the
+  # rp_filter, which automatically rejects incoming packets if the
+  # routing table entry for their source address doesn't match the
+  # network interface they're arriving on.  This has security
+  # advantages because it prevents the so-called IP spoofing,
+  # however it can pose problems if you use asymmetric routing
+  # (packets from you to a host take a different path than packets
+  # from that host to you) or if you operate a non-routing host
+  # which has several IP addresses on different interfaces.  To
+  # turn rp_filter off, uncomment the lines below:
+  #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+  #  echo "Disabling rp_filter."
+  #  echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+  #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+  if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+    echo "Disabling IPv4 packet forwarding."
+    echo 0 > /proc/sys/net/ipv4/ip_forward
+  fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+  ip_forward_stop
+  sleep 1
+  ip_forward_start
+}
+
+case "$1" in
+'start')
+  ip_forward_start
+  ;;
+'stop')
+  ip_forward_stop
+  ;;
+'restart')
+  ip_forward_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.local b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.local
new file mode 100755 (executable)
index 0000000..3cf2076
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local:  Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.mysqld b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.mysqld
new file mode 100644 (file)
index 0000000..239e2e6
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database.  To install an initial
+# database, do this as root:
+#
+#   su - mysql
+#   mysql_install_db
+#
+# Note that step one is becoming the mysql user.  It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+  if [ -x /usr/bin/mysqld_safe ]; then
+    # If there is an old PID file (no mysqld running), clean it up:
+    if [ -r /var/run/mysql/mysql.pid ]; then
+      if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+        echo "Cleaning up old /var/run/mysql/mysql.pid."
+        rm -f /var/run/mysql/mysql.pid
+      fi
+    fi
+    /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+  fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+  # If there is no PID file, ignore this request...
+  if [ -r /var/run/mysql/mysql.pid ]; then
+    killall mysqld
+    # Wait at least one minute for it to exit, as we don't know how big the DB is...
+    for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+      if [ ! -r /var/run/mysql/mysql.pid ]; then
+        break;
+      fi
+      sleep 1
+    done
+    if [ "$second" = "60" ]; then
+      echo "WARNING:  Gave up waiting for mysqld to exit!"
+      sleep 15
+    fi
+  fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+  mysqld_stop
+  mysqld_start
+}
+
+case "$1" in
+'start')
+  mysqld_start
+  ;;
+'stop')
+  mysqld_stop
+  ;;
+'restart')
+  mysqld_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.postfix b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.postfix
new file mode 100644 (file)
index 0000000..bc32367
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+##   20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+        if [ -x /usr/sbin/postfix ]; then
+                echo -n "Starting postfix MTA:  "
+                echo "/usr/sbin/postfix start"
+                /usr/sbin/postfix start 2>/dev/null
+        fi
+}
+
+postfix_stop() {
+        /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+        sh $0 stop
+       sleep 1
+        sh $0 start
+}
+
+postfix_reload() {
+        /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+        'start')
+                postfix_start
+                ;;
+        'stop')
+                postfix_stop
+                ;;
+        'restart')
+                postfix_restart
+                ;;
+        'reload')
+                postfix_reload
+                ;;
+        *)
+                echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sendmail b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sendmail
new file mode 100644 (file)
index 0000000..1a31c52
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+  if [ -x /usr/sbin/sendmail ]; then
+    echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+    /usr/sbin/sendmail -L sm-mta -bd -q25m
+    echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+    /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+  fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+  killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+  sendmail_stop
+  sleep 1
+  sendmail_start
+}
+
+case "$1" in
+'start')
+  sendmail_start
+  ;;
+'stop')
+  sendmail_stop
+  ;;
+'restart')
+  sendmail_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.serial b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.serial
new file mode 100755 (executable)
index 0000000..5f31c01
--- /dev/null
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial 
+#      Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver.  We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial 
+# file with a newer one.
+# 
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now).  Autosave also doesn't work for the hayes devices.  
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+       ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+       SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+       SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+       if grep -q " ttyS$" /proc/devices ; then
+               LOADED="yes"
+       else
+               LOADED="no"
+       fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+       if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+               MODULE=$i/$DRIVER.o
+       fi
+done
+
+if ! test -f /proc/modules ; then
+       MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+       action="start";
+       ;;
+stop)
+       action="stop";
+       ;;
+*)
+       action="start";
+esac
+
+if test $action  = stop ; then
+       if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+           `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+               echo -n "Saving state of serial devices... "
+               grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+               ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+               mv /etc/serial.conf /etc/.serial.conf.old
+               mv /etc/.serial.conf.new /etc/serial.conf
+               echo "done."
+       fi
+       if test -n "$MODULE" ; then
+               module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+               if test -z "$module" ; then 
+                       echo "The $DRIVER_NAME driver is not loaded."
+                       rm -f ${RCLOCKFILE}
+                       exit 0
+               fi
+               if rmmod $module ; then :; else 
+                       echo "The $DRIVER_NAME driver could NOT be unloaded."
+                       exit 1;
+               fi
+               echo "The $DRIVER_NAME driver has been unloaded."
+       fi
+       rm -f ${RCLOCKFILE}
+       exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then 
+       if insmod -f $MODULE $DRIVER_ARG ; then
+          true
+       else
+               echo "Couldn't load $DRIVER_NAME driver."
+               exit 1
+       fi
+fi
+
+if test -f /etc/serial.conf ; then
+        if test -n ${SETSERIAL} ; then
+               grep -v ^# < /etc/serial.conf | while read device args
+               do
+                    if [ ! "$device" = "" -a ! "$args" = "" ]; then
+                        ${SETSERIAL} -z $device $args
+                    fi
+               done 
+       fi
+else
+       echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sshd b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sshd
new file mode 100755 (executable)
index 0000000..a3707e3
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+  # Create host keys if needed.
+  if [ ! -r /etc/ssh/ssh_host_key ]; then
+    /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N '' 
+  fi
+  if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+    /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+  fi
+  if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+    /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+  fi
+  /usr/sbin/sshd
+}
+
+sshd_stop() {
+  killall sshd
+}
+
+sshd_restart() {
+  if [ -r /var/run/sshd.pid ]; then
+    echo "WARNING: killing listener process only.  To kill every sshd process, you must"
+    echo "         use 'rc.sshd stop'.  'rc.sshd restart' kills only the parent sshd to"
+    echo "         allow an admin logged in through sshd to use 'rc.sshd restart' without"
+    echo "         being cut off.  If sshd has been upgraded, new connections will now"
+    echo "         use the new version, which should be a safe enough approach."
+    kill `cat /var/run/sshd.pid`
+  else
+    killall sshd
+  fi
+  sleep 1
+  sshd_start
+}
+
+case "$1" in
+'start')
+  sshd_start
+  ;;
+'stop')
+  sshd_stop
+  ;;
+'restart')
+  sshd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.syslog b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.syslog
new file mode 100755 (executable)
index 0000000..a005fb7
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+  if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+    echo -n "Starting sysklogd daemons: "
+    echo -n "/usr/sbin/syslogd "
+    /usr/sbin/syslogd
+    sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+    echo "/usr/sbin/klogd -c 3 -x"
+    # '-c 3' = display level 'error' or higher messages on console
+    # '-x' = turn off broken EIP translation
+    /usr/sbin/klogd -c 3 -x
+  fi
+}
+
+syslogd_stop() {
+  killall syslogd 2> /dev/null
+  killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+  syslogd_stop
+  sleep 1
+  syslogd_start
+}
+
+case "$1" in
+'start')
+  syslogd_start
+  ;;
+'stop')
+  syslogd_stop
+  ;;
+'restart')
+  syslogd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sysvinit b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sysvinit
new file mode 100755 (executable)
index 0000000..916e59e
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit   This file provides basic compatibility with SystemV style
+#               startup scripts.  The SystemV style init system places 
+#               start/stop scripts for each runlevel into directories such as
+#               /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+#               from /etc/rc.d/rc.M.  This makes for a lot more init scripts,
+#               and a more complicated execution path to follow through if
+#               something goes wrong.  For this reason, Slackware has always
+#               used the traditional BSD style init script layout.
+#
+#               However, many binary packages exist that install SystemV
+#               init scripts.  With rc.sysvinit in place, most well-written
+#               startup scripts will work.  This is primarily intended to
+#               support commercial software, though, and probably shouldn't
+#               be considered bug free.
+#
+#               Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+#               from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+  case "$1" in
+  *.sh)
+    sh "$@"
+    ;;
+  *)
+    "$@"
+    ;;
+  esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+  runlevel=$RUNLEVEL
+  export runlevel
+  prevlevel=$PREVLEVEL
+  export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+  for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+    if [ -x $script ]; then
+      startup $script stop
+    fi
+  done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+  if [ -x $script ]; then
+    startup $script start
+  fi
+done
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rssh.conf b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rssh.conf
new file mode 100644 (file)
index 0000000..a74acc6
--- /dev/null
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility.  "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER 
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010:  # the path can simply be left out to not chroot
+#user=rudy:077:00010   # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir"  # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir"  # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir"  # both with chroot
+#user=rudy:011:00100:  # cvs, with no chroot 
+#user=rudy:011:01000:  # rdist, with no chroot
+#user=rudy:011:10000:  # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot"  # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot"  # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot'  # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"  
+#user = "rudy:011:00001:/usr/local/chroot dir"  # neither do comments at line end
+
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/ssh/sshd_config b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/ssh/sshd_config
new file mode 100644 (file)
index 0000000..a161fec
--- /dev/null
@@ -0,0 +1,103 @@
+#      $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file.  See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented.  Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile    .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing, 
+# and session processing. If this is enabled, PAM authentication will 
+# be allowed through the ChallengeResponseAuthentication mechanism. 
+# Depending on your PAM configuration, this may bypass the setting of 
+# PasswordAuthentication, PermitEmptyPasswords, and 
+# "PermitRootLogin without-password". If you just want the PAM account and 
+# session checks to run without PAM authentication, then enable this but set 
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem      sftp    /usr/libexec/sftp-server
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/htdocs/missing.html b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/htdocs/missing.html
new file mode 100644 (file)
index 0000000..b2eec17
--- /dev/null
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+  <center>
+  <pre>
+  O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+  </pre>
+  </center>
+</body>
+</html>
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/missing.html b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/missing.html
new file mode 100644 (file)
index 0000000..b2eec17
--- /dev/null
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+  <center>
+  <pre>
+  O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+  </pre>
+  </center>
+</body>
+</html>
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.perms b/tags/0.5/templates/vserver-legacy/vserver-legacy.perms
new file mode 100644 (file)
index 0000000..a323d6c
--- /dev/null
@@ -0,0 +1,36 @@
+./etc;0;0;755
+./etc/apache;0;0;755
+./etc/apache/httpd.conf;0;0;644
+./etc/apache/php.ini;0;0;644
+./etc/apache/vhosts;0;0;644
+./etc/logrotate.d;0;0;755
+./etc/logrotate.d/apache;0;0;644
+./etc/rc.d;0;0;755
+./etc/rc.d/rc.httpd;0;0;644
+./etc/rc.d/rc.0;0;0;755
+./etc/rc.d/rc.4;0;0;644
+./etc/rc.d/rc.6;0;0;755
+./etc/rc.d/rc.K;0;0;755
+./etc/rc.d/rc.M;0;0;755
+./etc/rc.d/rc.S;0;0;755
+./etc/rc.d/rc.ip_forward;0;0;644
+./etc/rc.d/rc.inet2;0;0;755
+./etc/rc.d/rc.inetd;0;0;644
+./etc/rc.d/rc.mysqld;0;0;644
+./etc/rc.d/rc.local;0;0;755
+./etc/rc.d/rc.postfix;0;0;644
+./etc/rc.d/rc.sendmail;0;0;644
+./etc/rc.d/rc.serial;0;0;755
+./etc/rc.d/rc.sshd;0;0;755
+./etc/rc.d/rc.syslog;0;0;755
+./etc/rc.d/rc.sysvinit;0;0;755
+./etc/ssh;0;0;755
+./etc/ssh/sshd_config;0;0;644
+./etc/rssh.conf;0;0;644
+./etc/hosts;0;0;644
+./etc/profile;0;0;644
+./var;0;0;755
+./var/www;0;0;755
+./var/www/htdocs;0;0;755
+./var/www/htdocs/missing.html;0;0;644
+./var/www/missing.html;0;0;644
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.s/GPG-KEY b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/GPG-KEY
new file mode 100644 (file)
index 0000000..fd23e95
--- /dev/null
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type  bits/keyID    Date       User ID
+pub  1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub  1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.s/devices.tar.gz b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/devices.tar.gz
new file mode 100644 (file)
index 0000000..992ba79
Binary files /dev/null and b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/devices.tar.gz differ
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.s/skel.conf b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/skel.conf
new file mode 100644 (file)
index 0000000..73985d3
--- /dev/null
@@ -0,0 +1,70 @@
+if [ "" = "" ] ; then
+PROFILE=prod
+fi
+# Select the IP number assigned to the virtual server
+# This IP must be one IP of the server, either an interface
+# or an IP alias
+# A vserver may have more than one IP. Separate them with spaces.
+# do not forget double quotes.
+# Some examples:
+# IPROOT="1.2.3.4 2.3.4.5"
+# IPROOT="eth0:1.2.3.4 eth1:2.3.4.5"
+# If the device is not specified, IPROOTDEV is used
+case $PROFILE in
+prod)
+#IPROOT=143.106.35.156
+IPROOT="eth0:192.168.0.1"
+# The netmask and broadcast are computed by default from IPROOTDEV
+#IPROOTMASK=
+#IPROOTBCAST=
+# You can define on which device the IP alias will be done
+# The IP alias will be set when the server is started and unset
+# when the server is stopped
+#IPROOTDEV=eth0
+# You can set a different host name for the vserver
+# If empty, the host name of the main server is used
+S_HOSTNAME=skel
+;;
+backup)
+IPROOT=1.2.3.4
+#IPROOTMASK=
+#IPROOTBCAST=
+#IPROOTDEV=eth0
+S_HOSTNAME=
+;;
+esac
+# Uncomment the onboot line if you want to enable this
+# virtual server at boot time
+#ONBOOT=yes
+# You can set a different NIS domain for the vserver
+# If empty, the current on is kept
+# Set it to "none" to have no NIS domain set
+S_DOMAINNAME=
+# You can set the priority level (nice) of all process in the vserver
+# Even root won't be able to raise it
+S_NICE=
+# You can set various flags for the new security context
+# lock: Prevent the vserver from setting new security context
+# sched: Merge scheduler priority of all processes in the vserver
+#        so that it acts a like a single one.
+# nproc: Limit the number of processes in the vserver according to ulimit
+#        (instead of a per user limit, this becomes a per vserver limit)
+# private: No other process can join this security context. Even root
+# Do not forget the quotes around the flags
+S_FLAGS="lock nproc"
+# You can set various ulimit flags and they will be inherited by the
+# vserver. You enter here various command line argument of ulimit
+# ULIMIT="-HS -u 200"
+# The example above, combined with the nproc S_FLAGS will limit the
+# vserver to a maximum of 200 processes
+ULIMIT="-HS -u 1000"
+# You can set various capabilities. By default, the vserver are run
+# with a limited set, so you can let root run in a vserver and not
+# worry about it. He can't take over the machine. In some cases
+# you can to give a little more capabilities (such as CAP_NET_RAW)
+# S_CAPS="CAP_NET_RAW"
+S_CAPS="CAP_SETGID"
+# Select an unused context (this is optional)
+# The default is to allocate a free context on the fly
+# In general you don't need to force a context
+#S_CONTEXT=
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.s/vserver-legacy.sh b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/vserver-legacy.sh
new file mode 100644 (file)
index 0000000..4ce8a4b
--- /dev/null
@@ -0,0 +1,49 @@
+#!/bin/bash
+#
+# legacy vserver template
+#
+
+BASE="/etc/simplepkg/templates/vserver-legacy/vserver-legacy.s/"
+DEVICES="$BASE/devices.tar.gz"
+GPGKEY="$BASE/GPG-KEY"
+SKEL="$BASE/skel.conf"
+
+if [ -z "$2" ]; then
+  echo "usage: `basename $0` <jail-root> <jail-name>"
+  exit 1
+elif [ ! -d "$1/$2" ]; then
+  echo "folder $1/$2 does not exist"
+  exit 1
+fi
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab                                                           
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab                                                                  
+
+echo "creating devices and dependencies"
+if [ -f "$DEVICES" ]; then
+  cd $1/$2/
+  tar zxvf $DEVICES
+  chroot $1/$2/ sbin/ldconfig
+else
+  echo error: device template $DEVICES not found
+fi
+
+if [ -f "$SKEL" ]; then
+  echo "creating /etc/vservers/$2.conf"
+  mkdir -p /etc/vservers
+  cp $SKEL /etc/vservers/$2.conf
+else
+  echo error: config file template $SKEL not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+  echo "importing slack gpg pubkey"                                                                                  
+  mkdir $1/$2/root/.gnupg                                                                                        
+  gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+echo "done; now edit /etc/vservers/$2.conf"
+echo "then, set all desired iptables rules and start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd"" 
diff --git a/tags/0.5/templates/vserver-legacy/vserver-legacy.template b/tags/0.5/templates/vserver-legacy/vserver-legacy.template
new file mode 100644 (file)
index 0000000..b810e32
--- /dev/null
@@ -0,0 +1,251 @@
+# This is a Slackware Installation Tagfile.
+# 
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+vim: OPT
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# 
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+htdig: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+nail: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+libsafe
+# contrib
+simplepkg
+ssmtp
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/apache/httpd.conf b/tags/0.5/templates/vserver/vserver.d/etc/apache/httpd.conf
new file mode 100644 (file)
index 0000000..7b7115d
--- /dev/null
@@ -0,0 +1,1046 @@
+##
+## httpd.conf -- Apache HTTP server configuration file
+##
+
+#
+# Based upon the NCSA server configuration files originally by Rob McCool.
+#
+# This is the main Apache server configuration file.  It contains the
+# configuration directives that give the server its instructions.
+# See <URL:http://httpd.apache.org/docs/> for detailed information about
+# the directives.
+#
+# Do NOT simply read the instructions in here without understanding
+# what they do.  They're here only as hints or reminders.  If you are unsure
+# consult the online docs. You have been warned.  
+#
+# After this file is processed, the server will look for and process
+# /etc/apache/srm.conf and then /etc/apache/access.conf
+# unless you have overridden these with ResourceConfig and/or
+# AccessConfig directives here.
+#
+# The configuration directives are grouped into three basic sections:
+#  1. Directives that control the operation of the Apache server process as a
+#     whole (the 'global environment').
+#  2. Directives that define the parameters of the 'main' or 'default' server,
+#     which responds to requests that aren't handled by a virtual host.
+#     These directives also provide default values for the settings
+#     of all virtual hosts.
+#  3. Settings for virtual hosts, which allow Web requests to be sent to
+#     different IP addresses or hostnames and have them handled by the
+#     same Apache server process.
+#
+# Configuration and logfile names: If the filenames you specify for many
+# of the server's control files begin with "/" (or "drive:/" for Win32), the
+# server will use that explicit path.  If the filenames do *not* begin
+# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"
+# with ServerRoot set to "/usr/local/apache" will be interpreted by the
+# server as "/usr/local/apache/logs/foo.log".
+#
+
+### Section 1: Global Environment
+#
+# The directives in this section affect the overall operation of Apache,
+# such as the number of concurrent requests it can handle or where it
+# can find its configuration files.
+#
+
+#
+# ServerType is either inetd, or standalone.  Inetd mode is only supported on
+# Unix platforms.
+#
+ServerType standalone
+
+# ServerTokens directive
+ServerTokens ProductOnly
+
+#
+# ServerRoot: The top of the directory tree under which the server's
+# configuration, error, and log files are kept.
+#
+# NOTE!  If you intend to place this on an NFS (or otherwise network)
+# mounted filesystem then please read the LockFile documentation
+# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
+# you will save yourself a lot of trouble.
+#
+ServerRoot "/usr"
+
+#
+# The LockFile directive sets the path to the lockfile used when Apache
+# is compiled with either USE_FCNTL_SERIALIZED_ACCEPT or
+# USE_FLOCK_SERIALIZED_ACCEPT. This directive should normally be left at
+# its default value. The main reason for changing it is if the logs
+# directory is NFS mounted, since the lockfile MUST BE STORED ON A LOCAL
+# DISK. The PID of the main server process is automatically appended to
+# the filename. 
+#
+#LockFile /var/run/httpd.lock
+
+#
+# PidFile: The file in which the server should record its process
+# identification number when it starts.
+#
+PidFile /var/run/httpd.pid
+
+#
+# ScoreBoardFile: File used to store internal server process information.
+# Not all architectures require this.  But if yours does (you'll know because
+# this file will be  created when you run Apache) then you *must* ensure that
+# no two invocations of Apache share the same scoreboard file.
+#
+ScoreBoardFile /var/run/httpd.scoreboard
+
+#
+# In the standard configuration, the server will process httpd.conf (this 
+# file, specified by the -f command line option), srm.conf, and access.conf 
+# in that order.  The latter two files are now distributed empty, as it is 
+# recommended that all directives be kept in a single file for simplicity.  
+# The commented-out values below are the built-in defaults.  You can have the 
+# server ignore these files altogether by using "/dev/null" (for Unix) or
+# "nul" (for Win32) for the arguments to the directives.
+#
+#ResourceConfig /etc/apache/srm.conf
+#AccessConfig /etc/apache/access.conf
+
+#
+# Timeout: The number of seconds before receives and sends time out.
+#
+Timeout 300
+
+#
+# KeepAlive: Whether or not to allow persistent connections (more than
+# one request per connection). Set to "Off" to deactivate.
+#
+KeepAlive On
+
+#
+# MaxKeepAliveRequests: The maximum number of requests to allow
+# during a persistent connection. Set to 0 to allow an unlimited amount.
+# We recommend you leave this number high, for maximum performance.
+#
+MaxKeepAliveRequests 100
+
+#
+# KeepAliveTimeout: Number of seconds to wait for the next request from the
+# same client on the same connection.
+#
+KeepAliveTimeout 2
+
+#
+# Server-pool size regulation.  Rather than making you guess how many
+# server processes you need, Apache dynamically adapts to the load it
+# sees --- that is, it tries to maintain enough server processes to
+# handle the current load, plus a few spare servers to handle transient
+# load spikes (e.g., multiple simultaneous requests from a single
+# Netscape browser).
+#
+# It does this by periodically checking how many servers are waiting
+# for a request.  If there are fewer than MinSpareServers, it creates
+# a new spare.  If there are more than MaxSpareServers, some of the
+# spares die off.  The default values are probably OK for most sites.
+#
+MinSpareServers 5
+MaxSpareServers 10
+
+#
+# Number of servers to start initially --- should be a reasonable ballpark
+# figure.
+#
+StartServers 5
+
+#
+# Limit on total number of servers running, i.e., limit on the number
+# of clients who can simultaneously connect --- if this limit is ever
+# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
+# It is intended mainly as a brake to keep a runaway server from taking
+# the system with it as it spirals down...
+#
+MaxClients 150
+
+#
+# MaxRequestsPerChild: the number of requests each child process is
+# allowed to process before the child dies.  The child will exit so
+# as to avoid problems after prolonged use when Apache (and maybe the
+# libraries it uses) leak memory or other resources.  On most systems, this
+# isn't really needed, but a few (such as Solaris) do have notable leaks
+# in the libraries. For these platforms, set to something like 10000
+# or so; a setting of 0 means unlimited.
+#
+# NOTE: This value does not include keepalive requests after the initial
+#       request per connection. For example, if a child process handles
+#       an initial request and 10 subsequent "keptalive" requests, it
+#       would only count as 1 request towards this limit.
+#
+MaxRequestsPerChild 0
+
+#
+# Listen: Allows you to bind Apache to specific IP addresses and/or
+# ports, instead of the default. See also the <VirtualHost>
+# directive.
+#
+#Listen 3000
+#Listen 12.34.56.78:80
+
+#
+# BindAddress: You can support virtual hosts with this option. This directive
+# is used to tell the server which IP address to listen to. It can either
+# contain "*", an IP address, or a fully qualified Internet domain name.
+# See also the <VirtualHost> and Listen directives.
+#
+#BindAddress *
+
+#
+# Dynamic Shared Object (DSO) Support
+#
+# To be able to use the functionality of a module which was built as a DSO you
+# have to place corresponding `LoadModule' lines at this location so the
+# directives contained in it are actually available _before_ they are used.
+# Please read the file http://httpd.apache.org/docs/dso.html for more
+# details about the DSO mechanism and run `httpd -l' for the list of already
+# built-in (statically linked and thus always available) modules in your httpd
+# binary.
+#
+# Note: The order in which modules are loaded is important.  Don't change
+# the order below without expert advice.
+#
+# Example:
+# LoadModule foo_module libexec/mod_foo.so
+LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
+#LoadModule env_module         libexec/apache/mod_env.so
+LoadModule define_module      libexec/apache/mod_define.so
+LoadModule config_log_module  libexec/apache/mod_log_config.so
+LoadModule mime_magic_module  libexec/apache/mod_mime_magic.so
+LoadModule mime_module        libexec/apache/mod_mime.so
+LoadModule negotiation_module libexec/apache/mod_negotiation.so
+#LoadModule status_module      libexec/apache/mod_status.so
+#LoadModule info_module        libexec/apache/mod_info.so
+LoadModule includes_module    libexec/apache/mod_include.so
+LoadModule autoindex_module   libexec/apache/mod_autoindex.so
+LoadModule dir_module         libexec/apache/mod_dir.so
+LoadModule cgi_module         libexec/apache/mod_cgi.so
+#LoadModule asis_module        libexec/apache/mod_asis.so
+#LoadModule imap_module        libexec/apache/mod_imap.so
+#LoadModule action_module      libexec/apache/mod_actions.so
+#LoadModule speling_module     libexec/apache/mod_speling.so
+#LoadModule userdir_module     libexec/apache/mod_userdir.so
+LoadModule alias_module       libexec/apache/mod_alias.so
+LoadModule rewrite_module     libexec/apache/mod_rewrite.so
+LoadModule access_module      libexec/apache/mod_access.so
+LoadModule auth_module        libexec/apache/mod_auth.so
+LoadModule anon_auth_module   libexec/apache/mod_auth_anon.so
+#LoadModule dbm_auth_module    libexec/apache/mod_auth_dbm.so
+#LoadModule digest_module      libexec/apache/mod_digest.so
+LoadModule proxy_module       libexec/apache/libproxy.so
+LoadModule cern_meta_module   libexec/apache/mod_cern_meta.so
+LoadModule expires_module     libexec/apache/mod_expires.so
+LoadModule headers_module     libexec/apache/mod_headers.so
+#LoadModule usertrack_module   libexec/apache/mod_usertrack.so
+#LoadModule log_forensic_module libexec/apache/mod_log_forensic.so
+#LoadModule unique_id_module   libexec/apache/mod_unique_id.so
+LoadModule setenvif_module    libexec/apache/mod_setenvif.so
+
+#  Reconstruction of the complete module list from all available modules
+#  (static and shared ones) to achieve correct module execution order.
+#  [WHENEVER YOU CHANGE THE LOADMODULE SECTION ABOVE UPDATE THIS, TOO]
+ClearModuleList
+AddModule mod_vhost_alias.c
+#AddModule mod_env.c
+AddModule mod_define.c
+AddModule mod_log_config.c
+AddModule mod_mime_magic.c
+AddModule mod_mime.c
+AddModule mod_negotiation.c
+#AddModule mod_status.c
+#AddModule mod_info.c
+AddModule mod_include.c
+AddModule mod_autoindex.c
+AddModule mod_dir.c
+AddModule mod_cgi.c
+#AddModule mod_asis.c
+#AddModule mod_imap.c
+#AddModule mod_actions.c
+#AddModule mod_speling.c
+#AddModule mod_userdir.c
+AddModule mod_alias.c
+AddModule mod_rewrite.c
+AddModule mod_access.c
+AddModule mod_auth.c
+AddModule mod_auth_anon.c
+#AddModule mod_auth_dbm.c
+#AddModule mod_digest.c
+AddModule mod_proxy.c
+AddModule mod_cern_meta.c
+AddModule mod_expires.c
+AddModule mod_headers.c
+#AddModule mod_usertrack.c
+#AddModule mod_log_forensic.c
+#AddModule mod_unique_id.c
+AddModule mod_so.c
+AddModule mod_setenvif.c
+
+#
+# ExtendedStatus controls whether Apache will generate "full" status
+# information (ExtendedStatus On) or just basic information (ExtendedStatus
+# Off) when the "server-status" handler is called. The default is Off.
+#
+#ExtendedStatus On
+
+### Section 2: 'Main' server configuration
+#
+# The directives in this section set up the values used by the 'main'
+# server, which responds to any requests that aren't handled by a
+# <VirtualHost> definition.  These values also provide defaults for
+# any <VirtualHost> containers you may define later in the file.
+#
+# All of these directives may appear inside <VirtualHost> containers,
+# in which case these default settings will be overridden for the
+# virtual host being defined.
+#
+
+#
+# If your ServerType directive (set earlier in the 'Global Environment'
+# section) is set to "inetd", the next few directives don't have any
+# effect since their settings are defined by the inetd configuration.
+# Skip ahead to the ServerAdmin directive.
+#
+
+#
+# Port: The port to which the standalone server listens. For
+# ports < 1023, you will need httpd to be run as root initially.
+#
+Port 80
+
+#
+# If you wish httpd to run as a different user or group, you must run
+# httpd as root initially and it will switch.  
+#
+# User/Group: The name (or #number) of the user/group to run httpd as.
+#  . On SCO (ODT 3) use "User nouser" and "Group nogroup".
+#  . On HPUX you may not be able to use shared memory as nobody, and the
+#    suggested workaround is to create a user www and use that user.
+#  NOTE that some kernels refuse to setgid(Group) or semctl(IPC_SET)
+#  when the value of (unsigned)Group is above 60000; 
+#  don't use Group "#-1" on these systems!
+#
+User nobody
+Group nobody
+
+#
+# ServerAdmin: Your address, where problems with the server should be
+# e-mailed.  This address appears on some server-generated pages, such
+# as error documents.
+#
+ServerAdmin root@midas.slackware.lan
+
+#
+# ServerName allows you to set a host name which is sent back to clients for
+# your server if it's different than the one the program would get (i.e., use
+# "www" instead of the host's real name).
+#
+# Note: You cannot just invent host names and hope they work. The name you 
+# define here must be a valid DNS name for your host. If you don't understand
+# this, ask your network administrator.
+# If your host doesn't have a registered DNS name, enter its IP address here.
+# You will have to access it by its address (e.g., http://123.45.67.89/)
+# anyway, and this will make redirections work in a sensible way.
+#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your 
+# machine always knows itself by this address. If you use Apache strictly for 
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
+#ServerName www.example.com
+
+#
+# DocumentRoot: The directory out of which you will serve your
+# documents. By default, all requests are taken from this directory, but
+# symbolic links and aliases may be used to point to other locations.
+#
+DocumentRoot "/var/www/htdocs"
+
+#
+# Each directory to which Apache has access, can be configured with respect
+# to which services and features are allowed and/or disabled in that
+# directory (and its subdirectories). 
+#
+# First, we configure the "default" to be a very restrictive set of 
+# permissions.  
+#
+<Directory />
+    Options FollowSymLinks
+    AllowOverride None
+</Directory>
+
+#
+# Note that from this point forward you must specifically allow
+# particular features to be enabled - so if something's not working as
+# you might expect, make sure that you have specifically enabled it
+# below.
+#
+
+#
+# This should be changed to whatever you set DocumentRoot to.
+#
+<Directory "/var/www/htdocs">
+
+#
+# This may also be "None", "All", or any combination of "Indexes",
+# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
+#
+# Note that "MultiViews" must be named *explicitly* --- "Options All"
+# doesn't give it to you.
+#
+    Options Indexes FollowSymLinks MultiViews
+
+#
+# This controls which options the .htaccess files in directories can
+# override. Can also be "All", or any combination of "Options", "FileInfo", 
+# "AuthConfig", and "Limit"
+#
+    AllowOverride None
+
+#
+# Controls who can get stuff from this server.
+#
+    Order allow,deny
+    Allow from all
+</Directory>
+
+#
+# UserDir: The name of the directory which is appended onto a user's home
+# directory if a ~user request is received.
+#
+<IfModule mod_userdir.c>
+    UserDir public_html
+</IfModule>
+
+#
+# Control access to UserDir directories.  The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory /home/*/public_html>
+#    AllowOverride FileInfo AuthConfig Limit
+#    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+#    <Limit GET POST OPTIONS PROPFIND>
+#        Order allow,deny
+#        Allow from all
+#    </Limit>
+#    <LimitExcept GET POST OPTIONS PROPFIND>
+#        Order deny,allow
+#        Deny from all
+#    </LimitExcept>
+#</Directory>
+
+#
+# DirectoryIndex: Name of the file or files to use as a pre-written HTML
+# directory index.  Separate multiple entries with spaces.
+#
+<IfModule mod_dir.c>
+    DirectoryIndex index.html
+</IfModule>
+
+#
+# AccessFileName: The name of the file to look for in each directory
+# for access control information.
+#
+AccessFileName .htaccess
+
+#
+# The following lines prevent .htaccess files from being viewed by
+# Web clients.  Since .htaccess files often contain authorization
+# information, access is disallowed for security reasons.  Comment
+# these lines out if you want Web visitors to see the contents of
+# .htaccess files.  If you change the AccessFileName directive above,
+# be sure to make the corresponding changes here.
+#
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
+    Order allow,deny
+    Deny from all
+    Satisfy All
+</Files>
+
+#
+# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
+# document that was negotiated on the basis of content. This asks proxy
+# servers not to cache the document. Uncommenting the following line disables
+# this behavior, and proxies will be allowed to cache the documents.
+#
+#CacheNegotiatedDocs
+
+#
+# UseCanonicalName:  (new for 1.3)  With this setting turned on, whenever
+# Apache needs to construct a self-referencing URL (a URL that refers back
+# to the server the response is coming from) it will use ServerName and
+# Port to form a "canonical" name.  With this setting off, Apache will
+# use the hostname:port that the client supplied, when possible.  This
+# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
+#
+UseCanonicalName On
+
+#
+# TypesConfig describes where the mime.types file (or equivalent) is
+# to be found.
+#
+<IfModule mod_mime.c>
+    TypesConfig /etc/apache/mime.types
+</IfModule>
+
+#
+# DefaultType is the default MIME type the server will use for a document
+# if it cannot otherwise determine one, such as from filename extensions.
+# If your server contains mostly text or HTML documents, "text/plain" is
+# a good value.  If most of your content is binary, such as applications
+# or images, you may want to use "application/octet-stream" instead to
+# keep browsers from trying to display binary files as though they are
+# text.
+#
+DefaultType text/plain
+
+#
+# The mod_mime_magic module allows the server to use various hints from the
+# contents of the file itself to determine its type.  The MIMEMagicFile
+# directive tells the module where the hint definitions are located.
+# mod_mime_magic is not part of the default server (you have to add
+# it yourself with a LoadModule [see the DSO paragraph in the 'Global
+# Environment' section], or recompile the server and include mod_mime_magic
+# as part of the configuration), so it's enclosed in an <IfModule> container.
+# This means that the MIMEMagicFile directive will only be processed if the
+# module is part of the server.
+#
+<IfModule mod_mime_magic.c>
+    MIMEMagicFile /etc/apache/magic
+</IfModule>
+
+#
+# HostnameLookups: Log the names of clients or just their IP addresses
+# e.g., www.apache.org (on) or 204.62.129.132 (off).
+# The default is off because it'd be overall better for the net if people
+# had to knowingly turn this feature on, since enabling it means that
+# each client request will result in AT LEAST one lookup request to the
+# nameserver.
+#
+HostnameLookups Off
+
+#
+# ErrorLog: The location of the error log file.
+# If you do not specify an ErrorLog directive within a <VirtualHost>
+# container, error messages relating to that virtual host will be
+# logged here.  If you *do* define an error logfile for a <VirtualHost>
+# container, that host's errors will be logged there and not here.
+#
+ErrorLog "| /usr/bin/error-log.sh /var/log/apache/error_log"
+
+#
+# LogLevel: Control the number of messages logged to the error_log.
+# Possible values include: debug, info, notice, warn, error, crit,
+# alert, emerg.
+#
+LogLevel warn
+
+#
+# The following directives define some format nicknames for use with
+# a CustomLog directive (see below).
+#
+LogFormat "%l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
+LogFormat "%l %u %t \"%r\" %>s %b" common
+LogFormat "%{Referer}i -> %U" referer
+LogFormat "%{User-agent}i" agent
+
+#
+# The location and format of the access logfile (Common Logfile Format).
+# If you do not define any access logfiles within a <VirtualHost>
+# container, they will be logged here.  Contrariwise, if you *do*
+# define per-<VirtualHost> access logfiles, transactions will be
+# logged therein and *not* in this file.
+#
+CustomLog /var/log/apache/access_log common
+
+#
+# If you would like to have agent and referer logfiles, uncomment the
+# following directives.
+#
+#CustomLog /var/log/apache/referer_log referer
+#CustomLog /var/log/apache/agent_log agent
+
+#
+# If you prefer a single logfile with access, agent, and referer information
+# (Combined Logfile Format) you can use the following directive.
+#
+#CustomLog /var/log/apache/access_log combined
+
+#
+# Optionally add a line containing the server version and virtual host
+# name to server-generated pages (error documents, FTP directory listings,
+# mod_status and mod_info output etc., but not CGI generated documents).
+# Set to "EMail" to also include a mailto: link to the ServerAdmin.
+# Set to one of:  On | Off | EMail
+#
+ServerSignature Off
+
+# EBCDIC configuration:
+# (only for mainframes using the EBCDIC codeset, currently one of:
+# Fujitsu-Siemens' BS2000/OSD, IBM's OS/390 and IBM's TPF)!!
+# The following default configuration assumes that "text files"
+# are stored in EBCDIC (so that you can operate on them using the
+# normal POSIX tools like grep and sort) while "binary files" are
+# stored with identical octets as on an ASCII machine.
+#
+# The directives are evaluated in configuration file order, with
+# the EBCDICConvert directives applied before EBCDICConvertByType.
+#
+# If you want to have ASCII HTML documents and EBCDIC HTML documents
+# at the same time, you can use the file extension to force
+# conversion off for the ASCII documents:
+# > AddType       text/html .ahtml
+# > EBCDICConvert Off=InOut .ahtml
+#
+# EBCDICConvertByType  On=InOut text/* message/* multipart/*
+# EBCDICConvertByType  On=In    application/x-www-form-urlencoded
+# EBCDICConvertByType  On=InOut application/postscript model/vrml
+# EBCDICConvertByType Off=InOut */*
+
+
+#
+# Aliases: Add here as many aliases as you need (with no limit). The format is 
+# Alias fakename realname
+#
+<IfModule mod_alias.c>
+
+    #
+    # Note that if you include a trailing / on fakename then the server will
+    # require it to be present in the URL.  So "/icons" isn't aliased in this
+    # example, only "/icons/".  If the fakename is slash-terminated, then the 
+    # realname must also be slash terminated, and if the fakename omits the 
+    # trailing slash, the realname must also omit it.
+    #
+    Alias /icons/ "/var/www/icons/"
+
+    <Directory "/var/www/icons">
+        Options Indexes MultiViews
+        AllowOverride None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+    # This Alias will project the on-line documentation tree under /manual/
+    # even if you change the DocumentRoot. Comment it if you don't want to 
+    # provide access to the on-line documentation.
+    #
+    Alias /manual/ "/var/www/htdocs/manual/"
+
+    <Directory "/var/www/htdocs/manual">
+        Options Indexes FollowSymlinks MultiViews
+        AllowOverride None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+    #
+    # ScriptAlias: This controls which directories contain server scripts.
+    # ScriptAliases are essentially the same as Aliases, except that
+    # documents in the realname directory are treated as applications and
+    # run by the server when requested rather than as documents sent to the client.
+    # The same rules about trailing "/" apply to ScriptAlias directives as to
+    # Alias.
+    #
+    ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
+
+    #
+    # "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
+    # CGI directory exists, if you have that configured.
+    #
+    <Directory "/var/www/cgi-bin">
+        AllowOverride None
+        Options None
+        Order allow,deny
+        Allow from all
+    </Directory>
+
+</IfModule>
+# End of aliases.
+
+#
+# Redirect allows you to tell clients about documents which used to exist in
+# your server's namespace, but do not anymore. This allows you to tell the
+# clients where to look for the relocated document.
+# Format: Redirect old-URI new-URL
+#
+
+#
+# Directives controlling the display of server-generated directory listings.
+#
+<IfModule mod_autoindex.c>
+
+    #
+    # FancyIndexing is whether you want fancy directory indexing or standard
+    #
+    IndexOptions FancyIndexing
+
+    #
+    # AddIcon* directives tell the server which icon to show for different
+    # files or filename extensions.  These are only displayed for
+    # FancyIndexed directories.
+    #
+    AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+    AddIconByType (TXT,/icons/text.gif) text/*
+    AddIconByType (IMG,/icons/image2.gif) image/*
+    AddIconByType (SND,/icons/sound2.gif) audio/*
+    AddIconByType (VID,/icons/movie.gif) video/*
+
+    AddIcon /icons/binary.gif .bin .exe
+    AddIcon /icons/binhex.gif .hqx
+    AddIcon /icons/tar.gif .tar
+    AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+    AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+    AddIcon /icons/a.gif .ps .ai .eps
+    AddIcon /icons/layout.gif .html .shtml .htm .pdf
+    AddIcon /icons/text.gif .txt
+    AddIcon /icons/c.gif .c
+    AddIcon /icons/p.gif .pl .py
+    AddIcon /icons/f.gif .for
+    AddIcon /icons/dvi.gif .dvi
+    AddIcon /icons/uuencoded.gif .uu
+    AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+    AddIcon /icons/tex.gif .tex
+    AddIcon /icons/bomb.gif core
+
+    AddIcon /icons/back.gif ..
+    AddIcon /icons/hand.right.gif README
+    AddIcon /icons/folder.gif ^^DIRECTORY^^
+    AddIcon /icons/blank.gif ^^BLANKICON^^
+
+    #
+    # DefaultIcon is which icon to show for files which do not have an icon
+    # explicitly set.
+    #
+    DefaultIcon /icons/unknown.gif
+
+    #
+    # AddDescription allows you to place a short description after a file in
+    # server-generated indexes.  These are only displayed for FancyIndexed
+    # directories.
+    # Format: AddDescription "description" filename
+    #
+    #AddDescription "GZIP compressed document" .gz
+    #AddDescription "tar archive" .tar
+    #AddDescription "GZIP compressed tar archive" .tgz
+
+    #
+    # ReadmeName is the name of the README file the server will look for by
+    # default, and append to directory listings.
+    #
+    # HeaderName is the name of a file which should be prepended to
+    # directory indexes. 
+    #
+    ReadmeName README.html
+    HeaderName HEADER.html
+
+    #
+    # IndexIgnore is a set of filenames which directory indexing should ignore
+    # and not include in the listing.  Shell-style wildcarding is permitted.
+    #
+    IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
+
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+    #
+    # AddLanguage allows you to specify the language of a document. You can
+    # then use content negotiation to give a browser a file in a language
+    # it can understand.  
+    #
+    # Note 1: The suffix does not have to be the same as the language 
+    # keyword --- those with documents in Polish (whose net-standard 
+    # language code is pl) may wish to use "AddLanguage pl .po" to 
+    # avoid the ambiguity with the common suffix for perl scripts.
+    #
+    # Note 2: The example entries below illustrate that in quite
+    # some cases the two character 'Language' abbreviation is not
+    # identical to the two character 'Country' code for its country,
+    # E.g. 'Danmark/dk' versus 'Danish/da'.
+    #
+    # Note 3: In the case of 'ltz' we violate the RFC by using a three char 
+    # specifier. But there is 'work in progress' to fix this and get 
+    # the reference data for rfc1766 cleaned up.
+    #
+    # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+    # French (fr) - German (de) - Greek-Modern (el)
+    # Italian (it) - Korean (kr) - Norwegian (no) - Norwegian Nynorsk (nn)
+    # Portugese (pt) - Luxembourgeois* (ltz)
+    # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cs)
+    # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+    # Russian (ru)
+    #
+    AddLanguage da .dk
+    AddLanguage nl .nl
+    AddLanguage en .en
+    AddLanguage et .ee
+    AddLanguage fr .fr
+    AddLanguage de .de
+    AddLanguage el .el
+    AddLanguage he .he
+    AddCharset ISO-8859-8 .iso8859-8
+    AddLanguage it .it
+    AddLanguage ja .ja
+    AddCharset ISO-2022-JP .jis
+    AddLanguage kr .kr
+    AddCharset ISO-2022-KR .iso-kr
+    AddLanguage nn .nn
+    AddLanguage no .no
+    AddLanguage pl .po
+    AddCharset ISO-8859-2 .iso-pl
+    AddLanguage pt .pt
+    AddLanguage pt-br .pt-br
+    AddLanguage ltz .lu
+    AddLanguage ca .ca
+    AddLanguage es .es
+    AddLanguage sv .sv
+    AddLanguage cs .cz .cs
+    AddLanguage ru .ru
+    AddLanguage zh-TW .zh-tw
+    AddCharset Big5         .Big5    .big5
+    AddCharset WINDOWS-1251 .cp-1251
+    AddCharset CP866        .cp866
+    AddCharset ISO-8859-5   .iso-ru
+    AddCharset KOI8-R       .koi8-r
+    AddCharset UCS-2        .ucs2
+    AddCharset UCS-4        .ucs4
+    AddCharset UTF-8        .utf8
+
+    # LanguagePriority allows you to give precedence to some languages
+    # in case of a tie during content negotiation.
+    #
+    # Just list the languages in decreasing order of preference. We have
+    # more or less alphabetized them here. You probably want to change this.
+    #
+    <IfModule mod_negotiation.c>
+        LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+    </IfModule>
+
+    #
+    # AddType allows you to tweak mime.types without actually editing it, or to
+    # make certain files to be certain types.
+    #
+    AddType application/x-tar .tgz
+
+    #
+    # AddEncoding allows you to have certain browsers uncompress
+    # information on the fly. Note: Not all browsers support this.
+    # Despite the name similarity, the following Add* directives have nothing
+    # to do with the FancyIndexing customization directives above.
+    #
+    AddEncoding x-compress .Z
+    AddEncoding x-gzip .gz .tgz
+    #
+    # If the AddEncoding directives above are commented-out, then you
+    # probably should define those extensions to indicate media types:
+    #
+    #AddType application/x-compress .Z
+    #AddType application/x-gzip .gz .tgz
+
+    #
+    # AddHandler allows you to map certain file extensions to "handlers",
+    # actions unrelated to filetype. These can be either built into the server
+    # or added with the Action command (see below)
+    #
+    # If you want to use server side includes, or CGI outside
+    # ScriptAliased directories, uncomment the following lines.
+    #
+    # To use CGI scripts:
+    #
+    #AddHandler cgi-script .cgi
+
+    #
+    # To use server-parsed HTML files
+    #
+    #AddType text/html .shtml
+    #AddHandler server-parsed .shtml
+
+    #
+    # Uncomment the following line to enable Apache's send-asis HTTP file
+    # feature
+    #
+    #AddHandler send-as-is asis
+
+    #
+    # If you wish to use server-parsed imagemap files, use
+    #
+    #AddHandler imap-file map
+
+    #
+    # To enable type maps, you might want to use
+    #
+    #AddHandler type-map var
+
+</IfModule>
+# End of document types.
+
+#
+# Action lets you define media types that will execute a script whenever
+# a matching file is called. This eliminates the need for repeated URL
+# pathnames for oft-used CGI file processors.
+# Format: Action media/type /cgi-script/location
+# Format: Action handler-name /cgi-script/location
+#
+
+#
+# MetaDir: specifies the name of the directory in which Apache can find
+# meta information files. These files contain additional HTTP headers
+# to include when sending the document
+#
+#MetaDir .web
+
+#
+# MetaSuffix: specifies the file name suffix for the file containing the
+# meta information.
+#
+#MetaSuffix .meta
+
+#
+# Customizable error response (Apache style)
+#  these come in three flavors
+#
+#    1) plain text
+ErrorDocument 500 /missing.html
+#  n.b.  the single leading (") marks it as text, it does not get output
+#
+#    2) local redirects
+ErrorDocument 404 /missing.html
+#  to redirect to local URL /missing.html
+#ErrorDocument 404 /cgi-bin/missing_handler.pl
+#  N.B.: You can redirect to a script or a document using server-side-includes.
+#
+#    3) external redirects
+ErrorDocument 402 /missing.html
+#  N.B.: Many of the environment variables associated with the original
+#  request will *not* be available to such a script.
+
+#
+# Customize behaviour based on the browser
+#
+<IfModule mod_setenvif.c>
+
+    #
+    # The following directives modify normal HTTP response behavior.
+    # The first directive disables keepalive for Netscape 2.x and browsers that
+    # spoof it. There are known problems with these browser implementations.
+    # The second directive is for Microsoft Internet Explorer 4.0b2
+    # which has a broken HTTP/1.1 implementation and does not properly
+    # support keepalive when it is used on 301 or 302 (redirect) responses.
+    #
+    BrowserMatch "Mozilla/2" nokeepalive
+    BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+    #
+    # The following directive disables HTTP/1.1 responses to browsers which
+    # are in violation of the HTTP/1.0 spec by not being able to grok a
+    # basic 1.1 response.
+    #
+    BrowserMatch "RealPlayer 4\.0" force-response-1.0
+    BrowserMatch "Java/1\.0" force-response-1.0
+    BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
+
+#
+# Allow server status reports, with the URL of http://servername/server-status
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-status>
+#    SetHandler server-status
+#    Order deny,allow
+#    Deny from all
+#    Allow from .example.com
+#</Location>
+
+#
+# Allow remote server configuration reports, with the URL of
+# http://servername/server-info (requires that mod_info.c be loaded).
+# Change the ".example.com" to match your domain to enable.
+#
+#<Location /server-info>
+#    SetHandler server-info
+#    Order deny,allow
+#    Deny from all
+#    Allow from .example.com
+#</Location>
+
+#
+# There have been reports of people trying to abuse an old bug from pre-1.1
+# days.  This bug involved a CGI script distributed as a part of Apache.
+# By uncommenting these lines you can redirect these attacks to a logging 
+# script on phf.apache.org.  Or, you can record them yourself, using the script
+# support/phf_abuse_log.cgi.
+#
+#<Location /cgi-bin/phf*>
+#    Deny from all
+#    ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
+#</Location>
+
+### Section 3: Virtual Hosts
+#
+# VirtualHost: If you want to maintain multiple domains/hostnames on your
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
+# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
+# for further details before you try to setup virtual hosts.
+#
+# You may use the command line option '-S' to verify your virtual host
+# configuration.
+
+#
+# Use name-based virtual hosting.
+#
+#NameVirtualHost *:80
+
+#
+# VirtualHost example:
+# Almost any Apache directive may go into a VirtualHost container.
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *:80>
+#    ServerAdmin webmaster@dummy-host.example.com
+#    DocumentRoot /www/docs/dummy-host.example.com
+#    ServerName dummy-host.example.com
+#    ErrorLog logs/dummy-host.example.com-error_log
+#    CustomLog logs/dummy-host.example.com-access_log common
+#</VirtualHost>
+
+# By default, all external Apache modules are disabled.  To enable a particular
+# module for Apache, make sure the necessary packages are installed.  Then
+# uncomment the appropriate Include line below, save the file, and restart
+# Apache.  Note that some modules may need additional configuration steps.  For
+# example, mod_ssl requires a site certificate which you may need to generate.
+#
+# Lastly, if you remove a module package, be sure to edit this file and comment
+# out the appropriate Include line.
+
+# ==> mod_php configuration settings <==
+#
+# PACKAGES REQUIRED:  openssl-solibs (A series) and/or openssl (N series),
+#                     mysql (AP series), gmp (L series), mhash (L series),
+#                     and apache (N series)
+#
+#Include /etc/apache/mod_php.conf
+
+# ==> mod_ssl configuration settings <==
+#
+# PACKAGES REQUIRED:  apache (N series) and openssl (N series)
+#
+#Include /etc/apache/mod_ssl.conf
+
+#NameVirtualHost VSERVER_IP
+
+Include /etc/apache/vhosts
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/apache/php.ini b/tags/0.5/templates/vserver/vserver.d/etc/apache/php.ini
new file mode 100644 (file)
index 0000000..e6cddef
--- /dev/null
@@ -0,0 +1,1122 @@
+[PHP]
+
+;;;;;;;;;;;;;;;;;;;
+; About this file ;
+;;;;;;;;;;;;;;;;;;;
+;
+; This is the recommended, PHP 4-style version of the php.ini-dist file.  It
+; sets some non standard settings, that make PHP more efficient, more secure,
+; and encourage cleaner coding.
+; The price is that with these settings, PHP may be incompatible with some
+; applications, and sometimes, more difficult to develop with.  Using this
+; file is warmly recommended for production sites.  As all of the changes from
+; the standard settings are thoroughly documented, you can go over each one,
+; and decide whether you want to use it or not.
+;
+; For general information about the php.ini file, please consult the php.ini-dist
+; file, included in your PHP distribution.
+;
+; This file is different from the php.ini-dist file in the fact that it features
+; different values for several directives, in order to improve performance, while
+; possibly breaking compatibility with the standard out-of-the-box behavior of
+; PHP 3.  Please make sure you read what's different, and modify your scripts
+; accordingly, if you decide to use this file instead.
+;
+; - register_globals = Off         [Security, Performance]
+;     Global variables are no longer registered for input data (POST, GET, cookies,
+;     environment and other server variables).  Instead of using $foo, you must use
+;     you can use $_REQUEST["foo"] (includes any variable that arrives through the
+;     request, namely, POST, GET and cookie variables), or use one of the specific
+;     $_GET["foo"], $_POST["foo"], $_COOKIE["foo"] or $_FILES["foo"], depending
+;     on where the input originates.  Also, you can look at the
+;     import_request_variables() function.
+;     Note that register_globals is going to be depracated (i.e., turned off by
+;     default) in the next version of PHP, because it often leads to security bugs.
+;     Read http://php.net/manual/en/security.registerglobals.php for further
+;     information.
+; - display_errors = Off           [Security]
+;     With this directive set to off, errors that occur during the execution of
+;     scripts will no longer be displayed as a part of the script output, and thus,
+;     will no longer be exposed to remote users.  With some errors, the error message
+;     content may expose information about your script, web server, or database
+;     server that may be exploitable for hacking.  Production sites should have this
+;     directive set to off.
+; - log_errors = On                [Security]
+;     This directive complements the above one.  Any errors that occur during the
+;     execution of your script will be logged (typically, to your server's error log,
+;     but can be configured in several ways).  Along with setting display_errors to off,
+;     this setup gives you the ability to fully understand what may have gone wrong,
+;     without exposing any sensitive information to remote users.
+; - output_buffering = 4096        [Performance]
+;     Set a 4KB output buffer.  Enabling output buffering typically results in less
+;     writes, and sometimes less packets sent on the wire, which can often lead to
+;     better performance.  The gain this directive actually yields greatly depends
+;     on which Web server you're working with, and what kind of scripts you're using.
+; - register_argc_argv = Off       [Performance]
+;     Disables registration of the somewhat redundant $argv and $argc global
+;     variables.
+; - magic_quotes_gpc = Off         [Performance]
+;     Input data is no longer escaped with slashes so that it can be sent into
+;     SQL databases without further manipulation.  Instead, you should use the
+;     function addslashes() on each input element you wish to send to a database.
+; - variables_order = "GPCS"       [Performance]
+;     The environment variables are not hashed into the $HTTP_ENV_VARS[].  To access
+;     environment variables, you can use getenv() instead.
+; - error_reporting = E_ALL        [Code Cleanliness, Security(?)]
+;     By default, PHP surpresses errors of type E_NOTICE.  These error messages
+;     are emitted for non-critical errors, but that could be a symptom of a bigger
+;     problem.  Most notably, this will cause error messages about the use
+;     of uninitialized variables to be displayed.
+; - allow_call_time_pass_reference = Off     [Code cleanliness]
+;     It's not possible to decide to force a variable to be passed by reference
+;     when calling a function.  The PHP 4 style to do this is by making the
+;     function require the relevant argument by reference.
+
+
+;;;;;;;;;;;;;;;;;;;;
+; Language Options ;
+;;;;;;;;;;;;;;;;;;;;
+
+; Enable the PHP scripting language engine under Apache.
+engine = On
+
+; Allow the <? tag.  Otherwise, only <?php and <script> tags are recognized.  
+; NOTE: Using short tags should be avoided when developing applications or
+; libraries that are meant for redistribution, or deployment on PHP
+; servers which are not under your control, because short tags may not
+; be supported on the target server. For portable, redistributable code,
+; be sure not to use short tags.
+short_open_tag = On
+
+; Allow ASP-style <% %> tags.
+asp_tags = Off
+
+; The number of significant digits displayed in floating point numbers.
+precision    =  14
+
+; Enforce year 2000 compliance (will cause problems with non-compliant browsers)
+y2k_compliance = On
+
+; Output buffering allows you to send header lines (including cookies) even
+; after you send body content, at the price of slowing PHP's output layer a
+; bit.  You can enable output buffering during runtime by calling the output
+; buffering functions.  You can also enable output buffering for all files by
+; setting this directive to On.  If you wish to limit the size of the buffer
+; to a certain size - you can use a maximum number of bytes instead of 'On', as
+; a value for this directive (e.g., output_buffering=4096).
+output_buffering = 4096
+
+; You can redirect all of the output of your scripts to a function.  For
+; example, if you set output_handler to "mb_output_handler", character
+; encoding will be transparently converted to the specified encoding.
+; Setting any output handler automatically turns on output buffering.
+; Note: People who wrote portable scripts should not depend on this ini
+;       directive. Instead, explicitly set the output handler using ob_start().
+;       Using this ini directive may cause problems unless you know what script 
+;       is doing.
+; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler"
+;       and you cannot use both "ob_gzhandler" and "zlib.output_compression". 
+;output_handler =
+
+; Transparent output compression using the zlib library
+; Valid values for this option are 'off', 'on', or a specific buffer size
+; to be used for compression (default is 4KB)
+; Note: Resulting chunk size may vary due to nature of compression. PHP 
+;       outputs chunks that are few handreds bytes each as a result of compression. 
+;       If you want larger chunk size for better performence, enable output_buffering 
+;       also. 
+; Note: output_handler must be empty if this is set 'On' !!!!
+;       Instead you must use zlib.output_handler.
+zlib.output_compression = Off
+
+; You cannot specify additional output handlers if zlib.output_compression
+; is activated here. This setting does the same as output_handler but in
+; a different order.
+;zlib.output_handler =
+
+; Implicit flush tells PHP to tell the output layer to flush itself
+; automatically after every output block.  This is equivalent to calling the
+; PHP function flush() after each and every call to print() or echo() and each
+; and every HTML block.  Turning this option on has serious performance
+; implications and is generally recommended for debugging purposes only.
+implicit_flush = Off
+
+; The unserialize callback function will be called (with the undefined class'
+; name as parameter), if the unserializer finds an undefined class
+; which should be instanciated.
+; A warning appears if the specified function is not defined, or if the
+; function doesn't include/implement the missing class.
+; So only set this entry, if you really want to implement such a 
+; callback-function.
+unserialize_callback_func=
+
+; When floats & doubles are serialized store serialize_precision significant
+; digits after the floating point. The default value ensures that when floats
+; are decoded with unserialize, the data will remain the same.
+serialize_precision = 100
+
+; Whether to enable the ability to force arguments to be passed by reference
+; at function call time.  This method is deprecated and is likely to be
+; unsupported in future versions of PHP/Zend.  The encouraged method of
+; specifying which arguments should be passed by reference is in the function
+; declaration.  You're encouraged to try and turn this option Off and make
+; sure your scripts work properly with it in order to ensure they will work
+; with future versions of the language (you will receive a warning each time
+; you use this feature, and the argument will be passed by value instead of by
+; reference).
+allow_call_time_pass_reference = Off
+
+;
+; Safe Mode
+;
+safe_mode = Off
+
+; By default, Safe Mode does a UID compare check when
+; opening files. If you want to relax this to a GID compare,
+; then turn on safe_mode_gid.
+safe_mode_gid = Off
+
+; When safe_mode is on, UID/GID checks are bypassed when
+; including files from this directory and its subdirectories.
+; (directory must also be in include_path or full path must
+; be used when including)
+safe_mode_include_dir =                                                                
+
+; When safe_mode is on, only executables located in the safe_mode_exec_dir
+; will be allowed to be executed via the exec family of functions.
+safe_mode_exec_dir =
+
+; Setting certain environment variables may be a potential security breach.
+; This directive contains a comma-delimited list of prefixes.  In Safe Mode,
+; the user may only alter environment variables whose names begin with the
+; prefixes supplied here.  By default, users will only be able to set
+; environment variables that begin with PHP_ (e.g. PHP_FOO=BAR).
+;
+; Note:  If this directive is empty, PHP will let the user modify ANY
+; environment variable!
+safe_mode_allowed_env_vars = PHP_
+
+; This directive contains a comma-delimited list of environment variables that
+; the end user won't be able to change using putenv().  These variables will be
+; protected even if safe_mode_allowed_env_vars is set to allow to change them.
+safe_mode_protected_env_vars = LD_LIBRARY_PATH
+
+; open_basedir, if set, limits all file operations to the defined directory
+; and below.  This directive makes most sense if used in a per-directory
+; or per-virtualhost web server configuration file. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+;open_basedir =
+
+; This directive allows you to disable certain functions for security reasons.
+; It receives a comma-delimited list of function names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_functions =
+
+; This directive allows you to disable certain classes for security reasons.
+; It receives a comma-delimited list of class names. This directive is
+; *NOT* affected by whether Safe Mode is turned On or Off.
+disable_classes =
+
+; Colors for Syntax Highlighting mode.  Anything that's acceptable in
+; <font color="??????"> would work.
+;highlight.string  = #DD0000
+;highlight.comment = #FF9900
+;highlight.keyword = #007700
+;highlight.bg      = #FFFFFF
+;highlight.default = #0000BB
+;highlight.html    = #000000
+
+
+;
+; Misc
+;
+; Decides whether PHP may expose the fact that it is installed on the server
+; (e.g. by adding its signature to the Web server header).  It is no security
+; threat in any way, but it makes it possible to determine whether you use PHP
+; on your server or not.
+expose_php = On
+
+
+;;;;;;;;;;;;;;;;;;;
+; Resource Limits ;
+;;;;;;;;;;;;;;;;;;;
+
+max_execution_time = 30     ; Maximum execution time of each script, in seconds
+max_input_time = 60    ; Maximum amount of time each script may spend parsing request data
+memory_limit = 8M      ; Maximum amount of memory a script may consume (8MB)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Error handling and logging ;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; error_reporting is a bit-field.  Or each number up to get desired error
+; reporting level
+; E_ALL             - All errors and warnings
+; E_ERROR           - fatal run-time errors
+; E_WARNING         - run-time warnings (non-fatal errors)
+; E_PARSE           - compile-time parse errors
+; E_NOTICE          - run-time notices (these are warnings which often result
+;                     from a bug in your code, but it's possible that it was
+;                     intentional (e.g., using an uninitialized variable and
+;                     relying on the fact it's automatically initialized to an
+;                     empty string)
+; E_CORE_ERROR      - fatal errors that occur during PHP's initial startup
+; E_CORE_WARNING    - warnings (non-fatal errors) that occur during PHP's
+;                     initial startup
+; E_COMPILE_ERROR   - fatal compile-time errors
+; E_COMPILE_WARNING - compile-time warnings (non-fatal errors)
+; E_USER_ERROR      - user-generated error message
+; E_USER_WARNING    - user-generated warning message
+; E_USER_NOTICE     - user-generated notice message
+;
+; Examples:
+;
+;   - Show all errors, except for notices
+;
+;error_reporting = E_ALL & ~E_NOTICE
+;
+;   - Show only errors
+;
+;error_reporting = E_COMPILE_ERROR|E_ERROR|E_CORE_ERROR
+;
+;   - Show all errors
+;
+error_reporting  =  E_ALL
+
+; Print out errors (as a part of the output).  For production web sites,
+; you're strongly encouraged to turn this feature off, and use error logging
+; instead (see below).  Keeping display_errors enabled on a production web site
+; may reveal security information to end users, such as file paths on your Web
+; server, your database schema or other information.
+display_errors = Off
+
+; Even when display_errors is on, errors that occur during PHP's startup
+; sequence are not displayed.  It's strongly recommended to keep
+; display_startup_errors off, except for when debugging.
+display_startup_errors = Off
+
+; Log errors into a log file (server-specific log, stderr, or error_log (below))
+; As stated above, you're strongly advised to use error logging in place of
+; error displaying on production web sites.
+log_errors = On
+
+; Set maximum length of log_errors. In error_log information about the source is
+; added. The default is 1024 and 0 allows to not apply any maximum length at all.
+log_errors_max_len = 1024
+
+; Do not log repeated messages. Repeated errors must occur in same file on same
+; line until ignore_repeated_source is set true.
+ignore_repeated_errors = Off
+
+; Ignore source of message when ignoring repeated messages. When this setting 
+; is On you will not log errors with repeated messages from different files or
+; sourcelines.
+ignore_repeated_source = Off
+
+; If this parameter is set to Off, then memory leaks will not be shown (on
+; stdout or in the log). This has only effect in a debug compile, and if 
+; error reporting includes E_WARNING in the allowed list
+report_memleaks = On
+
+; Store the last error/warning message in $php_errormsg (boolean).
+track_errors = Off
+
+; Disable the inclusion of HTML tags in error messages.
+;html_errors = Off
+
+; If html_errors is set On PHP produces clickable error messages that direct 
+; to a page describing the error or function causing the error in detail.
+; You can download a copy of the PHP manual from http://www.php.net/docs.php 
+; and change docref_root to the base URL of your local copy including the
+; leading '/'. You must also specify the file extension being used including 
+; the dot.
+;docref_root = "/phpmanual/"
+;docref_ext = .html
+  
+; String to output before an error message.
+;error_prepend_string = "<font color=ff0000>"
+
+; String to output after an error message.
+;error_append_string = "</font>"
+
+; Log errors to specified file.
+;error_log = filename
+
+; Log errors to syslog (Event Log on NT, not valid in Windows 95).
+;error_log = syslog
+
+
+;;;;;;;;;;;;;;;;;
+; Data Handling ;
+;;;;;;;;;;;;;;;;;
+;
+; Note - track_vars is ALWAYS enabled as of PHP 4.0.3
+
+; The separator used in PHP generated URLs to separate arguments.
+; Default is "&". 
+;arg_separator.output = "&amp;"
+
+; List of separator(s) used by PHP to parse input URLs into variables.
+; Default is "&". 
+; NOTE: Every character in this directive is considered as separator!
+;arg_separator.input = ";&"
+
+; This directive describes the order in which PHP registers GET, POST, Cookie,
+; Environment and Built-in variables (G, P, C, E & S respectively, often
+; referred to as EGPCS or GPC).  Registration is done from left to right, newer
+; values override older values.
+variables_order = "GPCS"
+
+; Whether or not to register the EGPCS variables as global variables.  You may
+; want to turn this off if you don't want to clutter your scripts' global scope
+; with user data.  This makes most sense when coupled with track_vars - in which
+; case you can access all of the GPC variables through the $HTTP_*_VARS[],
+; variables.
+;
+; You should do your best to write your scripts so that they do not require
+; register_globals to be on;  Using form variables as globals can easily lead
+; to possible security problems, if the code is not very well thought of.
+register_globals = Off
+
+; This directive tells PHP whether to declare the argv&argc variables (that
+; would contain the GET information).  If you don't use these variables, you
+; should turn it off for increased performance.
+register_argc_argv = Off
+
+; Maximum size of POST data that PHP will accept.
+post_max_size = 8M
+
+; This directive is deprecated.  Use variables_order instead.
+gpc_order = "GPC"
+
+; Magic quotes
+;
+
+; Magic quotes for incoming GET/POST/Cookie data.
+magic_quotes_gpc = Off
+
+; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
+magic_quotes_runtime = Off    
+
+; Use Sybase-style magic quotes (escape ' with '' instead of \').
+magic_quotes_sybase = Off
+
+; Automatically add files before or after any PHP document.
+auto_prepend_file =
+auto_append_file =
+
+; As of 4.0b4, PHP always outputs a character encoding by default in
+; the Content-type: header.  To disable sending of the charset, simply
+; set it to be empty.
+;
+; PHP's built-in default is text/html
+default_mimetype = "text/html"
+;default_charset = "iso-8859-1"
+
+; Always populate the $HTTP_RAW_POST_DATA variable.                               
+;always_populate_raw_post_data = On
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;
+; Paths and Directories ;
+;;;;;;;;;;;;;;;;;;;;;;;;;
+
+; UNIX: "/path1:/path2"  
+;include_path = ".:/php/includes"
+;
+; Windows: "\path1;\path2"
+;include_path = ".;c:\php\includes"
+
+; The root of the PHP pages, used only if nonempty.
+; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root
+; if you are running php as a CGI under any web server (other than IIS)
+; see documentation for security issues.  The alternate is to use the
+; cgi.force_redirect configuration below
+doc_root =
+
+; The directory under which PHP opens the script using /~usernamem used only
+; if nonempty.
+user_dir =
+
+; Directory in which the loadable extensions (modules) reside.
+; extension_dir = "./"
+extension_dir = "/usr/lib/php/extensions/"
+
+; Whether or not to enable the dl() function.  The dl() function does NOT work
+; properly in multithreaded servers, such as IIS or Zeus, and is automatically
+; disabled on them.
+enable_dl = On
+
+; cgi.force_redirect is necessary to provide security running PHP as a CGI under
+; most web servers.  Left undefined, PHP turns this on by default.  You can
+; turn it off here AT YOUR OWN RISK
+; **You CAN safely turn this off for IIS, in fact, you MUST.**
+; cgi.force_redirect = 1
+
+; if cgi.nph is enabled it will force cgi to always sent Status: 200 with
+; every request.
+; cgi.nph = 1
+
+; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape 
+; (iPlanet) web servers, you MAY need to set an environment variable name that PHP
+; will look for to know it is OK to continue execution.  Setting this variable MAY
+; cause security issues, KNOW WHAT YOU ARE DOING FIRST.
+; cgi.redirect_status_env = ;
+
+; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
+; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
+; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
+; this to 1 will cause PHP CGI to fix it's paths to conform to the spec.  A setting
+; of zero causes PHP to behave as before.  Default is zero.  You should fix your scripts
+; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
+; cgi.fix_pathinfo=1
+
+; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate
+; security tokens of the calling client.  This allows IIS to define the
+; security context that the request runs under.  mod_fastcgi under Apache
+; does not currently support this feature (03/17/2002)
+; Set to 1 if running under IIS.  Default is zero.
+; fastcgi.impersonate = 1;
+
+; Disable logging through FastCGI connection
+; fastcgi.log = 0
+
+; cgi.rfc2616_headers configuration option tells PHP what type of headers to
+; use when sending HTTP response code. If it's set 0 PHP sends Status: header that
+; is supported by Apache. When this option is set to 1 PHP will send
+; RFC2616 compliant header.
+; Default is zero.
+;cgi.rfc2616_headers = 0 
+
+
+;;;;;;;;;;;;;;;;
+; File Uploads ;
+;;;;;;;;;;;;;;;;
+
+; Whether to allow HTTP file uploads.
+file_uploads = On
+
+; Temporary directory for HTTP uploaded files (will use system default if not
+; specified).
+;upload_tmp_dir =
+
+; Maximum allowed size for uploaded files.
+upload_max_filesize = 10M
+
+
+;;;;;;;;;;;;;;;;;;
+; Fopen wrappers ;
+;;;;;;;;;;;;;;;;;;
+
+; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
+allow_url_fopen = On
+
+; Define the anonymous ftp password (your email address)
+;from="john@doe.com"
+
+; Define the user agent for php to send
+;user_agent="PHP"
+
+; Default timeout for socket based streams (seconds)
+default_socket_timeout = 60
+
+; If your scripts have to deal with files from Macintosh systems,
+; or you are running on a Mac and need to deal with files from
+; unix or win32 systems, setting this flag will cause PHP to
+; automatically detect the EOL character in those files so that
+; fgets() and file() will work regardless of the source of the file.
+; auto_detect_line_endings = Off
+
+
+;;;;;;;;;;;;;;;;;;;;;;
+; Dynamic Extensions ;
+;;;;;;;;;;;;;;;;;;;;;;
+;
+; If you wish to have an extension loaded automatically, use the following
+; syntax:
+;
+;   extension=modulename.extension
+;
+; For example, on Windows:
+;
+;   extension=msql.dll
+;
+; ... or under UNIX:
+;
+;   extension=msql.so
+;
+; Note that it should be the name of the module only; no directory information 
+; needs to go here.  Specify the location of the extension with the
+; extension_dir directive above.
+;
+; Load the MySQL module by default.  Comment this out if you don't use MySQL.
+extension=mysql.so
+
+; Load the gettext extension by default.  Comment this out if you don't have the
+; gettext shared library installed.
+extension=gettext.so
+
+;Windows Extensions
+;Note that MySQL and ODBC support is now built in, so no dll is needed for it.
+;
+;extension=php_mbstring.dll
+;extension=php_bz2.dll
+;extension=php_cpdf.dll
+;extension=php_crack.dll
+;extension=php_curl.dll
+;extension=php_db.dll
+;extension=php_dba.dll
+;extension=php_dbase.dll
+;extension=php_dbx.dll
+;extension=php_domxml.dll
+;extension=php_exif.dll
+;extension=php_fdf.dll
+;extension=php_filepro.dll
+;extension=php_gd2.dll
+;extension=php_gettext.dll
+;extension=php_hyperwave.dll
+;extension=php_iconv.dll
+;extension=php_ifx.dll
+;extension=php_iisfunc.dll
+;extension=php_imap.dll
+;extension=php_interbase.dll
+;extension=php_java.dll
+;extension=php_ldap.dll
+;extension=php_mcrypt.dll
+;extension=php_mhash.dll
+;extension=php_mime_magic.dll
+;extension=php_ming.dll
+;extension=php_mssql.dll
+;extension=php_msql.dll
+;extension=php_oci8.dll
+;extension=php_openssl.dll
+;extension=php_oracle.dll
+;extension=php_pdf.dll
+;extension=php_pgsql.dll
+;extension=php_printer.dll
+;extension=php_shmop.dll
+;extension=php_snmp.dll
+;extension=php_sockets.dll
+;extension=php_sybase_ct.dll
+;extension=php_w32api.dll
+;extension=php_xmlrpc.dll
+;extension=php_xslt.dll
+;extension=php_yaz.dll
+;extension=php_zip.dll
+
+
+;;;;;;;;;;;;;;;;;;;
+; Module Settings ;
+;;;;;;;;;;;;;;;;;;;
+
+[Syslog]
+; Whether or not to define the various syslog variables (e.g. $LOG_PID,
+; $LOG_CRON, etc.).  Turning it off is a good idea performance-wise.  In
+; runtime, you can define these variables by calling define_syslog_variables().
+define_syslog_variables  = Off
+
+[mail function]
+; For Win32 only.
+SMTP = localhost
+smtp_port = 25
+
+; For Win32 only.
+;sendmail_from = me@example.com
+
+; For Unix only.  You may supply arguments as well (default: "sendmail -t -i").
+;sendmail_path =
+
+[Java]
+;java.class.path = .\php_java.jar
+;java.home = c:\jdk
+;java.library = c:\jdk\jre\bin\hotspot\jvm.dll 
+;java.library.path = .\
+
+[SQL]
+sql.safe_mode = Off
+
+[ODBC]
+;odbc.default_db    =  Not yet implemented
+;odbc.default_user  =  Not yet implemented
+;odbc.default_pw    =  Not yet implemented
+
+; Allow or prevent persistent links.
+odbc.allow_persistent = On
+
+; Check that a connection is still valid before reuse.
+odbc.check_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+odbc.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+odbc.max_links = -1  
+
+; Handling of LONG fields.  Returns number of bytes to variables.  0 means
+; passthru.
+odbc.defaultlrl = 4096  
+
+; Handling of binary data.  0 means passthru, 1 return as is, 2 convert to char.
+; See the documentation on odbc_binmode and odbc_longreadlen for an explanation
+; of uodbc.defaultlrl and uodbc.defaultbinmode
+odbc.defaultbinmode = 1  
+
+[MySQL]
+; Allow or prevent persistent links.
+mysql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+mysql.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+mysql.max_links = -1
+
+; Default port number for mysql_connect().  If unset, mysql_connect() will use
+; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the
+; compile-time value defined MYSQL_PORT (in that order).  Win32 will only look
+; at MYSQL_PORT.
+mysql.default_port =
+
+; Default socket name for local MySQL connects.  If empty, uses the built-in
+; MySQL defaults.
+mysql.default_socket =
+
+; Default host for mysql_connect() (doesn't apply in safe mode).
+mysql.default_host =
+
+; Default user for mysql_connect() (doesn't apply in safe mode).
+mysql.default_user =
+
+; Default password for mysql_connect() (doesn't apply in safe mode).
+; Note that this is generally a *bad* idea to store passwords in this file.
+; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password")
+; and reveal this password!  And of course, any users with read access to this
+; file will be able to reveal the password as well.
+mysql.default_password =
+
+; Maximum time (in seconds) for connect timeout. -1 means no limit
+mysql.connect_timeout = 60
+
+; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
+; SQL-Errors will be displayed.
+mysql.trace_mode = Off
+
+[mSQL]
+; Allow or prevent persistent links.
+msql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+msql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+msql.max_links = -1
+
+[PostgresSQL]
+; Allow or prevent persistent links.
+pgsql.allow_persistent = On
+
+; Detect broken persistent links always with pg_pconnect(). 
+; Auto reset feature requires a little overheads.
+pgsql.auto_reset_persistent = Off
+
+; Maximum number of persistent links.  -1 means no limit.
+pgsql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+pgsql.max_links = -1
+
+; Ignore PostgreSQL backends Notice message or not.
+; Notice message logging require a little overheads.
+pgsql.ignore_notice = 0
+
+; Log PostgreSQL backends Noitce message or not.
+; Unless pgsql.ignore_notice=0, module cannot log notice message.
+pgsql.log_notice = 0
+
+[Sybase]
+; Allow or prevent persistent links.
+sybase.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+sybase.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+sybase.max_links = -1
+
+;sybase.interface_file = "/usr/sybase/interfaces"
+
+; Minimum error severity to display.
+sybase.min_error_severity = 10
+
+; Minimum message severity to display.
+sybase.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+; If on, this will cause PHP to automatically assign types to results according
+; to their Sybase type, instead of treating them all as strings.  This
+; compatibility mode will probably not stay around forever, so try applying
+; whatever necessary changes to your code, and turn it off.
+sybase.compatability_mode = Off
+
+[Sybase-CT]
+; Allow or prevent persistent links.
+sybct.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+sybct.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+sybct.max_links = -1
+
+; Minimum server message severity to display.
+sybct.min_server_severity = 10
+
+; Minimum client message severity to display.
+sybct.min_client_severity = 10
+
+[dbx]
+; returned column names can be converted for compatibility reasons
+; possible values for dbx.colnames_case are
+; "unchanged" (default, if not set)
+; "lowercase"
+; "uppercase"
+; the recommended default is either upper- or lowercase, but
+; unchanged is currently set for backwards compatibility
+dbx.colnames_case = "lowercase"
+
+[bcmath]
+; Number of decimal digits for all bcmath functions.
+bcmath.scale = 0
+
+[browscap]
+;browscap = extra/browscap.ini
+
+[Informix]
+; Default host for ifx_connect() (doesn't apply in safe mode).
+ifx.default_host =
+
+; Default user for ifx_connect() (doesn't apply in safe mode).
+ifx.default_user =
+
+; Default password for ifx_connect() (doesn't apply in safe mode).
+ifx.default_password =
+
+; Allow or prevent persistent links.
+ifx.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+ifx.max_persistent = -1
+
+; Maximum number of links (persistent + non-persistent).  -1 means no limit.
+ifx.max_links = -1
+
+; If on, select statements return the contents of a text blob instead of its id.
+ifx.textasvarchar = 0
+
+; If on, select statements return the contents of a byte blob instead of its id.
+ifx.byteasvarchar = 0
+
+; Trailing blanks are stripped from fixed-length char columns.  May help the
+; life of Informix SE users.
+ifx.charasvarchar = 0
+
+; If on, the contents of text and byte blobs are dumped to a file instead of
+; keeping them in memory.
+ifx.blobinfile = 0
+
+; NULL's are returned as empty strings, unless this is set to 1.  In that case,
+; NULL's are returned as string 'NULL'.
+ifx.nullformat = 0
+
+[Session]
+; Handler used to store/retrieve data.
+session.save_handler = files
+
+; Argument passed to save_handler.  In the case of files, this is the path
+; where data files are stored. Note: Windows users have to change this 
+; variable in order to use PHP's session functions.
+;session.save_path = /tmp
+
+; Whether to use cookies.
+session.use_cookies = 1
+
+; This option enables administrators to make their users invulnerable to 
+; attacks which involve passing session ids in URLs; defaults to 0.
+; session.use_only_cookies = 1
+
+; Name of the session (used as cookie name).
+session.name = PHPSESSID
+
+; Initialize session on request startup.
+session.auto_start = 0
+
+; Lifetime in seconds of cookie or, if 0, until browser is restarted.
+session.cookie_lifetime = 0
+
+; The path for which the cookie is valid.
+session.cookie_path = /
+
+; The domain for which the cookie is valid.
+session.cookie_domain =
+
+; Handler used to serialize data.  php is the standard serializer of PHP.
+session.serialize_handler = php
+
+; Define the probability that the 'garbage collection' process is started
+; on every session initialization.
+; The probability is calculated by using gc_probability/gc_divisor,
+; e.g. 1/100 means there is a 1% chance that the GC process starts
+; on each request.
+
+session.gc_probability = 1
+session.gc_divisor     = 1000
+
+; After this number of seconds, stored data will be seen as 'garbage' and
+; cleaned up by the garbage collection process.
+session.gc_maxlifetime = 1440
+
+; PHP 4.2 and less have an undocumented feature/bug that allows you to
+; to initialize a session variable in the global scope, albeit register_globals
+; is disabled.  PHP 4.3 and later will warn you, if this feature is used.
+; You can disable the feature and the warning separately. At this time,
+; the warning is only displayed, if bug_compat_42 is enabled.
+
+session.bug_compat_42 = 0
+session.bug_compat_warn = 1
+
+; Check HTTP Referer to invalidate externally stored URLs containing ids.
+; HTTP_REFERER has to contain this substring for the session to be
+; considered as valid.
+session.referer_check =
+
+; How many bytes to read from the file.
+session.entropy_length = 0
+
+; Specified here to create the session id.
+session.entropy_file =
+
+;session.entropy_length = 16
+
+;session.entropy_file = /dev/urandom
+
+; Set to {nocache,private,public,} to determine HTTP caching aspects.
+; or leave this empty to avoid sending anti-caching headers.
+session.cache_limiter = nocache
+
+; Document expires after n minutes.
+session.cache_expire = 180
+
+; trans sid support is disabled by default.
+; Use of trans sid may risk your users security.
+; Use this option with caution.
+; - User may send URL contains active session ID
+;   to other person via. email/irc/etc.
+; - URL that contains active session ID may be stored
+;   in publically accessible computer. 
+; - User may access your site with the same session ID
+;   always using URL stored in browser's history or bookmarks.
+session.use_trans_sid = 0
+
+; The URL rewriter will look for URLs in a defined set of HTML tags.
+; form/fieldset are special; if you include them here, the rewriter will
+; add a hidden <input> field with the info which is otherwise appended
+; to URLs.  If you want XHTML conformity, remove the form entry.
+; Note that all valid entries require a "=", even if no value follows.
+url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
+
+[MSSQL]
+; Allow or prevent persistent links.
+mssql.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+mssql.max_persistent = -1
+
+; Maximum number of links (persistent+non persistent).  -1 means no limit.
+mssql.max_links = -1
+
+; Minimum error severity to display.
+mssql.min_error_severity = 10
+
+; Minimum message severity to display.
+mssql.min_message_severity = 10
+
+; Compatability mode with old versions of PHP 3.0.
+mssql.compatability_mode = Off
+
+; Connect timeout
+;mssql.connect_timeout = 5
+
+; Query timeout
+;mssql.timeout = 60
+
+; Valid range 0 - 2147483647.  Default = 4096.
+;mssql.textlimit = 4096
+
+; Valid range 0 - 2147483647.  Default = 4096.
+;mssql.textsize = 4096
+
+; Limits the number of records in each batch.  0 = all records in one batch.
+;mssql.batchsize = 0
+
+; Specify how datetime and datetim4 columns are returned
+; On => Returns data converted to SQL server settings
+; Off => Returns values as YYYY-MM-DD hh:mm:ss
+;mssql.datetimeconvert = On
+
+; Use NT authentication when connecting to the server
+mssql.secure_connection = Off
+
+; Specify max number of processes. Default = 25
+;mssql.max_procs = 25
+
+[Assertion]
+; Assert(expr); active by default.
+;assert.active = On
+
+; Issue a PHP warning for each failed assertion.
+;assert.warning = On
+
+; Don't bail out by default.
+;assert.bail = Off
+
+; User-function to be called if an assertion fails.
+;assert.callback = 0
+
+; Eval the expression with current error_reporting().  Set to true if you want
+; error_reporting(0) around the eval().
+;assert.quiet_eval = 0
+
+[Ingres II]
+; Allow or prevent persistent links.
+ingres.allow_persistent = On
+
+; Maximum number of persistent links.  -1 means no limit.
+ingres.max_persistent = -1
+
+; Maximum number of links, including persistents.  -1 means no limit.
+ingres.max_links = -1
+
+; Default database (format: [node_id::]dbname[/srv_class]).
+ingres.default_database =
+
+; Default user.
+ingres.default_user =
+
+; Default password.
+ingres.default_password =
+
+[Verisign Payflow Pro]
+; Default Payflow Pro server.
+pfpro.defaulthost = "test-payflow.verisign.com"
+
+; Default port to connect to.
+pfpro.defaultport = 443
+
+; Default timeout in seconds.
+pfpro.defaulttimeout = 30
+
+; Default proxy IP address (if required).
+;pfpro.proxyaddress =
+
+; Default proxy port.
+;pfpro.proxyport =
+
+; Default proxy logon.
+;pfpro.proxylogon =
+
+; Default proxy password.
+;pfpro.proxypassword =
+
+[com]
+; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs
+;com.typelib_file = 
+; allow Distributed-COM calls
+;com.allow_dcom = true
+; autoregister constants of a components typlib on com_load()
+;com.autoregister_typelib = true
+; register constants casesensitive
+;com.autoregister_casesensitive = false
+; show warnings on duplicate constat registrations
+;com.autoregister_verbose = true
+
+[Printer]
+;printer.default_printer = ""
+
+[mbstring]
+; language for internal character representation.
+;mbstring.language = Japanese
+
+; internal/script encoding.
+; Some encoding cannot work as internal encoding.
+; (e.g. SJIS, BIG5, ISO-2022-*)
+;mbstring.internal_encoding = EUC-JP
+
+; http input encoding.
+;mbstring.http_input = auto
+
+; http output encoding. mb_output_handler must be
+; registered as output buffer to function
+;mbstring.http_output = SJIS
+
+; enable automatic encoding translation accoding to 
+; mbstring.internal_encoding setting. Input chars are
+; converted to internal encoding by setting this to On.
+; Note: Do _not_ use automatic encoding translation for
+;       portable libs/applications.
+;mbstring.encoding_translation = Off
+
+; automatic encoding detection order.
+; auto means 
+;mbstring.detect_order = auto
+
+; substitute_character used when character cannot be converted
+; one from another
+;mbstring.substitute_character = none;
+
+; overload(replace) single byte functions by mbstring functions.
+; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
+; etc. Possible values are 0,1,2,4 or combination of them.
+; For example, 7 for overload everything.
+; 0: No overload
+; 1: Overload mail() function
+; 2: Overload str*() functions
+; 4: Overload ereg*() functions
+;mbstring.func_overload = 0
+
+[FrontBase]
+;fbsql.allow_persistent = On
+;fbsql.autocommit = On
+;fbsql.default_database = 
+;fbsql.default_database_password =
+;fbsql.default_host =
+;fbsql.default_password =
+;fbsql.default_user = "_SYSTEM"
+;fbsql.generate_warnings = Off
+;fbsql.max_connections = 128
+;fbsql.max_links = 128
+;fbsql.max_persistent = -1
+;fbsql.max_results = 128
+;fbsql.batchSize = 1000
+
+[Crack]
+; Modify the setting below to match the directory location of the cracklib
+; dictionary files.  Include the base filename, but not the file extension.
+; crack.default_dictionary = "c:\php\lib\cracklib_dict"
+
+[exif]
+; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. 
+; With mbstring support this will automatically be converted into the encoding
+; given by corresponding encode setting. When empty mbstring.internal_encoding 
+; is used. For the decode settings you can distinguish between motorola and 
+; intel byte order. A decode setting cannot be empty.
+;exif.encode_unicode = ISO-8859-15
+;exif.decode_unicode_motorola = UCS-2BE
+;exif.decode_unicode_intel    = UCS-2LE
+;exif.encode_jis = 
+;exif.decode_jis_motorola = JIS
+;exif.decode_jis_intel    = JIS
+
+; Local Variables:
+; tab-width: 4
+; End:
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/apache/vhosts b/tags/0.5/templates/vserver/vserver.d/etc/apache/vhosts
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/hosts b/tags/0.5/templates/vserver/vserver.d/etc/hosts
new file mode 100644 (file)
index 0000000..6e33147
--- /dev/null
@@ -0,0 +1,21 @@
+#
+# hosts                This file describes a number of hostname-to-address
+#              mappings for the TCP/IP subsystem.  It is mostly
+#              used at boot time, when no name servers are running.
+#              On small systems, this file can be used instead of a
+#              "named" name server.  Just add the names, addresses
+#              and any aliases to this file...
+#
+# By the way, Arnt Gulbrandsen <agulbra@nvg.unit.no> says that 127.0.0.1
+# should NEVER be named with the name of the machine.  It causes problems
+# for some (stupid) programs, irc and reputedly talk. :^)
+#
+
+# For loopbacking.
+127.0.0.1      localhost
+# This next entry is technically wrong, but good enough to get TCP/IP apps
+# to quit complaining that they can't verify the hostname on a loopback-only
+# Linux box.
+127.0.0.1      darkstar.example.net darkstar
+
+# End of hosts.
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/logrotate.d/apache b/tags/0.5/templates/vserver/vserver.d/etc/logrotate.d/apache
new file mode 100644 (file)
index 0000000..f31fbe2
--- /dev/null
@@ -0,0 +1,11 @@
+/var/log/apache/access_log /var/log/apache/error_log {
+    monthly
+    nomail
+    compress
+    create 0664 root root
+    rotate 12
+    postrotate
+      /etc/rc.d/rc.httpd restart > /dev/null
+    endscript
+}
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/profile b/tags/0.5/templates/vserver/vserver.d/etc/profile
new file mode 100644 (file)
index 0000000..563594a
--- /dev/null
@@ -0,0 +1,87 @@
+# /etc/profile: This file contains system-wide defaults used by
+# all Bourne (and related) shells.
+
+# Set the values for some environment variables:
+export MINICOM="-c on"
+export MANPATH=/usr/local/man:/usr/man:/usr/X11R6/man
+export HOSTNAME="`cat /etc/HOSTNAME`"
+export LESSOPEN="|lesspipe.sh %s"
+export LESS="-M"
+
+# If the user doesn't have a .inputrc, use the one in /etc.
+if [ ! -r "$HOME/.inputrc" ]; then
+  export INPUTRC=/etc/inputrc
+fi
+
+# Set the default system $PATH:
+PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games"
+
+# For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in
+# the $PATH.  Some means of connection don't add these by default (sshd comes
+# to mind).
+if [ "`id -u`" = "0" ]; then
+  echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null
+  if [ ! $? = 0 ]; then
+    PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH
+  fi
+fi
+
+# I had problems using 'eval tset' instead of 'TERM=', but you might want to 
+# try it anyway. I think with the right /etc/termcap it would work great.
+# eval `tset -sQ "$TERM"`
+if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
+ TERM=linux
+fi
+
+# Set ksh93 visual editing mode:
+if [ "$SHELL" = "/bin/ksh" ]; then
+  VISUAL=emacs
+#  VISUAL=gmacs
+#  VISUAL=vi
+fi
+
+# Set a default shell prompt:
+#PS1='`hostname`:`pwd`# '
+if [ "$SHELL" = "/bin/pdksh" ]; then
+ PS1='! $ '
+elif [ "$SHELL" = "/bin/ksh" ]; then
+ PS1='! ${PWD/#$HOME/~}$ '
+elif [ "$SHELL" = "/bin/zsh" ]; then
+ PS1='%n@%m:%~%# '
+elif [ "$SHELL" = "/bin/ash" ]; then
+ PS1='$ '
+else
+ PS1='\u@\h:\w\$ '
+fi
+PS2='> '
+export PATH DISPLAY LESS TERM PS1 PS2
+
+# Default umask.  A umask of 022 prevents new files from being created group
+# and world writable.
+umask 022
+
+# Set up the LS_COLORS and LS_OPTIONS environment variables for color ls:
+if [ "$SHELL" = "/bin/zsh" ]; then
+ eval `dircolors -z`
+elif [ "$SHELL" = "/bin/ash" ]; then
+ eval `dircolors -s`
+else
+ eval `dircolors -b`
+fi
+
+# Append any additional sh scripts found in /etc/profile.d/:
+for profile_script in /etc/profile.d/*.sh ; do
+  if [ -x $profile_script ]; then
+    . $profile_script
+  fi
+done
+unset profile_script
+
+# For non-root users, add the current directory to the search path:
+if [ ! "`id -u`" = "0" ]; then
+ PATH="$PATH:."
+fi
+
+# firewall:
+export FTP_PASSIVE=1
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc
new file mode 100755 (executable)
index 0000000..eefbcc5
--- /dev/null
@@ -0,0 +1,11 @@
+#!/bin/bash
+
+if [ "$1" == "3" ]; then
+  /etc/rc.d/rc.M
+elif [ "$1" == "6" ]; then
+  /etc/rc.d/rc.6
+else
+  echo "Invalid level."
+  exit 1
+fi
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.0 b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.0
new file mode 100755 (executable)
index 0000000..bfec90a
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6         This file is executed by init when it goes into runlevel
+#              0 (halt) or runlevel 6 (reboot). It kills all processes,
+#              unmounts file systems and then either halts or reboots.
+#
+# Version:     @(#)/etc/rc.d/rc.6      2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+       *0)
+               command="halt"
+               ;;
+       *6)
+               command=reboot
+               ;;
+       *)
+               echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+               exit 1
+               ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+  . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+  if [ -x /usr/sbin/ppp-off ]; then
+    /usr/sbin/ppp-off
+  fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off process accounting."
+  /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+  killall5 -15 
+  sleep 5
+  killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+  rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.4 b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.4
new file mode 100644 (file)
index 0000000..b972052
--- /dev/null
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M         This file is executed by init(8) when the system is being
+#              initialized for one of the "multi user" run levels (i.e.
+#              levels 1 through 6).  It usually does mounting of file
+#              systems et al.
+#
+# Version:     @(#)/etc/rc.d/rc.M      2.23    Wed Feb 26 19:20:58 PST 2003
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+#              Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+#  /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+  # fall back on this old default:
+#  echo "darkstar.example.net" > /etc/HOSTNAME
+#  /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives.  This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down.  If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia start
+  # The cards might need a little extra time here to initialize.
+  if [ -r /var/run/cardmgr.pid ]; then
+    sleep 5
+  fi
+fi
+
+# Initialize the networking hardware.  If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+#  . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+  # Don't run hotplug if 'nohotplug' was given at boot.
+  if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "Activating hardware detection:  /etc/rc.d/rc.hotplug start"
+    . /etc/rc.d/rc.hotplug start
+  fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+  . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+  echo "Removing your stale hunt sockets from /tmp."
+  /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+  echo "Updating shared library links:  /sbin/ldconfig"
+  /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+  echo "Updating X font indexes:  /usr/X11R6/bin/fc-cache"
+  /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system.  This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+  # Start CUPS:
+  /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+  # Start LPRng (lpd):
+  . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+  /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems.  Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+#  /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc).  For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+#  echo "Starting genpowerd daemon..."
+#  /sbin/genpowerd
+#fi
+
+# Turn on process accounting.  To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct).  By default, process
+# accounting is not enabled (since /var/log/pacct does not exist).  This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  /sbin/accton /var/log/pacct
+  chmod 640 /var/log/pacct
+  echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+  /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+  /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab.  Here's an example:
+#
+# /dev/hda2      /home      ext3     defaults,usrquota      1   1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'.  See 'man edquota'.  Also, the
+# official Quota Mini-HOWTO has lots of useful information.  That can be found
+# here:  /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotacheck ]; then
+    echo "Checking filesystem quotas:  /sbin/quotacheck -avugm"
+    /sbin/quotacheck -avugm
+  fi
+  if [ -x /sbin/quotaon ]; then
+    echo "Activating filesystem quotas:  /sbin/quotaon -avug"
+    /sbin/quotaon -avug
+  fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+  . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+  if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+    echo "Starting APM daemon:  /usr/sbin/apmd"
+    /usr/sbin/apmd
+  fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+  . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+  . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+  . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+  . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+  . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+  . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+  . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+  . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.6 b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.6
new file mode 100755 (executable)
index 0000000..bfec90a
--- /dev/null
@@ -0,0 +1,110 @@
+#! /bin/sh
+#
+# rc.6         This file is executed by init when it goes into runlevel
+#              0 (halt) or runlevel 6 (reboot). It kills all processes,
+#              unmounts file systems and then either halts or reboots.
+#
+# Version:     @(#)/etc/rc.d/rc.6      2.47 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/etc:/bin:/usr/bin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Set linefeed mode to avoid staircase effect.
+stty onlcr
+
+echo "Running shutdown script $0:"
+
+# Find out how we were called.
+case "$0" in
+       *0)
+               command="halt"
+               ;;
+       *6)
+               command=reboot
+               ;;
+       *)
+               echo "$0: call me as \"rc.0\" or \"rc.6\" please!"
+               exit 1
+               ;;
+esac
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the MySQL database:
+if [ -r /var/run/mysql/mysql.pid ]; then
+  . /etc/rc.d/rc.mysqld stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Try to kill dhcpcd so the DHCP leases can be returned:
+killall -15 dhcpcd 1> /dev/null 2> /dev/null
+
+# Try to shut down pppd:
+PS="$(ps ax)"
+if echo "$PS" | grep -q -w pppd ; then
+  if [ -x /usr/sbin/ppp-off ]; then
+    /usr/sbin/ppp-off
+  fi
+fi
+
+# Turn off process accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off process accounting."
+  /sbin/accton
+fi
+
+# Kill all processes.
+# INIT is supposed to handle this entirely now, but this didn't always
+# work correctly without this second pass at killing off the processes.
+# Since INIT already notified the user that processes were being killed,
+# we'll avoid echoing this info this time around.
+if [ "$1" != "fast" ]; then # shutdown did not already kill all processes
+  killall5 -15 
+  sleep 5
+  killall5 -9
+fi
+
+# Carry a random seed between reboots.
+echo "Saving random seed from /dev/urandom in /etc/random-seed."
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
+# Before unmounting file systems write a reboot or halt record to wtmp.
+$command -w
+
+# Clear /var/lock/subsys.
+if [ -d /var/lock/subsys ]; then
+  rm -f /var/lock/subsys/*
+fi
+
+# This never hurts:
+sync
+
+# sleep 1 fixes problems with some hard drives that don't
+# otherwise finish syncing before reboot or poweroff
+sleep 1
+
+# This is to ensure all processes have completed on SMP machines:
+wait
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.K b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.K
new file mode 100755 (executable)
index 0000000..00a1501
--- /dev/null
@@ -0,0 +1,88 @@
+#! /bin/sh
+#
+# rc.K                 This file is executed by init when it goes into runlevel
+#              1, which is the administrative state. It kills all
+#              daemons and then puts the system into single user mode.
+#              Note that the file systems are kept mounted.
+#
+# Version:     @(#)/etc/rc.d/rc.K      3.1415 Sat Jan 13 13:37:26 PST 2001
+#
+# Author:      Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
+# Modified by:  Patrick J. Volkerding <volkerdi@slackware.com>
+#
+
+# Set the path.
+PATH=/sbin:/bin:/usr/bin:/usr/sbin
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Try to turn off quota:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotaoff ]; then
+    echo "Turning off filesystem quotas."
+    /sbin/quotaoff -a
+  fi
+fi
+
+# Try to turn off accounting:
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  echo "Turning off accounting."
+  /sbin/accton
+fi
+
+# Stop the Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  /etc/rc.d/rc.httpd stop
+fi
+
+# Stop the Samba server:
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba stop
+fi
+
+# Shut down the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+  /etc/rc.d/rc.nfsd stop
+fi
+
+# Shut down PCMCIA devices:
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia stop
+  # The cards might need a little extra time here to initialize.
+  sleep 5
+fi
+
+# Kill all processes.
+echo
+echo "Sending all processes the SIGHUP signal."
+killall5 -1
+echo -n "Waiting for processes to hang up"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+echo "Sending all processes the SIGTERM signal."
+killall5 -15
+echo -n "Waiting for processes to terminate"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+echo "Sending all processes the SIGKILL signal."
+killall5 -9
+echo -n "Waiting for processes to exit"
+for loop in 0 1 2 3 4 5 ; do
+  sleep 1
+  echo -n "."
+done
+echo
+
+# Now go to the single user level
+echo "Going to single user mode..."
+telinit -t 1 1
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.M b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.M
new file mode 100755 (executable)
index 0000000..0cb3343
--- /dev/null
@@ -0,0 +1,256 @@
+#!/bin/sh
+#
+# rc.M         This file is executed by init(8) when the system is being
+#              initialized for one of the "multi user" run levels (i.e.
+#              levels 1 through 6).  It usually does mounting of file
+#              systems et al.
+#
+# Version:     @(#)/etc/rc.d/rc.M      2.23    Wed Feb 26 19:20:58 PST 2003
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+#              Heavily modified by Patrick Volkerding <volkerdi@slackware.com>
+#
+
+# Tell the viewers what's going to happen.
+echo "Going multiuser..."
+
+# Screen blanks after 15 minutes idle time, and powers down in one hour
+# if the kernel supports APM or ACPI power management:
+#/bin/setterm -blank 15 -powersave powerdown -powerdown 60
+
+# Set the hostname.
+#if [ -r /etc/HOSTNAME ]; then
+#  /bin/hostname $(cat /etc/HOSTNAME | cut -f1 -d .)
+#else
+  # fall back on this old default:
+#  echo "darkstar.example.net" > /etc/HOSTNAME
+#  /bin/hostname darkstar
+#fi
+
+# Save the contents of 'dmesg':
+#/bin/dmesg -s 65536 > /var/log/dmesg
+
+# Start the system logger.
+if [ -x /etc/rc.d/rc.syslog -a -x /usr/sbin/syslogd -a -d /var/log ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# Initialize PCMCIA devices:
+#
+# NOTE: This used to be started near the top of rc.S so that PCMCIA devices
+# could be fsck'ed along with the other drives.  This had some unfortunate
+# side effects, however, since root isn't yet read-write, and /var might not
+# even be mounted the .pid files can't be correctly written in /var/run and
+# the pcmcia system can't be correctly shut down.  If you want some PCMCIA
+# partition to be mounted at boot (or when the card is inserted) then add
+# the appropriate lines to /etc/pcmcia/scsi.opts.
+#
+if [ -x /etc/rc.d/rc.pcmcia ] ; then
+  . /etc/rc.d/rc.pcmcia start
+  # The cards might need a little extra time here to initialize.
+  if [ -r /var/run/cardmgr.pid ]; then
+    sleep 5
+  fi
+fi
+
+# Initialize the networking hardware.  If your network driver is a module
+# and you haven't loaded it manually, this will be deferred until after
+# the hotplug system loads the module below.
+#if [ -x /etc/rc.d/rc.inet1 ]; then
+#  . /etc/rc.d/rc.inet1
+#fi
+
+# Initialize the hotplugging subsystem for Cardbus, IEEE1394, PCI, and USB devices:
+if [ -x /etc/rc.d/rc.hotplug -a -r /proc/modules ]; then
+  # Don't run hotplug if 'nohotplug' was given at boot.
+  if ! grep nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "Activating hardware detection:  /etc/rc.d/rc.hotplug start"
+    . /etc/rc.d/rc.hotplug start
+  fi
+fi
+
+# Start networking daemons:
+if [ -x /etc/rc.d/rc.inet2 ]; then
+  . /etc/rc.d/rc.inet2
+fi
+
+# Remove stale locks and junk files (must be done after mount -a!)
+/bin/rm -f /var/lock/* /var/spool/uucp/LCK..* /tmp/.X*lock /tmp/core /core 2> /dev/null
+
+# Remove stale hunt sockets so the game can start.
+if [ -r /tmp/hunt -o -r /tmp/hunt.stats ]; then
+  echo "Removing your stale hunt sockets from /tmp."
+  /bin/rm -f /tmp/hunt*
+fi
+
+# Ensure basic filesystem permissions sanity.
+chmod 755 / 2> /dev/null
+chmod 1777 /tmp /var/tmp
+
+# Update all the shared library links:
+if [ -x /sbin/ldconfig ]; then
+  echo "Updating shared library links: /sbin/ldconfig"
+  /sbin/ldconfig
+fi
+
+# Update the X font indexes:
+if [ -x /usr/X11R6/bin/fc-cache ]; then
+  echo "Updating X font indexes: /usr/X11R6/bin/fc-cache"
+  /usr/X11R6/bin/fc-cache
+fi
+
+# Start the print spooling system.  This will usually be LPRng (lpd) or CUPS.
+if [ -x /etc/rc.d/rc.cups ]; then
+  # Start CUPS:
+  /etc/rc.d/rc.cups start
+elif [ -x /etc/rc.d/rc.lprng ]; then
+  # Start LPRng (lpd):
+  . /etc/rc.d/rc.lprng start
+fi
+
+# Start netatalk. (a file/print server for Macs using Appletalk)
+if [ -x /etc/rc.d/rc.atalk ]; then
+  /etc/rc.d/rc.atalk
+fi
+
+# Start smartd, which monitors the status of S.M.A.R.T. compatible
+# hard drives and reports any problems.  Note some devices (which aren't
+# smart, I guess ;) will hang if probed by smartd, so it's commented out
+# by default.
+#if [ -x /usr/sbin/smartd ]; then
+#  /usr/sbin/smartd
+#fi
+
+# Monitor the UPS with genpowerd.
+# To use this, uncomment this section and edit your settings in
+# /etc/genpowerd.conf (serial device, UPS type, etc).  For more information,
+# see "man genpowerd" or the extensive documentation in the
+# /usr/doc/genpower-1.0.3 directory.
+# You'll also need to configure a similar block in /etc/rc.d/rc.6 if you want
+# support for stopping the UPS's inverter after the machine halts.
+#if [ -x /sbin/genpowerd ]; then
+#  echo "Starting genpowerd daemon..."
+#  /sbin/genpowerd
+#fi
+
+# Turn on process accounting.  To enable process accounting, make sure the
+# option for BSD process accounting is enabled in your kernel, and then
+# create the file /var/log/pacct (touch /var/log/pacct).  By default, process
+# accounting is not enabled (since /var/log/pacct does not exist).  This is
+# because the log file can get VERY large.
+if [ -x /sbin/accton -a -r /var/log/pacct ]; then
+  /sbin/accton /var/log/pacct
+  chmod 640 /var/log/pacct
+  echo "Process accounting turned on."
+fi
+
+# Start crond (Dillon's crond):
+# If you want cron to actually log activity to /var/log/cron, then change
+# -l10 to -l8 to increase the logging level.
+if [ -x /usr/sbin/crond ]; then
+  /usr/sbin/crond -l10 >>/var/log/cron 2>&1
+fi
+
+# Start atd (manages jobs scheduled with 'at'):
+if [ -x /usr/sbin/atd ]; then
+  /usr/sbin/atd -b 15 -l 1
+fi
+
+# Slackware-Mini-Quota-HOWTO:
+# To really activate quotas, you'll need to add 'usrquota' and/or 'grpquota' to
+# the appropriate partitions as listed in /etc/fstab.  Here's an example:
+#
+# /dev/hda2      /home      ext3     defaults,usrquota      1   1
+#
+# You'll then need to setup initial quota files at the top of the partitions
+# to support quota, like this:
+# touch /home/aquota.user /home/aquota.group
+# chmod 600 /home/aquota.user /home/aquota.group
+#
+# Then, reboot to activate the system.
+# To edit user quotas, use 'edquota'.  See 'man edquota'.  Also, the
+# official Quota Mini-HOWTO has lots of useful information.  That can be found
+# here:  /usr/doc/Linux-HOWTOs/Quota
+
+# Check quotas and then turn quota system on:
+if grep -q quota /etc/fstab ; then
+  if [ -x /sbin/quotacheck ]; then
+    echo "Checking filesystem quotas:  /sbin/quotacheck -avugm"
+    /sbin/quotacheck -avugm
+  fi
+  if [ -x /sbin/quotaon ]; then
+    echo "Activating filesystem quotas:  /sbin/quotaon -avug"
+    /sbin/quotaon -avug
+  fi
+fi
+
+# Start the sendmail daemon:
+if [ -x /etc/rc.d/rc.sendmail ]; then
+  . /etc/rc.d/rc.sendmail start
+fi
+
+# Start the APM daemon if APM is enabled in the kernel:
+if [ -x /usr/sbin/apmd ]; then
+  if cat /proc/apm 1> /dev/null 2> /dev/null ; then
+    echo "Starting APM daemon:  /usr/sbin/apmd"
+    /usr/sbin/apmd
+  fi
+fi
+
+# Start the ACPI (Advanced Configuration and Power Interface) daemon:
+if [ -x /etc/rc.d/rc.acpid ]; then
+  . /etc/rc.d/rc.acpid start
+fi
+
+# Load ALSA (sound) defaults:
+if [ -x /etc/rc.d/rc.alsa ]; then
+  . /etc/rc.d/rc.alsa
+fi
+
+# Load a custom screen font if the user has an rc.font script.
+if [ -x /etc/rc.d/rc.font ]; then
+  . /etc/rc.d/rc.font
+fi
+
+# Load a custom keymap if the user has an rc.keymap script.
+if [ -x /etc/rc.d/rc.keymap ]; then
+  . /etc/rc.d/rc.keymap
+fi
+
+# Initialize HP Officejet support:
+if [ -x /etc/rc.d/rc.hpoj ]; then
+  . /etc/rc.d/rc.hpoj start
+fi
+
+# Start the MySQL database:
+if [ -x /etc/rc.d/rc.mysqld ]; then
+  . /etc/rc.d/rc.mysqld start
+fi
+
+# Start Apache web server:
+if [ -x /etc/rc.d/rc.httpd ]; then
+  . /etc/rc.d/rc.httpd start
+fi
+
+# Start Samba (a file/print server for Win95/NT machines).
+# Samba can be started in /etc/inetd.conf instead.
+if [ -x /etc/rc.d/rc.samba ]; then
+  . /etc/rc.d/rc.samba start
+fi
+
+# Start the GPM mouse server:
+if [ -x /etc/rc.d/rc.gpm ]; then
+  . /etc/rc.d/rc.gpm start
+fi
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Start the local setup procedure.
+if [ -x /etc/rc.d/rc.local ]; then
+  . /etc/rc.d/rc.local
+fi
+
+# All done.
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.S b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.S
new file mode 100755 (executable)
index 0000000..05c75b4
--- /dev/null
@@ -0,0 +1,294 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.S:  System initialization script.
+#
+# Mostly written by:  Patrick J. Volkerding, <volkerdi@slackware.com>
+#
+
+PATH=/sbin:/usr/sbin:/bin:/usr/bin
+
+# Mount /proc right away:
+/sbin/mount -v proc /proc -n -t proc
+
+# If 'nohotplug' was given at boot, or rc.hotplug has been turned off
+# (is not executable), then shut off hotplugging in the kernel now.
+# Turning off hotplug is *not* recommended, and will break some things.
+if [ -w /proc/sys/kernel/hotplug ]; then
+  if grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    echo "/dev/null" > /proc/sys/kernel/hotplug
+  elif [ ! -x /etc/rc.d/rc.hotplug ]; then
+    echo "/dev/null" > /proc/sys/kernel/hotplug
+  fi
+fi
+
+# Start devfsd if necessary.  On newer kernels, udev should be used instead.
+if [ -x /etc/rc.d/rc.devfsd ]; then
+  /etc/rc.d/rc.devfsd start
+fi
+
+# Mount sysfs next, if the kernel supports it:
+if [ -d /sys ]; then
+  if cat /proc/filesystems | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+    if ! cat /proc/mounts | grep -w sysfs 1> /dev/null 2> /dev/null ; then
+      /sbin/mount -v sysfs /sys -n -t sysfs
+    fi
+  fi
+fi
+
+# Initialize udev to manage /dev entries for 2.6.x kernels:
+if [ -x /etc/rc.d/rc.udev ]; then
+  if ! grep -w nohotplug /proc/cmdline 1> /dev/null 2> /dev/null ; then
+    /etc/rc.d/rc.udev
+  fi
+fi
+
+# Enable swapping:
+/sbin/swapon -a
+
+# Test to see if the root partition is read-only, like it ought to be.
+READWRITE=no
+if touch /fsrwtestfile 2>/dev/null; then
+  rm -f /fsrwtestfile
+  READWRITE=yes
+else
+  echo "Testing root filesystem status:  read-only filesystem"
+fi
+
+# See if a forced filesystem check was requested at shutdown:
+if [ -r /etc/forcefsck ]; then
+  FORCEFSCK="-f"
+fi
+
+# Check the root filesystem:
+if [ ! $READWRITE = yes ]; then
+  RETVAL=0
+  if [ ! -r /etc/fastboot ]; then
+    echo "Checking root filesystem:"
+    /sbin/fsck $FORCEFSCK -C -a /
+    RETVAL=$?
+  fi
+  # An error code of 2 or higher will require a reboot.
+  if [ $RETVAL -ge 2 ]; then
+    # An error code equal to or greater than 4 means that some errors
+    # could not be corrected.  This requires manual attention, so we
+    # offer a chance to try to fix the problem in single-user mode:
+    if [ $RETVAL -ge 4 ]; then
+      echo
+      echo "***********************************************************"
+      echo "*** An error occurred during the root filesystem check. ***"
+      echo "*** You will now be given a chance to log into the      ***"
+      echo "*** system in single-user mode to fix the problem.      ***"
+      echo "***                                                     ***"
+      echo "*** If you are using the ext2 filesystem, running       ***"
+      echo "*** 'e2fsck -v -y <partition>' might help.              ***"
+      echo "***********************************************************"
+      echo
+      echo "Once you exit the single-user shell, the system will reboot."
+      echo
+      PS1="(Repair filesystem) \#"; export PS1
+      sulogin
+    else # With an error code of 2 or 3, reboot the machine automatically:
+      echo
+      echo "***********************************"
+      echo "*** The filesystem was changed. ***"
+      echo "*** The system will now reboot. ***"
+      echo "***********************************"
+      echo
+    fi
+    echo "Unmounting file systems."
+    /sbin/umount -a -r
+    /sbin/mount -n -o remount,ro /
+    echo "Rebooting system."
+    sleep 2
+    reboot -f
+  fi
+  # Remount the root filesystem in read-write mode
+  echo "Remounting root device with read-write enabled."
+  /sbin/mount -w -v -n -o remount /
+  if [ $? -gt 0 ] ; then
+    echo
+    echo "Attempt to remount root device as read-write failed!  This is going to"
+    echo "cause serious problems."
+    echo 
+    echo "If you're using the UMSDOS filesystem, you **MUST** mount the root partition"
+    echo "read-write!  You can make sure the root filesystem is getting mounted "
+    echo "read-write with the 'rw' flag to Loadlin:"
+    echo
+    echo "loadlin vmlinuz root=/dev/hda1 rw   (replace /dev/hda1 with your root device)"
+    echo
+    echo "Normal bootdisks can be made to mount a system read-write with the rdev command:"
+    echo
+    echo "rdev -R /dev/fd0 0"
+    echo
+    echo "You can also get into your system by using a boot disk with a command like this"
+    echo "on the LILO prompt line:  (change the root partition name as needed)"
+    echo 
+    echo "LILO: mount root=/dev/hda1 rw"
+    echo
+    echo "Please press ENTER to continue, then reboot and use one of the above methods to"
+    echo -n "get into your machine and start looking for the problem. " 
+    read junk; 
+  fi
+else
+  echo "Testing root filesystem status:  read-write filesystem"
+  if cat /etc/fstab | grep ' / ' | grep umsdos 1> /dev/null 2> /dev/null ; then
+    ROOTTYPE="umsdos"
+  fi
+  if [ ! "$ROOTTYPE" = "umsdos" ]; then # no warn for UMSDOS
+    echo
+    echo "*** ERROR: Root partition has already been mounted read-write. Cannot check!"
+    echo
+    echo "For filesystem checking to work properly, your system must initially mount"
+    echo "the root partition as read only. Please modify your kernel with 'rdev' so that"
+    echo "it does this. If you're booting with LILO, add a line:"
+    echo
+    echo "   read-only"
+    echo
+    echo "to the Linux section in your /etc/lilo.conf and type 'lilo' to reinstall it."
+    echo
+    echo "If you boot from a kernel on a floppy disk, put it in the drive and type:"
+    echo "   rdev -R /dev/fd0 1"
+    echo
+    echo "If you boot from a bootdisk, or with Loadlin, you can add the 'ro' flag."
+    echo
+    echo "This will fix the problem *AND* eliminate this annoying message. :^)"
+    echo
+    echo -n "Press ENTER to continue. "
+    read junk;
+  fi
+fi # Done checking root filesystem
+
+# Any /etc/mtab that exists here is old, so we delete it to start over:
+/bin/rm -f /etc/mtab*
+# Remounting the / partition will initialize the new /etc/mtab:
+/sbin/mount -w -o remount /
+
+# Fix /etc/mtab to list sys and proc if they were not yet entered in
+# /etc/mtab because / was still mounted read-only:
+if [ -d /proc/sys ]; then
+  /sbin/mount -f proc /proc -t proc
+fi
+if [ -d /sys/bus ]; then
+  /sbin/mount -f sysfs /sys -t sysfs
+fi
+
+# Set the system time from the hardware clock using hwclock --hctosys.
+if [ -x /sbin/hwclock ]; then
+  if grep "^UTC" /etc/hardwareclock 1> /dev/null 2> /dev/null ; then
+    echo "Setting system time from the hardware clock (UTC)."
+    /sbin/hwclock --utc --hctosys
+  else
+    echo "Setting system time from the hardware clock (localtime)."
+    /sbin/hwclock --localtime --hctosys
+  fi
+fi
+
+# Configure ISA Plug-and-Play devices:
+if [ -r /etc/isapnp.conf ]; then
+  if [ -x /sbin/isapnp ]; then
+    /sbin/isapnp /etc/isapnp.conf
+  fi
+fi
+
+# This loads any kernel modules that are needed.  These might be required to
+# use your ethernet card, sound card, or other optional hardware.
+if [ -x /etc/rc.d/rc.modules -a -r /proc/modules ]; then
+  . /etc/rc.d/rc.modules
+fi
+
+# Configure runtime kernel parameters:
+if [ -x /sbin/sysctl -a -r /etc/sysctl.conf ]; then
+  /sbin/sysctl -e -p /etc/sysctl.conf
+fi
+
+# Initialize the Logical Volume Manager.
+# This won't start unless we find /etc/lvmtab (LVM1) or 
+# /etc/lvm/backup/ (LVM2).  This is created by /sbin/vgscan, so to
+# use LVM you must run /sbin/vgscan yourself the first time (and
+# create some VGs and LVs).
+if [ -r /etc/lvmtab -o -d /etc/lvm/backup ]; then
+  echo "Initializing LVM (Logical Volume Manager):"
+  # Check for device-mapper support.
+  if ! cat /proc/devices | grep -w device-mapper 1> /dev/null 2> /dev/null ; then
+    # If device-mapper exists as a module, try to load it.
+    if [ -r /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko ]; then
+      insmod /lib/modules/$(cat /proc/sys/kernel/osrelease)/kernel/drivers/md/dm-mod.ko
+    fi
+  fi
+  # Scan for new volume groups:
+  /sbin/vgscan 2> /dev/null
+  if [ $? = 0 ]; then
+    # This needs a moment to register.
+    sleep 10
+    # Make volume groups available to the kernel.
+    # This should also make logical volumes available.
+    /sbin/vgchange -ay
+    # Enable swapping again in case any LVs are used for swap.  Ignore previous error.  :-)
+    /sbin/swapon -a
+  fi
+fi
+
+# Check all the non-root filesystems:
+if [ ! -r /etc/fastboot ]; then
+  echo "Checking non-root filesystems:"
+  /sbin/fsck $FORCEFSCK -C -R -A -a
+fi
+
+# mount non-root file systems in fstab (but not NFS or SMB 
+# because TCP/IP is not yet configured, and not proc because
+# that has already been mounted):
+/sbin/mount -a -v -t nonfs,nosmbfs,noproc
+
+# Clean up some temporary files:
+( cd /var/log/setup/tmp && rm -rf * )
+/bin/rm -f /var/run/utmp /var/run/*pid /etc/nologin /var/run/lpd* \
+  /var/run/ppp* /etc/dhcpc/*.pid /etc/forcefsck /etc/fastboot
+
+# Attempt to umount and remove any leftover /initrd:
+if [ -d /initrd ]; then
+  /sbin/umount /initrd 2> /dev/null
+  rmdir /initrd 2> /dev/null
+  blockdev --flushbufs /dev/ram0 2> /dev/null
+fi
+
+# Create a fresh utmp file:
+touch /var/run/utmp
+chown root.utmp /var/run/utmp
+chmod 664 /var/run/utmp
+
+if [ "$ROOTTYPE" = "umsdos" ]; then # we need to update any files added in DOS:
+  echo "Synchronizing UMSDOS directory structure:"
+  echo "  /sbin/umssync -r99 -v- /"
+  /sbin/umssync -r99 -v- /
+fi
+
+# Setup the /etc/motd to reflect the current kernel level:
+# THIS WIPES ANY CHANGES YOU MAKE TO /ETC/MOTD WITH EACH BOOT.
+# COMMENT THIS OUT IF YOU WANT TO MAKE A CUSTOM VERSION.
+echo "$(/bin/uname -sr)." > /etc/motd
+
+# If there are SystemV init scripts for this runlevel, run them.
+if [ -x /etc/rc.d/rc.sysvinit ]; then
+  . /etc/rc.d/rc.sysvinit
+fi
+
+# Run serial port setup script:
+# (CAREFUL! This can make some systems hang if the rc.serial script isn't
+# set up correctly. If this happens, you may have to edit the file from a
+# boot disk)
+#
+# . /etc/rc.d/rc.serial
+
+# Carry an entropy pool between reboots to improve randomness.
+if [ -f /etc/random-seed ]; then
+  echo "Using /etc/random-seed to initialize /dev/urandom."
+  cat /etc/random-seed > /dev/urandom
+fi
+# Use the pool size from /proc, or 512 bytes:
+if [ -r /proc/sys/kernel/random/poolsize ]; then
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=$(cat /proc/sys/kernel/random/poolsize) 2> /dev/null
+else
+  dd if=/dev/urandom of=/etc/random-seed count=1 bs=512 2> /dev/null
+fi
+chmod 600 /etc/random-seed
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.httpd b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.httpd
new file mode 100644 (file)
index 0000000..00b8837
--- /dev/null
@@ -0,0 +1,21 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.httpd
+#
+# Start/stop/restart the Apache web server.
+#
+# To make Apache start automatically at boot, make this
+# file executable:  chmod 755 /etc/rc.d/rc.httpd
+#
+
+case "$1" in
+   'start')
+      /usr/sbin/apachectl start ;;
+   'stop')
+      /usr/sbin/apachectl stop ;;
+   'restart')
+      /usr/sbin/apachectl restart ;;
+   *)
+      echo "usage $0 start|stop|restart" ;;
+esac
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inet2 b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inet2
new file mode 100755 (executable)
index 0000000..db56589
--- /dev/null
@@ -0,0 +1,129 @@
+#!/bin/sh
+#
+# rc.inet2     This shell script boots up the entire network system.
+#              Note, that when this script is used to also fire
+#              up any important remote NFS disks (like the /usr
+#              directory), care must be taken to actually
+#              have all the needed binaries online _now_ ...
+#
+#               Uncomment or comment out sections depending on which
+#               services your site requires.
+#
+# Author:      Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
+# Modified for Slackware by Patrick Volkerding <volkerdi@slackware.com>
+
+
+# At this point, we are ready to talk to The World...
+
+
+# Mount remote (NFS) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w nfs 1> /dev/null 2> /dev/null ; then
+  # Start the RPC portmapper if we find NFS volumes defined in /etc/fstab,
+  # since it will need to be running in order to mount them.  If portmap
+  # is not running, attempting to mount an NFS partition will cause mount
+  # to hang.  Keep this in mind if you plan to mount unlisted partitions...
+  if [ -x /etc/rc.d/rc.portmap ]; then
+    . /etc/rc.d/rc.portmap start
+  else
+    # Warn about a possible NFS problem.  It's also possible to mount NFS partitions
+    # without rpc.portmap by using '-o nolock' (not a good idea in most cases).
+    echo "WARNING:  NFS partitions found in /etc/fstab, but /etc/rc.d/rc.portmap is"
+    echo "          not executable.  If you do not run portmap, NFS partitions will"
+    echo "          not mount properly.  To start rpc.portmap at boot, change the"
+    echo "          permissions on /etc/rc.d/rc.portmap:  chmod 755 /etc/rc.d/rc.portmap"
+    sleep 10
+  fi
+  echo "Mounting remote (NFS) file systems:  /sbin/mount -a -t nfs"
+  /sbin/mount -a -t nfs         # This may be our /usr runtime!
+  # Show the mounted volumes:
+  /sbin/mount -v -t nfs
+fi
+
+# Load the RPC portmapper if /etc/rc.d/rc.portmap is executable.
+# This might be needed to mount NFS partitions that are not listed in /etc/fstab.
+if [ -x /etc/rc.d/rc.portmap ]; then
+  . /etc/rc.d/rc.portmap start
+fi
+
+# Mount remote (SMB) filesystems:
+if cat /etc/fstab | grep -v '^#' | grep -w smbfs 1> /dev/null 2> /dev/null ; then
+  echo "Mounting remote (SMB) file systems:  /sbin/mount -a -t smbfs"
+  /sbin/mount -a -t smbfs
+  # Show the mounted volumes:
+  /sbin/mount -v -t smbfs
+fi
+
+# Start the system logger if it is not already running (maybe because /usr
+# is on a network partition).
+if [ -x /etc/rc.d/rc.syslog -a -d /var/log -a ! -r /var/run/syslogd.pid ]; then
+  . /etc/rc.d/rc.syslog start
+fi
+
+# If there is a firewall script, run it before enabling packet forwarding.
+# See the HOWTOs on http://www.netfilter.org/ for documentation on
+# setting up a firewall or NAT on Linux.  In some cases this might need to
+# be moved past the section below dealing with IP packet forwarding.
+if [ -x /etc/rc.d/rc.firewall ]; then
+  /etc/rc.d/rc.firewall start
+fi
+
+# Turn on IPv4 packet forwarding support.
+if [ -x /etc/rc.d/rc.ip_forward ]; then
+  . /etc/rc.d/rc.ip_forward start
+fi
+
+# Start the inetd server:
+if [ -x /etc/rc.d/rc.inetd ]; then
+  /etc/rc.d/rc.inetd start
+fi
+
+# Start the OpenSSH SSH daemon:
+if [ -x /etc/rc.d/rc.sshd ]; then
+  echo "Starting OpenSSH SSH daemon: /usr/sbin/sshd"
+  /etc/rc.d/rc.sshd start
+fi
+
+# Start the BIND name server daemon:
+if [ -x /etc/rc.d/rc.bind ]; then
+  /etc/rc.d/rc.bind start
+fi
+
+# Start NIS (the Network Information Service):
+if [ -x /etc/rc.d/rc.yp ]; then
+  . /etc/rc.d/rc.yp start
+fi
+
+# Start the NFS server.   Note that for this to work correctly, you'll
+# need to load the knfsd module for kernel NFS server support.
+# You'll also need to set up some shares in /etc/exports, and be sure
+# that /etc/rc.d/rc.portmap is executable.
+# Starting the NFS server:
+if [ -x /etc/rc.d/rc.nfsd ]; then
+  /etc/rc.d/rc.nfsd start
+fi
+
+# Stuff you won't need follows.  ;-)
+
+# # Start the network routing daemon:
+# if [ -x /usr/sbin/routed ]; then
+#   echo "Starting network routing daemon:  /usr/sbin/routed"
+#   /usr/sbin/routed -g -s
+# fi
+
+# # Start the system status server:
+# if [ -x /usr/sbin/rwhod ]; then
+#   echo "Starting system status server:  /usr/sbin/rwhod"
+#   /usr/sbin/rwhod
+# fi
+
+#  # Fire up the PC-NFS daemon(s).  This is a primarily obsolete system, and may
+#  # not be very secure.  It's not at all needed for normal NFS server support.
+#  # You probably should not run this.
+#  if [ -x /usr/sbin/rpc.pcnfsd ]; then
+#    echo "Starting PC-NFS daemons:  /usr/sbin/rpc.pcnfsd /usr/sbin/rpc.bwnfsd"
+#    /usr/sbin/rpc.pcnfsd /var/spool/lpd
+#  fi
+#  if [ -x /usr/sbin/rpc.bwnfsd ]; then
+#    /usr/sbin/rpc.bwnfsd /var/spool/lpd
+#  fi
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inetd b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inetd
new file mode 100644 (file)
index 0000000..9fe1419
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/sh
+# Start/stop/restart inetd, the BSD Internet super-daemon.
+
+# Start inetd:
+inetd_start() {
+  if [ -x /usr/sbin/inetd ]; then
+    echo "Starting Internet super-server daemon:  /usr/sbin/inetd"
+    /usr/sbin/inetd
+  fi
+}
+
+# Stop inetd:
+inetd_stop() {
+  killall inetd
+}
+
+# Restart inetd:
+inetd_restart() {
+  inetd_stop
+  sleep 1
+  inetd_start
+}
+
+case "$1" in
+'start')
+  inetd_start
+  ;;
+'stop')
+  inetd_stop
+  ;;
+'restart')
+  inetd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.ip_forward b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.ip_forward
new file mode 100644 (file)
index 0000000..52bd2fe
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/sh
+# /etc/rc.d/rc.ip_forward:  start/stop IP packet forwarding
+#
+# If you intend to run your Linux box as a router, i.e. as a
+# computer that forwards and redistributes network packets, you
+# will need to enable IP packet forwarding in your kernel.
+#
+# To activate IP packet forwarding at boot time, make this
+# script executable:  chmod 755 /etc/rc.d/rc.ip_forward
+#
+# To disable IP packet forwarding at boot time, make this
+# script non-executable:  chmod 644 /etc/rc.d/rc.ip_forward
+
+# Start IP packet forwarding:
+ip_forward_start() {
+  if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+    echo "Activating IPv4 packet forwarding."
+    echo 1 > /proc/sys/net/ipv4/ip_forward
+  fi
+  # When using IPv4 packet forwarding, you will also get the
+  # rp_filter, which automatically rejects incoming packets if the
+  # routing table entry for their source address doesn't match the
+  # network interface they're arriving on.  This has security
+  # advantages because it prevents the so-called IP spoofing,
+  # however it can pose problems if you use asymmetric routing
+  # (packets from you to a host take a different path than packets
+  # from that host to you) or if you operate a non-routing host
+  # which has several IP addresses on different interfaces.  To
+  # turn rp_filter off, uncomment the lines below:
+  #if [ -r /proc/sys/net/ipv4/conf/all/rp_filter ]; then
+  #  echo "Disabling rp_filter."
+  #  echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
+  #fi
+}
+
+# Stop IP packet forwarding:
+ip_forward_stop() {
+  if [ -f /proc/sys/net/ipv4/ip_forward ]; then
+    echo "Disabling IPv4 packet forwarding."
+    echo 0 > /proc/sys/net/ipv4/ip_forward
+  fi
+}
+
+# Restart IP packet forwarding:
+ip_forward_restart() {
+  ip_forward_stop
+  sleep 1
+  ip_forward_start
+}
+
+case "$1" in
+'start')
+  ip_forward_start
+  ;;
+'stop')
+  ip_forward_stop
+  ;;
+'restart')
+  ip_forward_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.local b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.local
new file mode 100755 (executable)
index 0000000..3cf2076
--- /dev/null
@@ -0,0 +1,5 @@
+#!/bin/sh
+#
+# /etc/rc.d/rc.local:  Local system initialization script.
+#
+# Put any local setup commands in here:
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.mysqld b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.mysqld
new file mode 100644 (file)
index 0000000..239e2e6
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/sh
+# Start/stop/restart mysqld.
+#
+# Copyright 2003 Patrick J. Volkerding, Concord, CA
+# Copyright 2003 Slackware Linux, Inc., Concord, CA
+#
+# This program comes with NO WARRANTY, to the extent permitted by law.
+# You may redistribute copies of this program under the terms of the
+# GNU General Public License.
+
+# To start MySQL automatically at boot, be sure this script is executable:
+# chmod 755 /etc/rc.d/rc.mysqld
+
+# Before you can run MySQL, you must have a database.  To install an initial
+# database, do this as root:
+#
+#   su - mysql
+#   mysql_install_db
+#
+# Note that step one is becoming the mysql user.  It's important to do this
+# before making any changes to the database, or mysqld won't be able to write
+# to it later (this can be fixed with 'chown -R mysql.mysql /var/lib/mysql').
+
+# To disallow outside connections to the database (if you don't need them, this
+# is recommended to increase security), uncomment the next line:
+#SKIP="--skip-networking"
+
+# Start mysqld:
+mysqld_start() {
+  if [ -x /usr/bin/mysqld_safe ]; then
+    # If there is an old PID file (no mysqld running), clean it up:
+    if [ -r /var/run/mysql/mysql.pid ]; then
+      if ! ps ax | grep mysqld 1> /dev/null 2> /dev/null ; then
+        echo "Cleaning up old /var/run/mysql/mysql.pid."
+        rm -f /var/run/mysql/mysql.pid
+      fi
+    fi
+    /usr/bin/mysqld_safe --datadir=/var/lib/mysql --pid-file=/var/run/mysql/mysql.pid $SKIP &
+  fi
+}
+
+# Stop mysqld:
+mysqld_stop() {
+  # If there is no PID file, ignore this request...
+  if [ -r /var/run/mysql/mysql.pid ]; then
+    killall mysqld
+    # Wait at least one minute for it to exit, as we don't know how big the DB is...
+    for second in 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 \
+      0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 60 ; do
+      if [ ! -r /var/run/mysql/mysql.pid ]; then
+        break;
+      fi
+      sleep 1
+    done
+    if [ "$second" = "60" ]; then
+      echo "WARNING:  Gave up waiting for mysqld to exit!"
+      sleep 15
+    fi
+  fi
+}
+
+# Restart mysqld:
+mysqld_restart() {
+  mysqld_stop
+  mysqld_start
+}
+
+case "$1" in
+'start')
+  mysqld_start
+  ;;
+'stop')
+  mysqld_stop
+  ;;
+'restart')
+  mysqld_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.postfix b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.postfix
new file mode 100644 (file)
index 0000000..bc32367
--- /dev/null
@@ -0,0 +1,45 @@
+#!/bin/sh
+#
+## Slackware init script for postfix
+##   20030828 Manolis Tzanidakis
+#
+
+postfix_start() {
+        if [ -x /usr/sbin/postfix ]; then
+                echo -n "Starting postfix MTA:  "
+                echo "/usr/sbin/postfix start"
+                /usr/sbin/postfix start 2>/dev/null
+        fi
+}
+
+postfix_stop() {
+        /usr/sbin/postfix stop 2>/dev/null
+}
+
+postfix_restart() {
+        sh $0 stop
+       sleep 1
+        sh $0 start
+}
+
+postfix_reload() {
+        /usr/sbin/postfix reload 2>/dev/null
+}
+
+case "$1" in
+        'start')
+                postfix_start
+                ;;
+        'stop')
+                postfix_stop
+                ;;
+        'restart')
+                postfix_restart
+                ;;
+        'reload')
+                postfix_reload
+                ;;
+        *)
+                echo "usage $0 start|stop|restart|reload"
+esac
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sendmail b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sendmail
new file mode 100644 (file)
index 0000000..1a31c52
--- /dev/null
@@ -0,0 +1,38 @@
+#!/bin/sh
+# Start/stop/restart sendmail.
+
+# Start sendmail:
+sendmail_start() {
+  if [ -x /usr/sbin/sendmail ]; then
+    echo "Starting sendmail MTA daemon: /usr/sbin/sendmail -L sm-mta -bd -q25m"
+    /usr/sbin/sendmail -L sm-mta -bd -q25m
+    echo "Starting sendmail MSP queue runner: /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m"
+    /usr/sbin/sendmail -L sm-msp-queue -Ac -q25m
+  fi
+}
+
+# Stop sendmail:
+sendmail_stop() {
+  killall sendmail
+}
+
+# Restart sendmail:
+sendmail_restart() {
+  sendmail_stop
+  sleep 1
+  sendmail_start
+}
+
+case "$1" in
+'start')
+  sendmail_start
+  ;;
+'stop')
+  sendmail_stop
+  ;;
+'restart')
+  sendmail_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.serial b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.serial
new file mode 100755 (executable)
index 0000000..5f31c01
--- /dev/null
@@ -0,0 +1,132 @@
+#
+# /etc/rc.serial 
+#      Initializes the serial ports on your system
+#
+# chkconfig: 2345 50 75
+# description: This initializes the settings of the serial port
+#
+# FILE_VERSION: 19981128
+#
+# Distributed with setserial and the serial driver.  We need to use the
+# FILE_VERSION field to assure that we don't overwrite a newer rc.serial 
+# file with a newer one.
+# 
+# XXXX For now, the autosave feature doesn't work if you are
+# using the multiport feature; it doesn't save the multiport configuration
+# (for now).  Autosave also doesn't work for the hayes devices.  
+#
+
+RCLOCKFILE=/var/lock/subsys/serial
+DIRS="/lib/modules/`uname -r`/misc /lib/modules /usr/lib/modules ."
+PATH=/bin:/sbin:/usr/bin
+DRIVER=serial
+DRIVER_NAME=serial
+MODULE_REGEXP="serial\b"
+
+ALLDEVS="/dev/ttyS?"
+if /bin/ls /dev/ttyS?? >& /dev/null ; then
+       ALLDEVS="$ALLDEVS /dev/ttyS??"
+fi
+
+SETSERIAL=""
+if test -x /bin/setserial ; then
+       SETSERIAL=/bin/setserial
+elif test -x /sbin/setserial ; then
+       SETSERIAL=/sbin/setserial
+fi
+
+#
+# See if the serial driver is loaded
+#
+LOADED=""
+if test -f /proc/devices; then
+       if grep -q " ttyS$" /proc/devices ; then
+               LOADED="yes"
+       else
+               LOADED="no"
+       fi
+fi
+
+#
+# Find the serial driver
+#
+for i in $DIRS
+do
+       if test -z "$MODULE" -a -f $i/$DRIVER.o ; then
+               MODULE=$i/$DRIVER.o
+       fi
+done
+
+if ! test -f /proc/modules ; then
+       MODULE=""
+fi
+
+#
+# Handle System V init conventions...
+#
+case $1 in
+start)
+       action="start";
+       ;;
+stop)
+       action="stop";
+       ;;
+*)
+       action="start";
+esac
+
+if test $action  = stop ; then
+       if test -n ${SETSERIAL} -a "$LOADED" != "no" -a \
+           `head -1 /etc/serial.conf`X = "###AUTOSAVE###X" ; then
+               echo -n "Saving state of serial devices... "
+               grep "^#" /etc/serial.conf > /etc/.serial.conf.new
+               ${SETSERIAL} -G -g ${ALLDEVS} >> /etc/.serial.conf.new
+               mv /etc/serial.conf /etc/.serial.conf.old
+               mv /etc/.serial.conf.new /etc/serial.conf
+               echo "done."
+       fi
+       if test -n "$MODULE" ; then
+               module=`grep $MODULE_REGEXP /proc/modules | awk '{print $1}'`
+               if test -z "$module" ; then 
+                       echo "The $DRIVER_NAME driver is not loaded."
+                       rm -f ${RCLOCKFILE}
+                       exit 0
+               fi
+               if rmmod $module ; then :; else 
+                       echo "The $DRIVER_NAME driver could NOT be unloaded."
+                       exit 1;
+               fi
+               echo "The $DRIVER_NAME driver has been unloaded."
+       fi
+       rm -f ${RCLOCKFILE}
+       exit 0
+fi
+
+#
+# If not stop, it must be a start....
+#
+
+if test -n "$MODULE" -a "$LOADED" != "yes" ; then 
+       if insmod -f $MODULE $DRIVER_ARG ; then
+          true
+       else
+               echo "Couldn't load $DRIVER_NAME driver."
+               exit 1
+       fi
+fi
+
+if test -f /etc/serial.conf ; then
+        if test -n ${SETSERIAL} ; then
+               grep -v ^# < /etc/serial.conf | while read device args
+               do
+                    if [ ! "$device" = "" -a ! "$args" = "" ]; then
+                        ${SETSERIAL} -z $device $args
+                    fi
+               done 
+       fi
+else
+       echo "###AUTOSAVE###" > /etc/serial.conf
+fi
+
+touch ${RCLOCKFILE}
+${SETSERIAL} -bg ${ALLDEVS}
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sshd b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sshd
new file mode 100755 (executable)
index 0000000..a3707e3
--- /dev/null
@@ -0,0 +1,50 @@
+#!/bin/sh
+# Start/stop/restart the secure shell server:
+
+sshd_start() {
+  # Create host keys if needed.
+  if [ ! -r /etc/ssh/ssh_host_key ]; then
+    /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_key -N '' 
+  fi
+  if [ ! -f /etc/ssh/ssh_host_dsa_key ]; then
+    /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
+  fi
+  if [ ! -f /etc/ssh/ssh_host_rsa_key ]; then
+    /usr/bin/ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ''
+  fi
+  /usr/sbin/sshd
+}
+
+sshd_stop() {
+  killall sshd
+}
+
+sshd_restart() {
+  if [ -r /var/run/sshd.pid ]; then
+    echo "WARNING: killing listener process only.  To kill every sshd process, you must"
+    echo "         use 'rc.sshd stop'.  'rc.sshd restart' kills only the parent sshd to"
+    echo "         allow an admin logged in through sshd to use 'rc.sshd restart' without"
+    echo "         being cut off.  If sshd has been upgraded, new connections will now"
+    echo "         use the new version, which should be a safe enough approach."
+    kill `cat /var/run/sshd.pid`
+  else
+    killall sshd
+  fi
+  sleep 1
+  sshd_start
+}
+
+case "$1" in
+'start')
+  sshd_start
+  ;;
+'stop')
+  sshd_stop
+  ;;
+'restart')
+  sshd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.syslog b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.syslog
new file mode 100755 (executable)
index 0000000..a005fb7
--- /dev/null
@@ -0,0 +1,42 @@
+#!/bin/sh
+# Start/stop/restart the system logging daemons.
+#
+# Written for Slackware Linux by Patrick J. Volkerding <volkerdi@slackware.com>.
+
+syslogd_start() {
+  if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then
+    echo -n "Starting sysklogd daemons: "
+    echo -n "/usr/sbin/syslogd "
+    /usr/sbin/syslogd
+    sleep 1 # prevent syslogd/klogd race condition on SMP kernels
+    echo "/usr/sbin/klogd -c 3 -x"
+    # '-c 3' = display level 'error' or higher messages on console
+    # '-x' = turn off broken EIP translation
+    /usr/sbin/klogd -c 3 -x
+  fi
+}
+
+syslogd_stop() {
+  killall syslogd 2> /dev/null
+  killall klogd 2> /dev/null
+}
+
+syslogd_restart() {
+  syslogd_stop
+  sleep 1
+  syslogd_start
+}
+
+case "$1" in
+'start')
+  syslogd_start
+  ;;
+'stop')
+  syslogd_stop
+  ;;
+'restart')
+  syslogd_restart
+  ;;
+*)
+  echo "usage $0 start|stop|restart"
+esac
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sysvinit b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sysvinit
new file mode 100755 (executable)
index 0000000..916e59e
--- /dev/null
@@ -0,0 +1,58 @@
+#!/bin/sh
+#
+# rc.sysvinit   This file provides basic compatibility with SystemV style
+#               startup scripts.  The SystemV style init system places 
+#               start/stop scripts for each runlevel into directories such as
+#               /etc/rc.d/rc3.d/ (for runlevel 3) instead of starting them
+#               from /etc/rc.d/rc.M.  This makes for a lot more init scripts,
+#               and a more complicated execution path to follow through if
+#               something goes wrong.  For this reason, Slackware has always
+#               used the traditional BSD style init script layout.
+#
+#               However, many binary packages exist that install SystemV
+#               init scripts.  With rc.sysvinit in place, most well-written
+#               startup scripts will work.  This is primarily intended to
+#               support commercial software, though, and probably shouldn't
+#               be considered bug free.
+#
+#               Written by Patrick Volkerding <volkerdi@slackware.com>, 1999
+#               from an example by Miquel van Smoorenburg <miquels@cistron.nl>.
+
+# Run an init script:
+startup() {
+  case "$1" in
+  *.sh)
+    sh "$@"
+    ;;
+  *)
+    "$@"
+    ;;
+  esac
+}
+
+# Set onlcr to avoid staircase effect.
+stty onlcr 0>&1
+
+if [ "$runlevel" = "" ]; then
+  runlevel=$RUNLEVEL
+  export runlevel
+  prevlevel=$PREVLEVEL
+  export prevlevel
+fi
+
+# Run kill scripts in the previous runlevel if not "none"
+if [ ! "$prevlevel" = "N" ]; then
+  for script in /etc/rc.d/rc$prevlevel.d/K* ; do
+    if [ -x $script ]; then
+      startup $script stop
+    fi
+  done
+fi
+
+# Now do the startup scripts:
+for script in /etc/rc.d/rc$runlevel.d/S* ; do
+  if [ -x $script ]; then
+    startup $script start
+  fi
+done
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/rssh.conf b/tags/0.5/templates/vserver/vserver.d/etc/rssh.conf
new file mode 100644 (file)
index 0000000..a74acc6
--- /dev/null
@@ -0,0 +1,48 @@
+# This is the default rssh config file
+
+# set the log facility.  "LOG_USER" and "user" are equivalent.
+logfacility = LOG_USER 
+
+# Leave these all commented out to make the default action for rssh to lock
+# users out completely...
+
+allowscp
+allowsftp
+#allowcvs
+#allowrdist
+#allowrsync
+
+# set the default umask
+umask = 022
+
+# If you want to chroot users, use this to set the directory where the root of
+# the chroot jail will be located.
+#
+# if you DO NOT want to chroot users, LEAVE THIS COMMENTED OUT.
+# You can quote anywhere, but quotes not required unless path contains a
+# space... as in this example.
+
+chrootpath = "/var/users"
+
+##########################################
+# EXAMPLES of configuring per-user options
+
+#user=rudy:077:00010:  # the path can simply be left out to not chroot
+#user=rudy:077:00010   # the ending colon is optional
+
+#spaces in the path must be quoted...
+#user=rudy:011:00001:"/usr/local/chroot dir"  # scp with chroot
+#user=rudy:011:00010:"/usr/local/chroot dir"  # sftp with chroot
+#user=rudy:011:00011:"/usr/local/chroot dir"  # both with chroot
+#user=rudy:011:00100:  # cvs, with no chroot 
+#user=rudy:011:01000:  # rdist, with no chroot
+#user=rudy:011:10000:  # rsync, with no chroot
+#user="rudy:011:00001:/usr/local/chroot"  # whole user string can be quoted
+#user=rudy:01"1:00001:/usr/local/chroot"  # or somewhere in the middle, freak!
+#user=rudy:'011:00001:/usr/local/chroot'  # single quotes too
+
+# Spaces before or after the '=' are fine, but spaces in chrootpath need
+# quotes.
+#user = "rudy:011:00001:/usr/local/chroot dir"  
+#user = "rudy:011:00001:/usr/local/chroot dir"  # neither do comments at line end
+
diff --git a/tags/0.5/templates/vserver/vserver.d/etc/ssh/sshd_config b/tags/0.5/templates/vserver/vserver.d/etc/ssh/sshd_config
new file mode 100644 (file)
index 0000000..a161fec
--- /dev/null
@@ -0,0 +1,103 @@
+#      $OpenBSD: sshd_config,v 1.69 2004/05/23 23:59:53 dtucker Exp $
+
+# This is the sshd server system-wide configuration file.  See
+# sshd_config(5) for more information.
+
+# This sshd was compiled with PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
+
+# The strategy used for options in the default sshd_config shipped with
+# OpenSSH is to specify options with their default value where
+# possible, but leave them commented.  Uncommented options change a
+# default value.
+
+#Port 22
+#Protocol 2,1
+#ListenAddress 0.0.0.0
+#ListenAddress ::
+
+# HostKey for protocol version 1
+#HostKey /etc/ssh/ssh_host_key
+# HostKeys for protocol version 2
+#HostKey /etc/ssh/ssh_host_rsa_key
+#HostKey /etc/ssh/ssh_host_dsa_key
+
+# Lifetime and size of ephemeral version 1 server key
+#KeyRegenerationInterval 1h
+#ServerKeyBits 768
+
+# Logging
+#obsoletes QuietMode and FascistLogging
+#SyslogFacility AUTH
+#LogLevel INFO
+
+# Authentication:
+
+#LoginGraceTime 2m
+PermitRootLogin no
+#StrictModes yes
+#MaxAuthTries 6
+
+#RSAAuthentication yes
+#PubkeyAuthentication yes
+#AuthorizedKeysFile    .ssh/authorized_keys
+
+# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
+#RhostsRSAAuthentication no
+# similar for protocol version 2
+#HostbasedAuthentication no
+# Change to yes if you don't trust ~/.ssh/known_hosts for
+# RhostsRSAAuthentication and HostbasedAuthentication
+#IgnoreUserKnownHosts no
+# Don't read the user's ~/.rhosts and ~/.shosts files
+#IgnoreRhosts yes
+
+# To disable tunneled clear text passwords, change to no here!
+#PasswordAuthentication yes
+#PermitEmptyPasswords no
+
+# Change to no to disable s/key passwords
+#ChallengeResponseAuthentication yes
+
+# Kerberos options
+#KerberosAuthentication no
+#KerberosOrLocalPasswd yes
+#KerberosTicketCleanup yes
+#KerberosGetAFSToken no
+
+# GSSAPI options
+#GSSAPIAuthentication no
+#GSSAPICleanupCredentials yes
+
+# Set this to 'yes' to enable PAM authentication, account processing, 
+# and session processing. If this is enabled, PAM authentication will 
+# be allowed through the ChallengeResponseAuthentication mechanism. 
+# Depending on your PAM configuration, this may bypass the setting of 
+# PasswordAuthentication, PermitEmptyPasswords, and 
+# "PermitRootLogin without-password". If you just want the PAM account and 
+# session checks to run without PAM authentication, then enable this but set 
+# ChallengeResponseAuthentication=no
+#UsePAM no
+
+#AllowTcpForwarding yes
+#GatewayPorts no
+#X11Forwarding no
+#X11DisplayOffset 10
+#X11UseLocalhost yes
+#PrintMotd yes
+#PrintLastLog yes
+#TCPKeepAlive yes
+#UseLogin no
+#UsePrivilegeSeparation yes
+#PermitUserEnvironment no
+#Compression yes
+#ClientAliveInterval 0
+#ClientAliveCountMax 3
+#UseDNS yes
+#PidFile /var/run/sshd.pid
+#MaxStartups 10
+
+# no default banner path
+#Banner /some/path
+
+# override default of no subsystems
+Subsystem      sftp    /usr/libexec/sftp-server
diff --git a/tags/0.5/templates/vserver/vserver.d/var/www/htdocs/missing.html b/tags/0.5/templates/vserver/vserver.d/var/www/htdocs/missing.html
new file mode 100644 (file)
index 0000000..2762324
--- /dev/null
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+  <center>
+  <pre>
+  File not found.
+  </pre>
+  </center>
+</body>
+</html>
diff --git a/tags/0.5/templates/vserver/vserver.d/var/www/missing.html b/tags/0.5/templates/vserver/vserver.d/var/www/missing.html
new file mode 100644 (file)
index 0000000..b2eec17
--- /dev/null
@@ -0,0 +1,12 @@
+<html>
+<head>
+<title>404 - Not Found</title>
+</head>
+<body>
+  <center>
+  <pre>
+  O endere&ccedil;o que voc&ecirc; requisitou n&atilde;o p&ocirc;de ser encontrado :(
+  </pre>
+  </center>
+</body>
+</html>
diff --git a/tags/0.5/templates/vserver/vserver.perms b/tags/0.5/templates/vserver/vserver.perms
new file mode 100644 (file)
index 0000000..0c136ed
--- /dev/null
@@ -0,0 +1,37 @@
+./etc;0;0;755
+./etc/apache;0;0;755
+./etc/apache/httpd.conf;0;0;644
+./etc/apache/php.ini;0;0;644
+./etc/apache/vhosts;0;0;644
+./etc/logrotate.d;0;0;755
+./etc/logrotate.d/apache;0;0;644
+./etc/rc.d;0;0;755
+./etc/rc.d/rc.httpd;0;0;644
+./etc/rc.d/rc;0;0;755
+./etc/rc.d/rc.0;0;0;755
+./etc/rc.d/rc.4;0;0;644
+./etc/rc.d/rc.6;0;0;755
+./etc/rc.d/rc.K;0;0;755
+./etc/rc.d/rc.M;0;0;755
+./etc/rc.d/rc.S;0;0;755
+./etc/rc.d/rc.ip_forward;0;0;644
+./etc/rc.d/rc.inet2;0;0;755
+./etc/rc.d/rc.inetd;0;0;644
+./etc/rc.d/rc.mysqld;0;0;644
+./etc/rc.d/rc.local;0;0;755
+./etc/rc.d/rc.postfix;0;0;644
+./etc/rc.d/rc.sendmail;0;0;644
+./etc/rc.d/rc.serial;0;0;755
+./etc/rc.d/rc.sshd;0;0;755
+./etc/rc.d/rc.syslog;0;0;755
+./etc/rc.d/rc.sysvinit;0;0;755
+./etc/ssh;0;0;755
+./etc/ssh/sshd_config;0;0;644
+./etc/rssh.conf;0;0;644
+./etc/hosts;0;0;644
+./etc/profile;0;0;644
+./var;0;0;755
+./var/www;0;0;755
+./var/www/htdocs;0;0;755
+./var/www/htdocs/missing.html;0;0;644
+./var/www/missing.html;0;0;644
diff --git a/tags/0.5/templates/vserver/vserver.s/GPG-KEY b/tags/0.5/templates/vserver/vserver.s/GPG-KEY
new file mode 100644 (file)
index 0000000..fd23e95
--- /dev/null
@@ -0,0 +1,88 @@
+security@slackware.com public key
+
+Type  bits/keyID    Date       User ID
+pub  1024D/40102233 2003-02-26 Slackware Linux Project <security@slackware.com>
+sub  1024g/4E523569 2003-02-26 [expires: 2012-12-21]
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.1 (GNU/Linux)
+
+mQGiBD5dIFQRBADB31WinbXdaGk/8RNkpnZclu1w3Xmd5ItACDLB2FhOhArw35EA
+MOYzxI0gRtDNWN4pn9n74q4HbFzyRWElThWRtBTYLEpImzrk7HYVCjMxjw5A0fTr
+88aiHOth5aS0vPAoq+3TYn6JDSipf2bR03G2JVwgj3Iu066pX4naivNm8wCgldHG
+F3y9vT3UPYh3QFgEUlCalt0D/3n6NopRYy0hMN6BPu+NarXwv6NQ9g0GV5FNjEEr
+igkrD/htqCyWAUl8zyCKKUFZZx4UGBRZ5guCdNzwgYH3yn3aVMhJYQ6tcSlLsj3f
+JIz4LAZ3+rI77rbn7gHHdp7CSAuV+QHv3aNanUD/KGz5SPSvF4w+5qRM4PfPNT1h
+LMV8BACzxiyX7vzeE4ZxNYvcuCtv0mvEHl9yD66NFA35RvXaO0QiRVYeoUa5JOQZ
+gwq+fIB0zgsEYDhXFkC1hM/QL4NccMRk8C09nFn4eiz4dAEnwKt4rLCJKhkLl1DW
+TSoXHe/dOXaLnFyLzB1J8hEYmUvw3SwPt//wMqDiVBLeZfFcdLQwU2xhY2t3YXJl
+IExpbnV4IFByb2plY3QgPHNlY3VyaXR5QHNsYWNrd2FyZS5jb20+iF8EExECAB8F
+Aj5dIFQFCRJ3owAECwcDAgMVAgMDFgIBAh4BAheAAAoJEGpEY8BAECIzee0An3My
+boalJ5nLePD0HCzMuf8Ix8gPAJ9lnU1wqNVGza0t89ACTurDoppQ2rkBDQQ+XSBV
+EAQA3VYlpPyRKdOKoM6t1SwNG0YgVFSvxy/eiratBf7misDBsJeH86Pf8H9OfVHO
+cqscLiC+iqvDgqeTUX9vASjlnvcoS/3H5TDPlxiifIDggqd2euNtJ8+lyXRBV6yP
+sBIA6zki9cR4zphe48hKpSsDfj7uL5sfyc2UmKKboSu3x7cAAwUD/1jmoLQs9bIt
+bTosoy+5+Uzrl0ShRlv+iZV8RPzAMFuRJNxUJkUmmThowtXRaPKFI9AVd+pP44aA
+J+zxCPtS2isiW20AxubJoBPpXcVatJWi4sG+TM5Z5VRoLg7tIDNVWsyHGXPAhIG2
+Y8Z1kyWwb4P8A/W2b1ZCqS7Fx4yEhTikiEwEGBECAAwFAj5dIFUFCRJ3owAACgkQ
+akRjwEAQIjM1uwCdE7V4mPCqdby/nV699NxKX0iW/OsAniaVhEip8Ptff74Sv4JV
+tb+Sth2l
+=H5uu
+-----END PGP PUBLIC KEY BLOCK-----
+
+slamd64 public key
+
+-----BEGIN PGP PUBLIC KEY BLOCK-----
+Version: GnuPG v1.2.6 (GNU/Linux)
+
+mQGiBELKSBYRBACiElxGMXqxUwdsQBKPngV6/k0Q5AYT34+WLL0B7XRR9kOotCfc
+PTLCP5qLM9etpzKhbMbgWGpaBrA/3KEPOJ7JVhk6JcLgjoi0QsMusaI4BGnmrxkw
+3mh9xPwc+jPgiYOljbZhNG6FMQtrdlKYV+BmwS8mt/YBymShghtlgdHJjwCg/PAG
+YJDsfoG1ebuwcjYlsGoD2x0EAJX7UnTdxxESvmIuk172MunZqw+o8+o/W684z13/
+wOkcVqvuAcd0ejuY0z09GFfyhtig8E55UcKNyVC50+3aJUXlt9//HnENHZo+OEN1
+ezbOXUcJIw8xkU551qaxubqWXtKYEJP9z/khVPe4N0JW2vWOcAFYhuOEx1ylaNrX
+gUY4BACDpn+pntq0ooZqkSPT4v1ibOQg/3xh2F1PgsnOahMRrXbVEdL9ItsVnHM/
+ygHBjLhkEMd612nVVSw1BYMBAwQbsYB8Lgn1QxXl0ISBYR1RYW1LvyaJM6A6TDL+
+EdWp+iTtlKOe/VD+oCfHmMONoucZJM2AtK1vXTX3x4Wb4MgVdLQoRnJlZGVyaWNr
+IEVtbW90dCA8bWFpbEBmcmVkZW1tb3R0LmNvLnVrPohkBBMRAgAkBQJCykgWAhsD
+BQkDwmcABgsJCAcDAgMVAgMDFgIBAh4BAheAAAoJEAd5Da1T/acLGfIAoOqIHrg4
+r2pq/tKi9VifOJS1xg4LAKDpi0I0pzsdDJ2owxCQ88MkoSDKgohMBBARAgAMBQJD
+Ed/tBYMDes8pAAoJEFgpV1AFAIOLprQAnRDVVmDPnzVNOWrZ8D55gG2bOwkxAKCl
+dGThnu0aQ0IEL7MgUETGtk4hS4iiBBABAgAMBQJDEdpDBYMDetTTAAoJEJugaRW/
+hasxqCwEAKczPTgOrRXXTs4piB14DayJQVgoqVgiNfKzd5qVuvQgYebQrMu7hi5U
+0q/n6TbQpjmMDZKxhXhEY1gs32mtzKKDrerTpF+pJAgQVvBLZS2mF4HbVnU74GvL
+2UKJtEtgb9u+i1Efd4Q8GIJUzLLJifURQWTk1e3B9qGApKXpWJlviEwEEBECAAwF
+AkMR75MFgwN6v4MACgkQTqjEwhXvPN1j7gCbBXZs9MM6YXGI/yTlEhiXyTECxm8A
+nj6O1XszSa5kaD7CvnRFzNkm5O5MiEwEEBECAAwFAkMR79UFgwN6v0EACgkQoLYC
+8AehV8eLBQCgv8WEdBtFjTh3Wl06WK5dKCw0nHsAn0IIHRbJC5jO4NWrIpupBMnz
+3fBsiEwEExECAAwFAkMR9ggFgwN6uQ4ACgkQR+ny47i1wzAfZQCfRACyfYBxs+tu
+6OzpLP2DGjEaa1UAnj4MVMH32f/34oN6o9dPKPT8HXWziEwEExECAAwFAkMR9vcF
+gwN6uB8ACgkQB0u7y43syeIaogCfVy7lqRjRDbttJs1u1g3FekdbJ1kAnRo726tA
+u8Xf+JWD3OrmMo0Uup3giEwEEBECAAwFAkMR+qgFgwN6tG4ACgkQfWXW5We1ioQk
+tgCePGa3NpcfEWb8drmO95Mp1C+FaBIAoNEqA89xUvTIpqooucTzFxgAupVgiEwE
+EBECAAwFAkMSF+UFgwN6lzEACgkQ/lREvmcCFhscDQCgnMxf4Nmu3B41GWupTWxb
+9b+te5sAoIiTZHzOSKtqN4cJ2i22iP/vZPt4iEwEEBECAAwFAkMULeAFgwN4gTYA
+CgkQsxZ93p+gHn6bcACgwY/5ZpvvEK+eycM5XNQhVI6w4j8An0JoXlFaGStIzUmW
+42obaW6CG4WViEYEExECAAYFAkMUZuAACgkQGnR+RTDgudhG1QCeJelEhnX/3JeW
+S5BaM7640suSeLQAnA2RDMH4zIJLI4MWEXBAvaA0lSr7iEwEEBECAAwFAkMUP8gF
+gwN4b04ACgkQM/XwBW70U1iAOwCgmah/GnZikIhyeFr6KsKpsmZCQTQAn3Vs7JZm
+w4qBLiI+RXxw7vIJlI4AiEwEEBECAAwFAkMUZ9EFgwN4R0UACgkQ72KcVAmwbhAC
+FACgiNqao9mzAWZBjIY7iiqz34gbK/QAn34F1bLAb0sHKiSUcFkVi/uZ8R0viEwE
+EBECAAwFAkMWFj8FgwN2mNcACgkQn3j4POjENGF+UgCeM+mEKW5+MjNN17QCAvZi
+cBVJEHMAn14YyvdSIwBBFUNPWYOw7GwYyAhHiEwEEBECAAwFAkMXW0cFgwN1U88A
+CgkQTxqZjtpq5iG4PwCfe2ymOYh5t+bEZGGCtJg3sWJ5hHYAmQGS+jGWcTMlXSe+
+65o/aPfLUkMQuQINBELKSCgQCADjG+pX7C0sRIkX1QQ6lFW3IrajWypXtd4jO1TA
+dlLFES7OxF202V15+TRtL9NO34x7u6RPTnF7wi/i2U1dqM9ZjrFcTJA17Y7+OLH+
+yw64/5OJapUi48qI7hnLRTPykz0c+b92pUt1X/BIWmf301jbZ0AbFZV4yvm1OUH4
+wrGLLFeATjiBWTcJarRiR89DzQ/Cm+c791WXdIhEvv5Vp4/d8HzGZhEUVKTCoA3e
+Z8ZIdJoy/d7FYfyeg836UDXEqr598n2p9DxMwkRj5oHINB64CrQuKr7zDdP8Zv2g
+vKkjeS4mN+07saWK3UTY5ADByNVHSu+P0LZYPhxjze7KOVjHAAUTCACa5ohR/7/N
+x2M2OB9VPAwQPjAFNst6fPotcFLDy5Q/jlbBcDNf1OdzgkE/06z7iPGRmIJL6flz
+QZH+hYwDqjulVVtPQXiZMVGvlfC9YIAdJX/1Ca2L9mL4c4IBQbFNkSlgkLaPTwUJ
+BD2PnA+q+ERy39UANhIR/LVGltK1krDds8CwbxMSYNFvFgf4dmh6GzI5ioByDoTM
+8ShfS2GjAekviNVLsGC5UWKuQl/XVaC/j7CTAT7WbikfXWI2uonFBx47vjf2UaPa
+E0HnAVwDY0cAZeaObpDKvyogsf8H4CzK9JCKtW9aTUpKurEpyHfcKqB07GMLC/+Q
+QiA3bFmrSaTRiE8EGBECAA8FAkLKSCgCGwwFCQPCZwAACgkQB3kNrVP9pwsejwCg
+gaQm6lU/H7ja0EUaJJFZnRoqRvAAnRK8CC4PIr/ZYDjd+aeS3R31FjGr
+=D1wm
+-----END PGP PUBLIC KEY BLOCK-----
diff --git a/tags/0.5/templates/vserver/vserver.s/devices.tar.gz b/tags/0.5/templates/vserver/vserver.s/devices.tar.gz
new file mode 100644 (file)
index 0000000..dc4aea6
Binary files /dev/null and b/tags/0.5/templates/vserver/vserver.s/devices.tar.gz differ
diff --git a/tags/0.5/templates/vserver/vserver.s/vserver.sh b/tags/0.5/templates/vserver/vserver.s/vserver.sh
new file mode 100644 (file)
index 0000000..e9d68a9
--- /dev/null
@@ -0,0 +1,55 @@
+#!/bin/bash
+#
+# vserver template script
+#
+
+BASE="/etc/simplepkg/templates/vserver/vserver.s"
+DEVICES="$BASE/devices.tar.gz"
+GPGKEY="$BASE/GPG-KEY"
+
+if [ -z "$2" ]; then
+  echo "usage: `basename $0` <jail-root> <jail-name>"
+  exit 1
+elif [ ! -d "$1/$2" ]; then
+  echo "folder $1/$2 does not exist"
+  exit 1
+fi
+
+echo "creating /etc/vservers/$2..."
+mv $1/$2 $1/$2.old
+vserver $2 build -m skeleton --force &> /dev/null
+result="$?"
+rm -rf $1/$2 && mv $1/$2.old $1/$2 
+
+if [ "$result" != "0" ]; then
+  mkdir -p /etc/vservers/$2/apps/init
+fi
+
+echo sysv > /etc/vservers/$2/apps/init/style
+echo 3 > /etc/vservers/$2/apps/init/runlevel.start
+echo 6 > /etc/vservers/$2/apps/init/runlevel.stop
+
+cp /etc/resolv.conf $1/$2/etc/
+cp /etc/localtime $1/$2/etc/
+echo /dev/hdv1 / ext2 defaults 1 1 > $1/$2/etc/fstab                                                           
+echo /dev/hdv1 / ext2 rw 0 0 > $1/$2/etc/mtab                                                                  
+
+echo "creating devices and dependencies..."
+if [ -f "$DEVICES" ]; then
+  cd $1/$2/
+  tar zxvf $DEVICES
+  chroot $1/$2/ sbin/ldconfig
+else
+  echo error: device template $DEVICES not found
+fi
+
+if [ -f "$GPGKEY" ]; then
+  echo "importing slack gpg pubkey"                                                                                  
+  mkdir $1/$2/root/.gnupg                                                                                        
+  gpg --homedir $1/$2/root/.gnupg --import $GPGKEY
+fi
+
+# todo: add rebootmgr
+echo "done; now config your vserver at /etc/vservers/$2"
+echo "then, set all desired iptables rules and other stuff and then start $server vserver"
+echo "dont forget to change root's password with the command "vserver $2 exec passwd"" 
diff --git a/tags/0.5/templates/vserver/vserver.template b/tags/0.5/templates/vserver/vserver.template
new file mode 100644 (file)
index 0000000..0cd1f69
--- /dev/null
@@ -0,0 +1,250 @@
+# This is a Slackware Installation Tagfile.
+# 
+# This one comes from disk: A1 (Base Linux series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+aaa_base: ADD
+aaa_elflibs: ADD
+bash: ADD
+bin: ADD
+bzip2: ADD
+coreutils: ADD
+cxxlibs: ADD
+dcron: ADD
+elvis: ADD
+etc: ADD
+findutils: ADD
+gawk: ADD
+gettext: REC
+grep: ADD
+gzip: ADD
+infozip: ADD
+less: ADD
+logrotate: ADD
+openssl-solibs: ADD
+pkgtools: ADD
+procps: ADD
+sed: ADD
+shadow: ADD
+slocate: ADD
+sysklogd: ADD
+sysvinit: ADD
+tar: ADD
+util-linux: ADD
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: AP1 (Applications series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+bc: OPT
+diffutils: REC
+jed: OPT
+joe: OPT
+jove: OPT
+lsof: OPT
+mysql: OPT
+sudo: OPT
+glibc: REC
+# Tagfile for emacs series
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: F1 (Frequently Asked Questions)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+libidn: REC
+libxml2: REC
+mhash: REC
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from the N (Network/UUCP/Mail/News) series.
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# 
+#
+apache: OPT
+curl: OPT
+gnupg: OPT
+inetd: REC
+lftp: OPT
+lynx: OPT
+mod_ssl: OPT
+mailx: REC
+openssh: REC
+openssl: REC
+php: OPT
+rsync: OPT
+stunnel: OPT
+tcpip: REC
+wget: OPT
+# This is a Slackware Installation Tagfile.
+#           
+# This one comes from disk: TCL1 (Tcl/Tk series)
+# and a backup copy called "tagfile.org" can be found on the same disk. You
+# should never edit the "tagfile.org" copy, only the one called "tagfile". Use
+# the "tagfile.org" only if you want to restore original installation defaults
+# by copying it over the top of "tagfile".
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+#
+# If you mess this file up beyond recognition, just restore from "tagfile.org"
+# 
+#
+# This is a Slackware Installation Tagfile.
+#
+# This one comes from disk: Y1 (Yaaaaaahhoooo? Games and Amusements).
+# 
+# It is used to automate software installation. 
+# There are two labels that you can use: ADD and SKP.
+#
+# If the PROMPT option is used during installation, this file will be checked
+# to determine the installation default. First, all the lines beginning with
+# <package_name>: 
+# will be extracted. Then, the last line in the extracted segment will be 
+# checked for the flags ADD, REC, OPT and SKP.
+#
+# If ADD is found, then a priority of [required] will be displayed, and the
+# package will be automatically installed. 
+#
+# If SKP is found, then a priority of [skip] will be displayed, and
+# the package will be automatically skipped.
+#
+# All other packages will be prompted for. There are two optional flags you
+# can use to change the package priority level shown when the user is 
+# prompted: REC and OPT. If REC is found, the priority shown will be
+# [recommended], while if OPT is found, the user sees priority [optional].
+#
+# If no flags are found for a given package, the user is shown priority
+# [unknown], and is prompted for whether the package should be installed.
+# extra
+# libsafe
+# contrib
+simplepkg
+ssmtp
diff --git a/tags/0.5/utils/add-gpl b/tags/0.5/utils/add-gpl
new file mode 100755 (executable)
index 0000000..0a261e2
--- /dev/null
@@ -0,0 +1,33 @@
+#!/bin/bash
+#
+#  add-gpl is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  add-gpl is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# This script should be used to add a license in scripts.
+#
+
+script="SlackBuild"
+#script="build"
+
+for file in `find -name "*.$script"`; do
+
+  echo Changing $file...
+  package="`basename $file .$script`"
+  slackbuild="`basename $file`"
+
+  string="\#\!\/bin\/bash\n\#\n#  $slackbuild is free software; you can redistribute it and\/or modify it under the\n#  terms of the GNU General Public License as published by the Free Software\n#  Foundation; either version 2 of the License, or any later version.\n#\n#  $slackbuild is distributed in the hope that it will be useful, but WITHOUT ANY\n#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR\n#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\n#\n#  You should have received a copy of the GNU General Public License along with\n#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple\n#  Place - Suite 330, Boston, MA 02111-1307, USA"
+
+  sed -e "s/\#\!\/bin\/bash/$string/" $file > $file.new
+  cat $file.new > $file
+  rm $file.new
+
+done
diff --git a/tags/0.5/utils/add-slack-required b/tags/0.5/utils/add-slack-required
new file mode 100755 (executable)
index 0000000..67804d0
--- /dev/null
@@ -0,0 +1,63 @@
+#!/bin/bash
+#
+#  add-slack-required is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License as published by the
+#  Free Software Foundation; either version 2 of the License, or any later version.
+#
+#  add-slack-required is distributed in the hope that it will be useful, but WITHOUT
+#  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# add slack-required files in an existing repository
+# by rhatto at riseup.net
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+
+if [ -z "$2" ]; then
+  echo "usage: $BASENAME /path/to/slackbuilds /path/to/packages"
+  exit 1
+elif [ ! -d "$1" ]; then
+  echo "$BASENAME: folder not found: $1"
+  exit 1
+elif [ ! -d "$2" ]; then
+  echo "$BASENAME: folder not found: $2"
+  exit 1
+fi
+
+slackbuild="$1"
+repository="$2"
+
+# we need the function package_name
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your $BASENAME installation"
+  exit 1
+fi
+
+function search_and_copy_slackbuild {
+
+  if [ -f "$1" ]; then
+    echo Copying `basename $1` to `dirname $package`/$pack.slack-required
+    cp $1 `dirname $package`/$pack.slack-required
+    svn add `dirname $package`/$pack.slack-required 2> /dev/null
+  fi
+
+}
+
+for package in `find $repository/ -name *tgz`; do
+  pack="`package_name $package`"
+  for build_script in `find $slackbuild/ -name $pack.SlackBuild`; do
+
+    search_and_copy_slackbuild `dirname $build_script`/slack-required
+    search_and_copy_slackbuild `dirname $build_script`/$pack.slack-required
+
+  done
+done
+
diff --git a/tags/0.5/utils/convert-template-scheme b/tags/0.5/utils/convert-template-scheme
new file mode 100755 (executable)
index 0000000..de7e507
--- /dev/null
@@ -0,0 +1,35 @@
+#!/bin/bash
+#
+#  This software is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  This software is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# script for converting simplepkg templates
+# to the 0.5 own-folder format
+#
+
+cwd="/etc/simplepkg"
+cd $cwd
+
+for file in `ls *.template`; do
+  cd $cwd  
+  template="`echo $file | cut -d . -f 1`"
+  mkdir templates/$template
+  mv $template.d templates/$template/
+  mv $template.s templates/$templates/
+  mv $template.template templates/$template/
+  cd templates/$template/$template.s
+  # optional step
+  # if [ "$template" != "vserver" ]; then
+  #   ln -sf ../../../defaults/templatesvserver/vserver.s/vserver.sh
+  # fi
+done
+
diff --git a/tags/0.5/utils/merge-template b/tags/0.5/utils/merge-template
new file mode 100755 (executable)
index 0000000..3df5f7a
--- /dev/null
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+#  This software is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  This software is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# tip: to assemble a template from all slack tagfiles:
+#
+# for diskset in a ap d e f k l n t tcl x xap y; do 
+#   lynx -dump http://slack.sarava.org/slackware/slackware-10.2/slackware/$diskset/tagfile >> slack.template
+# done
+#
+
+if [ -z "$2" ]; then
+  echo "usage: `basename $0` <template> <base-template>"
+  exit 1
+elif [ ! -f "$1" ] || [ ! -f "$2" ]; then
+  echo error: $1 ou $2 not found
+  exit 1
+fi
+
+cp $2 $1.new
+
+cat $1 | while read line; do
+  pack="`echo $line | cut -d : -f 1`"
+  if ! grep -qe "^$pack:" $2; then
+    echo $line >> $1.new
+  fi
+done
diff --git a/tags/0.5/utils/metapkg b/tags/0.5/utils/metapkg
new file mode 100755 (executable)
index 0000000..e3db602
--- /dev/null
@@ -0,0 +1,72 @@
+#!/bin/bash
+#
+# metapkg v0.1: install or remove a pkgtool metapackage
+#
+# feedback: rhatto at riseup.net | GPL
+#
+#  Metapkg is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  Metapkg is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# A metapackage is a file containing a list of packages.
+# This script just installs all the packages in a metapackage.
+# Remeber that mkjail template == metapkg metapackage.
+# 
+
+#
+# TODO
+#
+# In the mean term, metapkg will not be developed, but the code will rest
+# until someone need it. Some ideas to think for the future of metapkg would
+# be a better integration with simplepkg structure, like:
+#
+# - By default metapkg searches by a slack-required in the package/slackbuilds repos
+# - With -f, metapkg uses a local file (template, slack-required or tagfile)
+#
+
+COMMON="/usr/libexec/simplepkg/common.sh"
+BASENAME="`basename $0`"
+ROOT="/"
+
+function usage {
+  echo "usage: [ROOT=/otherroot] $BASENAME --option [metapackage]"
+  echo "options: --install, --remove"
+  exit 1
+}
+
+if [ -f "$COMMON" ]; then
+  source $COMMON
+else
+  echo "error: file $COMMON found, check your `basename $0` installation"
+  exit 1
+fi
+
+if [ -z "$2" ]; then
+  usage
+else
+  eval_config $BASENAME -u
+fi
+
+if [ ! -f "$BASE_CONF/$2.template" ]; then
+  echo error: template $2 not found
+  exit 1
+else
+  TEMPLATE="$BASE_CONF/$2.template"
+  unset server
+fi
+
+if [ "$1" == "--install" ] || [ "$1" == "install" ]; then
+  install_packages
+elif [ "$1" == "--remove" ] || [ "$1" == "remove" ]; then
+  remove_packages
+else
+  usage
+fi
diff --git a/tags/0.5/utils/searchpkg b/tags/0.5/utils/searchpkg
new file mode 100755 (executable)
index 0000000..cc5a827
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+#  This software is free software; you can redistribute it and/or modify it under the
+#  terms of the GNU General Public License as published by the Free Software
+#  Foundation; either version 2 of the License, or any later version.
+#
+#  This software is distributed in the hope that it will be useful, but WITHOUT ANY
+#  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+#  A PARTICULAR PURPOSE.  See the GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License along with
+#  this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+#  Place - Suite 330, Boston, MA 02111-1307, USA
+#
+# searchpkg: search packages inside a local slackware-like repository
+# this is part of simplepkg
+# feedback: rhatto at riseup.net | gpl
+# 
+
+# find . -type f -exec ls -l {} \; > FILELIST.TXT
+
+if [[ $# != 1 && $# != 2 ]]; then
+  echo "usage: $0 [-1] <repository> [package-name]"
+  echo "package-name can be either the full package file name, just its prefix or so"
+  echo "option -1 show just the first matching package"
+  exit 1
+fi
+
+FILELIST="$1/FILELIST.TXT"
+PACKAGE_FIELD="8"
+
+if [ -z "$2" ]; then
+ grep .tgz $FILELIST
+else
+  grep -e "$2" $FILELIST | grep tgz | awk "{ print \$$PACKAGE_FIELD }"
+fi