aboutsummaryrefslogtreecommitdiff
path: root/tags/0.5/doc/README
diff options
context:
space:
mode:
Diffstat (limited to 'tags/0.5/doc/README')
-rw-r--r--tags/0.5/doc/README428
1 files changed, 428 insertions, 0 deletions
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.
+