diff options
110 files changed, 19084 insertions, 0 deletions
diff --git a/tags/0.5/README b/tags/0.5/README new file mode 100644 index 0000000..d4d1463 --- /dev/null +++ b/tags/0.5/README @@ -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 index 0000000..6b5473e --- /dev/null +++ b/tags/0.5/conf/generic.mkSlackBuild.new @@ -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 index 0000000..1d77419 --- /dev/null +++ b/tags/0.5/conf/repos.conf.new @@ -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 index 0000000..50ea4ad --- /dev/null +++ b/tags/0.5/conf/simplepkg.conf.new @@ -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 index 0000000..1a98742 --- /dev/null +++ b/tags/0.5/doc/CHANGELOG @@ -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 index 0000000..d60c31a --- /dev/null +++ b/tags/0.5/doc/COPYING @@ -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. + +		    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.) + +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. + +  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. + +  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 + +	    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 index 0000000..47143ca --- /dev/null +++ b/tags/0.5/doc/README @@ -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 index 0000000..138125e --- /dev/null +++ b/tags/0.5/doc/README.pt_BR @@ -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 index 0000000..397d913 --- /dev/null +++ b/tags/0.5/doc/README.simplaret @@ -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 index 0000000..672eb8e --- /dev/null +++ b/tags/0.5/doc/README.simplaret.pt_BR @@ -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 index 0000000..9178f6e --- /dev/null +++ b/tags/0.5/doc/TODO @@ -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 index 0000000..9e620ae --- /dev/null +++ b/tags/0.5/doc/mkbuild.tex @@ -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 Binary files differnew file mode 100644 index 0000000..22cc869 --- /dev/null +++ b/tags/0.5/doc/simplepkg.pdf diff --git a/tags/0.5/doc/simplepkg.tex b/tags/0.5/doc/simplepkg.tex new file mode 100644 index 0000000..610ed08 --- /dev/null +++ b/tags/0.5/doc/simplepkg.tex @@ -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 index 0000000..a61648e --- /dev/null +++ b/tags/0.5/install/doinst.sh @@ -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 index 0000000..38ea489 --- /dev/null +++ b/tags/0.5/install/slack-desc @@ -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 index 0000000..8d2bb2f --- /dev/null +++ b/tags/0.5/lib/common.sh @@ -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 index 0000000..60ff082 --- /dev/null +++ b/tags/0.5/simplepkg.SlackBuild @@ -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 index 0000000..a80b033 --- /dev/null +++ b/tags/0.5/src/createpkg @@ -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 index 0000000..f40e5cd --- /dev/null +++ b/tags/0.5/src/jail-commit @@ -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 index 0000000..c5a008f --- /dev/null +++ b/tags/0.5/src/jail-update @@ -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 index 0000000..01900f2 --- /dev/null +++ b/tags/0.5/src/lspkg @@ -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 index 0000000..fce2533 --- /dev/null +++ b/tags/0.5/src/mkbuild @@ -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 index 0000000..f6c935c --- /dev/null +++ b/tags/0.5/src/mkjail @@ -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 index 0000000..6d3d10c --- /dev/null +++ b/tags/0.5/src/rebuildpkg @@ -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 index 0000000..e4a17ee --- /dev/null +++ b/tags/0.5/src/repos @@ -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 index 0000000..c8cc2f7 --- /dev/null +++ b/tags/0.5/src/simplaret @@ -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 index 0000000..4f2592f --- /dev/null +++ b/tags/0.5/src/templatepkg @@ -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 index 0000000..94e8a92 --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.csh @@ -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 index 0000000..c9cde20 --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.d/etc/profile.d/lang.sh @@ -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 index 0000000..7146afd --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.d/opt/OpenOffice.org @@ -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 index 0000000..e69de29 --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.perms 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 index 0000000..086c7a4 --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.s/post-install.sh @@ -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 index 0000000..ef3ae52 --- /dev/null +++ b/tags/0.5/templates/openoffice/openoffice.template @@ -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 index 0000000..e69de29 --- /dev/null +++ b/tags/0.5/templates/slackware/slackware.perms diff --git a/tags/0.5/templates/slackware/slackware.template b/tags/0.5/templates/slackware/slackware.template new file mode 100644 index 0000000..c3590c1 --- /dev/null +++ b/tags/0.5/templates/slackware/slackware.template @@ -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 index 0000000..7b7115d --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/httpd.conf @@ -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 index 0000000..e6cddef --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/php.ini @@ -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 = "&" + +; 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 index 0000000..e69de29 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/apache/vhosts 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 index 0000000..6e33147 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/hosts @@ -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 index 0000000..f31fbe2 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/logrotate.d/apache @@ -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 index 0000000..563594a --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/profile @@ -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 index 0000000..bfec90a --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.0 @@ -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 index 0000000..b972052 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.4 @@ -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 index 0000000..bfec90a --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.6 @@ -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 index 0000000..00a1501 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.K @@ -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 index 0000000..0cb3343 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.M @@ -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 index 0000000..05c75b4 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.S @@ -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 index 0000000..00b8837 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.httpd @@ -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 index 0000000..db56589 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inet2 @@ -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 index 0000000..9fe1419 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.inetd @@ -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 index 0000000..52bd2fe --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.ip_forward @@ -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 index 0000000..3cf2076 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.local @@ -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 index 0000000..239e2e6 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.mysqld @@ -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 index 0000000..bc32367 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.postfix @@ -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 index 0000000..1a31c52 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sendmail @@ -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 index 0000000..5f31c01 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.serial @@ -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 index 0000000..a3707e3 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sshd @@ -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 index 0000000..a005fb7 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.syslog @@ -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 index 0000000..916e59e --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rc.d/rc.sysvinit @@ -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 index 0000000..a74acc6 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/rssh.conf @@ -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 index 0000000..a161fec --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/etc/ssh/sshd_config @@ -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 index 0000000..b2eec17 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/htdocs/missing.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>404 - Not Found</title> +</head> +<body> +  <center> +  <pre> +  O endereço que você requisitou não pô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 index 0000000..b2eec17 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.d/var/www/missing.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>404 - Not Found</title> +</head> +<body> +  <center> +  <pre> +  O endereço que você requisitou não pô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 index 0000000..a323d6c --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.perms @@ -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 index 0000000..fd23e95 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/GPG-KEY @@ -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 Binary files differnew file mode 100644 index 0000000..992ba79 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/devices.tar.gz 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 index 0000000..73985d3 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/skel.conf @@ -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 index 0000000..4ce8a4b --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.s/vserver-legacy.sh @@ -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 index 0000000..b810e32 --- /dev/null +++ b/tags/0.5/templates/vserver-legacy/vserver-legacy.template @@ -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 index 0000000..7b7115d --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/apache/httpd.conf @@ -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 index 0000000..e6cddef --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/apache/php.ini @@ -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 = "&" + +; 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 index 0000000..e69de29 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/apache/vhosts 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 index 0000000..6e33147 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/hosts @@ -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 index 0000000..f31fbe2 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/logrotate.d/apache @@ -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 index 0000000..563594a --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/profile @@ -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 index 0000000..eefbcc5 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc @@ -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 index 0000000..bfec90a --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.0 @@ -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 index 0000000..b972052 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.4 @@ -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 index 0000000..bfec90a --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.6 @@ -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 index 0000000..00a1501 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.K @@ -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 index 0000000..0cb3343 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.M @@ -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 index 0000000..05c75b4 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.S @@ -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 index 0000000..00b8837 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.httpd @@ -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 index 0000000..db56589 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inet2 @@ -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 index 0000000..9fe1419 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.inetd @@ -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 index 0000000..52bd2fe --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.ip_forward @@ -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 index 0000000..3cf2076 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.local @@ -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 index 0000000..239e2e6 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.mysqld @@ -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 index 0000000..bc32367 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.postfix @@ -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 index 0000000..1a31c52 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sendmail @@ -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 index 0000000..5f31c01 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.serial @@ -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 index 0000000..a3707e3 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sshd @@ -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 index 0000000..a005fb7 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.syslog @@ -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 index 0000000..916e59e --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rc.d/rc.sysvinit @@ -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 index 0000000..a74acc6 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/rssh.conf @@ -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 index 0000000..a161fec --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/etc/ssh/sshd_config @@ -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 index 0000000..2762324 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/var/www/htdocs/missing.html @@ -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 index 0000000..b2eec17 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.d/var/www/missing.html @@ -0,0 +1,12 @@ +<html> +<head> +<title>404 - Not Found</title> +</head> +<body> +  <center> +  <pre> +  O endereço que você requisitou não pô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 index 0000000..0c136ed --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.perms @@ -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 index 0000000..fd23e95 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.s/GPG-KEY @@ -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 Binary files differnew file mode 100644 index 0000000..dc4aea6 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.s/devices.tar.gz 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 index 0000000..e9d68a9 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.s/vserver.sh @@ -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 index 0000000..0cd1f69 --- /dev/null +++ b/tags/0.5/templates/vserver/vserver.template @@ -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 index 0000000..0a261e2 --- /dev/null +++ b/tags/0.5/utils/add-gpl @@ -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 index 0000000..67804d0 --- /dev/null +++ b/tags/0.5/utils/add-slack-required @@ -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 index 0000000..de7e507 --- /dev/null +++ b/tags/0.5/utils/convert-template-scheme @@ -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 index 0000000..3df5f7a --- /dev/null +++ b/tags/0.5/utils/merge-template @@ -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 index 0000000..e3db602 --- /dev/null +++ b/tags/0.5/utils/metapkg @@ -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 index 0000000..cc5a827 --- /dev/null +++ b/tags/0.5/utils/searchpkg @@ -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  | 
