diff options
Diffstat (limited to 'source/d/slacktrack/slacktrack-project/docs')
13 files changed, 2229 insertions, 0 deletions
diff --git a/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack b/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack new file mode 100644 index 00000000..1d656d17 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/ChangeLog.slacktrack @@ -0,0 +1,705 @@ +############################################################################## +# Document: ChangeLog.slacktrack +# Purpose : Document the changes that have occurred in 'slacktrack' +############################################################################## + +07-Jun-2017 - v2.18 + * Added option --run-after-withlog + This option is the same as -R, --run-after, with the only difference + being that any output from that script is logged to the slacktrack build + log. + +25-Apr-2015 - v2.17 + * Cleaned up superfluous white space. + * Added operator -o, --no-fs-search + Prior to beginning a build, and post build, slacktrack uses the 'find' + command to scan the OS' file system, and stores these records. The + difference between the two records are used to determine the package's + contents. + + This default set is ideal for a default Slackware installation, but some + users have data in other directories which should never be included in a + package. Scanning these additional directories takes extra time and serves + no purpose. + + While the -x,--exclude operator is applied to the final package + contents list, -o, --no-fs-search is applied before and can be used to + significantly speed up the searches that build the before/after file lists. + + Thanks to Andrew Lyon for the patch. + +10-Jan-2014 - v2.16 + * Added the following paths to the default exclude list: + /usr/man/whatis + /usr/local/man/whatis + /var/lib/pgsql/ + /var/lib/mysql/ + Thanks to Eduard Rozenberg. + * Updated the 'OVERVIEW' doc to correct a couple of small details. + * Updated man pages to conform with stricter pod2man syntax. + * Updated FAQ to explain why after using one of the 'touch file system' + options, root is notified about having new mail. + +23-May-2013 - v2.15 + * Added the $PWD from which slacktrack was invoked in to the default exclude + list. This allows a package's source directory to be in a non-default + excluded path and receive updates (such as log files) and avoid slacktrack + including them in the newly created package file. + Thanks to Eduard Rozenberg. + +10-May-2013 - v2.14 + * Removed '-i, --install' flag from the man page and the slacktrack script, + as this has been a no-op since slacktrack stopped using 'installwatch'. + Thanks to Michael Stewart. + * Added /etc/ntp/drift to the default exclude list. + Thanks to Eduard Rozenberg. + +05-Apr-2013 - v2.13 + * Use '-c' operator to 'touch' when touching the file system. This avoids + creating empty files that were referenced from a dangling symlink, and + avoids creating empty files when using the (not recommended) 'faster' + file system touch option. + * Moved slacktrack's 'ln' wrapper from /usr/share/slacktrack to + /usr/libexec/slacktrack, since /usr/share is for architecture independent + files. + Thanks to Darren Austin for the suggestion. + * Added '/usr/libexec' to the default list of library locations that will + have their ELF objects stripped. + * Capture the output of touching the file system into the slacktrack log + file, as this can be useful for recording any issues resulting from touching + files on the file system (such as dangling symlinks in existing installed + packages). + * Support supplying the full path name using the -p operator. Previously, + to store the resulting .t?z package in a location other than the default + ('/tmp'), you had to supply -b <dir name> in addition to -p <package name> + This was a somewhat wooly distinction between package *name* and package + *file name*. + The package name can now be supplied using: + # slacktrack [options] -p /somedir/foo-1.01-arm-2.tgz + The -b operator is still effective, so previous 'trackbuild' scripts will + continue to work as before. + Thanks to Eduard Rozenberg for the suggestion. + +18-Sep-2012 - v2.12 + * Added /run to the list of default path exclusions. + +27-May-2012 - v2.11 + * Added /var/lib/NetworkManager to the list of default path exclusions. + Thanks to Patrick Volkerding for the suggestion. + +05-Nov-2011 - v2.10 + * Added --allow-overlapping option to permit the package to contain files + that overlap with existing packages installed on the system. + The default is to permit this behaviour, but if you're using the -Q option + as I do to build my packages, you'll find that there's no way to switch + the behaviour off whilst building an otherwise Slackware standards + compliant package. + To use this option you will need to supply it on the command line + after '-Q'. + * Fixed bug where --delete-overlapping was expecting an input. + * To the default path exclusion list, the following paths have been added: + /var/spool/cron/cron + /dev/bus/ + /dev/char/ + /dev/rfkill + +25-Sep-2011 - v2.09 + * Fixed formatting issues with the man pages exposed by a newer version + of "pod2man". Thanks to Branko Grubic for the report and the patches. + * The /var/log/{packages,scripts}/$PACKAGE entries of the unprocessed + package contents (just after slacktrack completes execution of the + supplied package build script) were incorrect due to slacktrack not + handling symlinks when creating these entries - any symlinks were treated + treated as files which caused "removepkg" to emit messages such as + ".. no longer exists" + slacktrack now uses "makepkg" and "installpkg" to correctly create and + handle the /var/log/{packages,scripts} entries. + Thanks to Roberto for the report and a good detailed explaination. + * Removed /usr/bin/altertrack symlink to /usr/bin/slacktrack. It's + been years since altertrack was a separate tool. If you have any + scripts still calling "altertrack" -- change them :-) + * When deleting perllocal.pod files, look in /usr/lib & /usr/lib64 + * Warn if any files in the newly built package overlap with other packages + that are already installed on the system. + * Added -X, --delete-overlapping option. + This option deletes any of the overlapping files from the new package. + The -Q option now includes the erasing of any overlapping files. + * Do not emit the name of the newly built package when displaying the + list of package dependencies. + +08-Nov-2010 - v2.08 + * Exclude /var/lib/dhcpcd from being included in the package contents. + +18-Dec-2009 - v2.07 + * Rewrote package_name() function to cater for "old style" package names. + Thanks to Jim Hawkins for the bit of sed script. + * Prevent /etc/dhcpc, /var/run and /etc/resolv.conf from appearing in + the package contents. This is especially useful when your build + machine is using dhcpcd to manage its network address. + +16-July-2009 - v2.06 + * Added /lib/udev/devices to the default path exclusion list. + Files in here are generated and maintained by udev and should not + be included in packages. + +02-June-2009 - v2.05 + * If after removing orphaned *.pyc files, their previous & parent + directories become empty, delete the directories. + +29-May-2009 - v2.04 + * Added -Y, --delete-orphaned-pyc option. + Within the package contents, if slacktrack finds *.pyc files without a + matching *.py file, the *.pyc files will be removed from the package + contents. + Thanks to Patrick Volkerding for the suggestion. + Updated slacktrack(8). + +15-May-2009 - v2.03 + slackdtxt: + * Updated to handle .tgz, .tbz, .tlz, .txz file extensions + Thanks to Patrick Volkerding. + * Renamed --nodeletetgz option in to --nodelete. + * Updated slackdtxt(8) + slacktrack: + * Added /usr/lib64 and /lib64 to the list of known library directories. + Thanks to Eric Hameleers for reminding me. + +12-May-2009 - v2.02 + + This is an interim release to allow slacktrack to work with the + additional package compression formats introduced in Slackware v13. + The documentation & the 'slackdtxt' utility will be updated at a + later date. + + * Renamed --md5sumtgz option to --md5sum because starting at + Slackware v13, the package format has been expanded to several + other compression types; updated slacktrack(8). + * No longer suffix ".tgz" to a package name if the ".tgz" extension + wasn't specified. This allows you to specify one of the new alternate + package file extensions: .tgz, .tbz, .tlz and .txz + * Added /usr/share/slacktrack/ln which is an ln wrapper. + This calls /bin/ln with the -f (force) option which allows the + time stamp to get updated on symlinks. + Thanks to Jim Hawkins for writing this wrapper. + +19-Nov-2008 - v2.01 + * Added /var/cache/ to the default exclude list. + This excludes SAMBA's 'browse.dat'. + Thanks to Eduard Rozenberg for the suggestion. + * Updated 'dvd_libs' example build scripts to use libdvdcss-1.2.10 + and verified the source URLs for the other components. + (You must still download the source yourself). + +17-Sep-2008 - v2.00 + * The 'slacktrack' tool is now what used to be shipped as 'altertrack'. + This tool tracks installations directly within a live root file system + rather than a pseudo root file system. + + ** Important: This means that you *MUST* now run slacktrack on a + devbox only ** + + Please read /usr/doc/slacktrack*/RELEASE_NOTES for + important details about migrating from the previous version of + slacktrack. + + + * Changed to BSD licence for 'slacktrack' and 'slackdtxt' tools. + The only reason it was previously GPL was because this was the licence + installwatch used. + * Updated documentation & man pages. + * A GPG signing key must be specified when using the -G,--gpg-sign option; + it will not fall back on the default. This is because the code + to parse the command line operators doesn't work. I checked + the supplied examples for getopt and even they don't work! + (Perhaps it used to work with older versions of bash?) + * Added -P, --delete-perllocalpod option. + This deletes any 'perllocal.pod' found within the package's /usr/lib. + perllocal.pod files should only be included with the Slackware 'perl' + package. + * The -Q (set options to build a Slackware compliant package) option now + sets the -P, --delete-perllocalpod options. + * Removed --froot operator. This used to run the 'fakeroot' daemon + and LD_PRELOAD the fakeroot library to make your user environment + appear as if were root, with the intention of allowing package utilities + to set ownerships of files/dirs -- an ability allowed only for root. + However, since slacktrack needs to be run as root to make a useful + package (it's unlikely you'd use slacktrack to track files in a + non-root location, eg /mypackages/), then this option is defunct. + * Removed --with-scratchbox. This deleted the /dev and /home + directories that used to find their way into early ARMedslack packages. + ARMedslack has not used scratchbox in years, and I can't imagine + anybody else ever used this option! + * Build script examples are now bundled with the package rather than + being on a separate web site (since there's no cholestrol + from installwatch) + * Added "/dev/input$|/dev/input/|/dev/.udev/|/dev/.udev$" to the default + exclude list because udev is now keeping some live data in there. + +08-Feb-2008 - v1.33 - build 1 [ Not released ] + * Replaced installwatch with 'libsentry' - a fork of installwatch + by Gilbert Ashley. + +29-Jun-2007 - v1.32 - build 1, Slackware 12.0 special version. + * Fixed a bug where if --stripallexec was used, it wasn't stripping + all ELFs (.so, bins & .a files). + * Replaced slacktrack script with a dummy for the release of + Slackware 12.0. The new *at-style functions that coreutils 6.7+ + are not tracked by installwatch, so chown, chmod et al do not work. + The real slacktrack script (if you wanted to use it) is named + /usr/bin/slacktrack-real + +05-May-2007 - v1.31 - build 2 + * Fixed a bug in altertrack's --touch-filesystem-first code. + See docs/ChangeLog.altertrack. + * Updated slacktrack(8): -Q option now states that files in binary + directories are chown root:root not root:bin. + Thanks to Eduard Rozenberg for noticing that. + +31-Mar-2007 - v1.31 - build 1 + * When gzipping man & info pages, force compression (gzip -f) + * Applied Fred Emmott's portable patch to installwatch to make it + work on 64bit machines. + +19-Feb-2007 - v1.30 - build 1 + * Move installwatch library from /usr/lib/installwatch.so + /usr/lib/installwatch-slacktrack.so + This prevents an installation conflict with checkinstall. + Thanks to Henrik Carlqvist for the suggestion. + +04-Apr-2006 - v1.29 - build 1 + * Added new option, -m|--chown-bins-root-root + This sets ownerships of files and directories in the standard Slackware + binary directories to 'root:root'. + This change is for Slackware v11 - binary directories are no longer + chown root:bin. + * The -Q option now sets -m rather than chowning root:bin. + If you want root:bin, specify the -f and -e options. The command would + look something like this: + + # slacktrack -Q -fe -p moose-1.0-i486-1.tgz ./moose.build + + * Added /media,/srv and /selinux to the 'watch' patch exclusion list + (any changes to these paths will be excluded from the package). + Updated slacktrack(1) with the new paths. + +14-Nov-2005 - v1.28 - build 1 + * Fixed a bug where any man page symlinks broken by gzipping were not + being repaired. + Thanks to Andrei Levin for the bug report. + +22-Sep-2005 - v1.27 build 1 + * Rewrote the slack-desc file to explain what slacktrack actually does + in simple words :-) + * Added /var/lib/rpm to list of excluded paths. This allows you to + do some seriously kludgey stuff like build from a source RPM and + install the binary RPM as part of the build script. + Very useful sometimes - docbook is an example :-) + * Fixed bug where if a temporary directory was manually specified with -T, + its contents were tracked by installwatch. Manually set temporary + directories are now in installwatch's exclude list. + Thanks to Gufo for reporting this. + * slacktrack will now return error code 6 and abort if it finds the + temporary directory (either chosen automatically or selected via the + -T|--tempdir option) already exists. This is to prevent slacktrack + from wiping user data without any warning. + slacktrack does not create a sub directory within the specified area; + it was never designed to do so, so this is the best option. + * Modified man page to reflect the above change, and added error code 6 + to the error code section. + Thanks to Gufo for suggesting this change. + +22-Jul-2005 - v1.26 build 1 + * Added /opt/kde/man to the list of man page directories. + +08-May-2005 - v1.25 build 1 + * Renamed internal string 'VERSION' to 'SLACKTRACKVERSION' as it's + too much of a generic name and can cause confusion as it's exported + to the build script/environment. + +21-Mar-2004 - v1.24 build 1 + * Added /sys to the list of excluded paths + * Fixed bug with chowning files that was introduced in v1.19. + Files with brackets in the name would get interpreted by bash. Now + these names are enclosed within '' to prevent this. + * Trimmed down --help text a little - it's too wordy. + * Added a patch to installwatch which was posted by Alexander Kern on the + checkinstall mailing list: + It adds simply "utimes" and "setxattr" to the list of + intercepted functions. + - Please note, however, that I am aware that there seems to be a problem + with installwatch on Slackware-10.1, although it does not show up when + building all software. I am looking to replace installwatch with + something specifically for slacktrack. + +09-Dec-2004 - v1.23 build 1 + * Upgraded to installwatch-0.7.0beta4 from checkinstall-1.6.0beta4 + * Fixed bug where you were informed that there were "orphaned" libraries + and dependencies upon installed packages, but the list was blank. + This was because the file contained spaces and therefore passed the + if [ -s ] check. + +16-Nov-2004 - v1.22 build 1 + * Fixed a bug where if --notidy was specified and slacktrack/altertrack + failed to track any changes, the temporary workspace would be deleted. + This became a bug when I introduced $SLACKTRACKSCRATCHDIR; if a build + fails then the developer will be interested in looking at the source + tree which should always be preserved by --notidy. + * /usr/local/bin, /usr/local/sbin and /usr/X11R? directories & files + contained within will now: + - be chown root:bin + - be stripped (with the same strip option as the major bin directories) + * man pages in /usr/X11R?/man will now be compressed. + * Updated slacktrack(8) to reflect the above two changes. + * Fixed a typo in --help and added a suggested usage line. + * If an incorrect parameter is specified then --help is directed to STDERR. + * If no parameters are specified (or there has been no package name + specified) then the usage message is directed to STDERR. + * Updated the TODO list. + * Updated the OVERVIEW document (last update was 09-Dec-2003) + - Added a couple of new architectures (official & unofficial ports) + and made a note about i586 binary packages + - A couple of other minor edits. + +26-Aug-2004 - v1.21 build 2 + * Tidied up slacktrack.SlackBuild + * Updates to altertrack + +19-Jun-2004 - v1.21 build 1 + * Only strip debugging symbols (strip -g) from object files in .a archives + because --strip-unneeded tends to render many object files unusable. + If you're sure you know what you're doing and want to use strip + options other than -g, then I suggest doing this inside your build + script or (if using altertrack) in your post build script. + Updated slacktrack(8) to reflect this. + * Use strip -p to preserve dates/time stamps. + * Fixed a typo in the package info display prior to building the package. + +31-May-2004 - v1.20 build 1 + * Changed chown uid.gid to uid:gid + +25-Mar-2004 - v1.19 build 1 + * With the recent version of the coreutils package in Slackware-current + (coreutils-5.2.1), chmod no longer preserves setuid bits. This means + that if you elect to chown root.bin the binaries, you lose setuid. + I have implemented a work-around which works with both the new and old + coreutils chown. + +03-Mar-2004 - v1.18 build 1 + * Strip archive files (.a) with --strip-unneeded, as using strip without + this option causes the contents of some archive files to be unusable. + Thanks to longname@sezampro for reporting it. + +12-Feb-2004 - v1.17 build 1 + * Added --froot option to start the fakeroot server prior to setting + ownerships and so on. This may be helpful if you are not root on + the machine where the packages are being prepared. However, if the + build script or 'make install' sets its own ownerships, these will + be lost because the fakeroot server is not started until *after* the + build script finishes. The reason for this is that fakeroot can make + some configure scripts fail. If you know that the configure script + you are using does *not* fail under fakeroot, I suggest that you still + use fakeroot ./trackbuild.xxx + -- Please note that due to the path to the fakeroot libraries, slacktrack + only works with fakeroot-0.8.3 and up + You can download the latest version of a fakeroot Slackware package + builder from http://www.slackware.com/~mozes -- + * Upgraded to installwatch-0.7.0beta3 from CheckInstall 1.6.0beta3 + +12-Dec-2003 - v1.16 build 1 + * Updated docs/OVERVIEW + * Updated docs/TODO + * Bumped up version number for release. + +10-Dec-2003 - v1.15 build 5 + * Tidied up slacktrack.SlackBuild + Most of the recent changes have been in altertrack (bug fixes) which + is why the version of slacktrack itself hasn't been updated. + The usr/doc/slacktrack-version directory is now + usr/doc/slacktrack-version_build + because (at present) the build number is important to this project + because it changes more than the major slacktrack version number. + * Mentioned installwatch segfaulting in the FAQ. + +01-Nov-2003 - v1.15(release) + * altertrack is now included within the binary .tgz package because + I'm satisfied that it is just as safe as protopkg, and it enables you + to build packages from .build scripts that do not work with + slacktrack/installwatch. + +29-Oct-2003 - v1.15rc1 + * If running under fakeroot then remove fakeroot from the list of + dependencies (it's included because it's LD_PRELOADed) + (suggested by Emanuele Vicentini). + Patch from Emanuele Vicentini: + * Redirect file descriptor 2 to 1 so that the slacktrack log file + contains anything sent to STDOUT. + +22-Oct-2003 - v1.15 + * Added --showdeps option to log to screen and a log file what + _installed_ Slackware packages your new package relies upon. + The purpose of this for interest only but I find it useful to ensure + I haven't just built a package on a box that Xfree86 installed + and I intend to install and use the package on a box that does not, + when the package has linked against X's libraries. + Using this option will also flag up 'orphaned' libraries (ones that + do not belong to an installed package, which is especially handy + if you're going to be distributing a package). + * Added another question to FAQ. + * Bomb out if /var/log/packages or /var/log/scripts is missing. + +20-Oct-2003 - v1.14 [beta only] + * When stripping shared objects (.so files), look for 'shared' rather + than 'shared objects' (in the output from 'file') as this was causing + some files not to be stripped (PHP is an example). + * Added --mpopts option to allow the inclusion of additional options + (e.g. --prepend) to Slackware's 'makepkg' program. + * Fixed bug where by the .txt description file wouldn't be created if + you had specified a seperate build store directory that didn't end + with a / + * No longer create the /install directory because if your build script + fails to create any files then you don't see the warning slacktrack + gives you. I could code around this but I think it's cleaner this way. + * Added /root to the list of directories that will not be included within + the package. This should help with using ccache when compiling as root. + You should still see docs/FAQ for help with non-root users. + It also helps with building CPAN modules. + * Updated the FAQ with information about using perl -MCPAN -eshell + (turn off logging and the CPAN interface console will work) + * Fixed bug where by gzipping info pages wouldn't gunzip .bz files first + * Forked slacktrack into another script named 'altertrack'. This works + in a similar fashion to Pat's 'bp' and David Cantrell's 'protopkg' in + that it compares the differences between the file system before and + after 'make install', rather than using installwatch. + This script is available only in the source distribution and is + totally unsupported (but it works for me). There is an example + build script contained within the source in the 'examples-altertrack' + directory. + * Moved fakeroot's build script (and source) out of slacktrack's source + and on to http://www.slackware.com/~mozes because it's + more useful there. + +01-Oct-2003 - v1.13 + * Warn if /install/slack-desc not found or 0 bytes + * The package's /install directory is now created by slacktrack + _before_ it executes your .build script. This saves you a line + in your .build script, plus it's required in order + to meet Slackware package standards (because 'slack-desc' lives + within /install). However, if you do not wish to have a /install + directory within your final package, you may delete it within + your .build script ( rm -rf ${SLACKTRACKFAKEROOT}/install ) + * Updated dependency checking code so that it can handle packages + that begin with the same name (e.g. 'glib' 'glib2'). + * Updated the fakeroot build scripts for version 0.7.8 + Patches from Emanuele Vicentini: + * Added -Q, --standard options that specifies all command line switches + required to create a .tgz file that complies with the Slackware standard. + * Added -G, --gpg-sign option that will sign the resulting .tgz + package file with the default user's GnuPG key and placed the + detached, armored signature (.asc file) in the package store + directory. + * Fixed the value of GZINFO (which should be "No" according to the + man page but was "Yes") + * Updated man pages, typos fixed and so on. + + The easiest way to build a package is now: + # slacktrack -Qp foo-1.13-i486-1.tgz ./foo.build + +11-Jul-2003 - v1.12 + * Added -D, --md5sumtgz option that will create an MD5sum of + the resulting .tgz package file. + * Fixed problem with checking the exit code from getopt + (reported by Emanuele Vicentini). + * Added a preemptive FAQ + * Merged Patrick's changes of slacktrack.SlackBuild into mine + slacktrack.SlackBuild now also creates its own slacktrack-*.txt file + +22-Jun-2003 - v1.11r2 + * I'd missed single quotes from a few find commands - fixed. + +02-Jun-2003 - v1.11 + * -S, --stripallexec will now strip .a (archive) files. + * -A, --striparchives option added. This option strips .a archives. + Suggested by Patrick Volkerding. + * slacktrack.SlackBuild no longer includes the large collection of + example scripts into the resulting package .tgz; they're now + maintained in a separate archive (slacktrack-examples-v??.tar.gz) + available from http://www.slackware.com/~mozes + +28-May-2003 - v1.10r2 + * If deleting 'usr/info/dir' then append this info to the log. + +22-May-2003 - v1.10 + * Before gzipping man or info pages we now find any bzip2 (.bz2) files + and unpack them. I have found that BitchX installs BitchX(1) as + a bzip2 file. There is no slacktrack option to turn this feature off + because if we gzip the bzip2'd man page, the man program won't + work with the file. + * Added -K, --delete-usrinfodir option. If this option is specified + then slacktrack will delete the file 'usr/info/dir' if it is + found in the package. + This file is a special file used by the 'info' program. To quote + texinfo's 'dir' file: + "This (the Directory node) gives a menu of major topics." + Many programs create their own 'info' file. However, using slacktrack + (or even a clean SlackBuild script), any such attempts to create + an up to date 'info' file result in the file only containing + information about the particular program (or set of programs) + you have just compiled. + Therefore you will usually want to delete this file from your + package so as to avoid overwriting the system version when you + install your new package. + The default is not to delete usr/info/dir. + * As an example, I typically invoke slacktrack as: + # slacktrack -gfenzKSUIp package-1.00-i386-1.tgz ./package.build + + +16-May-2003 - v1.09 + * Added exported variable: SLACKTRACKSCRATCHDIR + This variable points to a 'scratch' dir inside slacktrack's temporary + path. Should they wish to do so, the authors of the build scripts + can use this directory to save them 'managing' their own temporary + directories where they unpack the source archives and so on. + This directory is subject to the same conditions as the rest of the + slacktrack temporary path -- it will remain if --notidy is specified. + * Added paragraph in slacktrack(8) that talks about the exported environment + variables. + * Now use date +%s to create more randomly named temp directory for installwatch + This reduces the possibility of conflicting with another user who is + running slacktrack on the same system. + * Modified afio.build to demonstrate using ${SLACKTRACKSCRATCHDIR} + * Modified tf.build to use ${SLACKTRACKSCRATCHDIR} & to prevent it from + confirming the compile-time settings with the user. + * Tidy up of the build scripts in the docs dir. + * slacktrack(8) & slackdtxt(8) release dates now always in sync with + their respective scripts. + +07-May-2003 - v1.08r3 + * Updated a few docs + * Fixed a comment typo in the slacktrack script + * Tidy up of 'SlackBuild' script + * Other misc tidying. + +03-May-2003 - v1.08r2 + * If the command line/script provided exits with an error code we now + display the error code as well as a warning message. + * Moved slacktrack and slackdtxt to /usr/bin rather than being in + /usr/sbin. This is because we can use slacktrack with 'fakeroot' + from the Debian distribution. fakeroot fakes root privileges, thereby + allowing slacktrack to chown correctly. Therefore we can sensibly + use slacktrack as user other than root. + + To use slacktrack with fakeroot you could do this + # fakeroot ./trackbuild.fetchmail + + less through the resulting package .tgz to verify that the permissions + are what they ought to be. Obviously there will be some issues with + using fakeroot but it should be pretty useful for users without root + access. + I have packaged up fakeroot and you may download it at + http://www.slackware.com/~mozes + I have included by fakeroot build script within slacktrack's source + ball - slacktrack/misc/fakeroot/ + +28-Apr-2003 - v1.08 + * Added -N, --strip-prog to allow the user to specify the location + of the strip binary. This allows me to start cross compiling + stuff with slacktrack stripping the binaries. + * Renamed my wrapper scripts from 'SlackBuild' to 'trackbuild' to + avoid any confusion & updated docs to match. + * If specifying an alternate package store dir, now suffix the path + with a / + * Now reports size of .tgz if a .tgz is built + * No options are 'Advanced' - they are now just options + * Added -R, --run-after facility to make slacktrack execute a given + command prior to running makepkg. The purpose of this is to allow + the user to specify a program such as mc (Midnight Commander) to + inspect the package directory contents and possibly make changes + before slacktrack creates the .tgz + [] Note: The CWD is changed to the package's root directory before + the external command is executed. This allows you to specify + -Rmc and have Midnight Commander load and automatically + display the root dir of the package. + * -T wasn't accepting the specified path. Fixed. + * -g,--chmod644docs also now does chown -R root.root /usr/doc. I am finding + I need to do this in build scripts a lot so I figured since I'm already + chmod 644ing I may as well just chown them to root since they always + are in Slackware packages anyway ! + +16-Apr-2003 - v1.07 + * Added the facility to gzip info pages & updated slacktrack(8) to match. + -I, --gzinfo + -W, --extra-infodir <path> + -F, --gzinfo-no-symfix + * Switched @uksolutions email addresses in example build scripts with + @polplex.co.uk + * Added two build scripts for GNU VCD Imager into the docs/examples/non-slackware + directory. There are two scripts: + vcdimager.build -- this is for use with slacktrack + vcdimager.SlackBuild -- this is a 'clean' SlackBuild script + that installs the package into a clean + dir by doing make DESTDIR + The purpose of having these two scripts is for anybody who is + interested in building their own packages; it enables you to + compare and contrast the differences... or something :) + +01-Apr-2003 - v1.06 + * --extra-libdir, --extra-bindir, --extra-mandir added to allow + the user to specify additional directories that slacktrack should + consider when stripping binaries and gzipping man pages. + Note that any binary directories specified by --extra-bindir + will NOT be chown root.bin + Suggested by Darren Austin + * No longer chown root.bin in /usr/local/{sbin,bin}/ + as it's not the Slackware standard to chown root.bin in any dirs other + than /sbin, /bin, /usr/bin & /usr/sbin + +26-Mar-2003 - v1.05 + * Now considers usr/local for man page, binary and .so files after + Darren Austin gave a convincing argument as to why one may wish to + use /usr/local + +22-Mar-2003 - v1.04-build-2 + * Moved Change Log details into separate file - 'ChangeLog.slacktrack' + to save cluttering the slacktrack script. + * Added zlib build script to the list of Slackware example build scripts + This script downloaded the Slackware bits and also patches in the + security patch from OpenPKG. + * Added NVIDIA_GLX-1.0-4191 and tinyfuge example slacktrack build scripts + * Fixed a few typos and grammar problems in the docs + * Tidied up a few comments & code in the slacktrack script + - No new features added. + +10-Mar-2003 - v1.04 + * Added --stripallexec option to strip any unstripped ELF executable files + in the entire package directory. This means that slacktrack will find all + files in non-standard Slackware directories such as /opt. + * Added 'short' command flags for the advanced options. + +02-Mar-2003 - v1.03 + * Make sure we have specified a package name before proceeding + * Bomb out & tidy up if no files or dirs are found in /var/tmp/slacktrack/TRANSL/ + this saves makepkg building a package of the current directory & it also + indicates that installwatch failed to track any activity, thus has no files + to package. + * Fixed problem with the location of installwatch's log file. + * Lots of error checks + * Exit codes now have meaning; read slacktrack(8) man page. + * If build store dir doesn't exist then change it to /tmp rather than + creating it without warning. + +01-Mar-2003 - v1.02 + * Added --chmod644docs option + * Renamed SLACKTRACKPSEUDODIR to SLACKTRACKFAKEROOT because it makes more + sense. + +28-Feb-2003 - v1.01 + * Stopped dumping all output to /dev/null when gzipping man pages + as this doesn't always work + * Added code to fix broken symlinks caused by gzipping man pages + Added --gzman-no-symfix command line option to prevent this behaviour + * Added --chown-bdirs-root-bin & chown-bfiles-root-bin (-e,-f) options + to chown root.bin the system binaries installed into /usr/bin and so on + This behaviour is specified in Pat's 'slack-tools' README file. + +22-Jan-2002 - v1.00 + * Created diff --git a/source/d/slacktrack/slacktrack-project/docs/FAQ b/source/d/slacktrack/slacktrack-project/docs/FAQ new file mode 100644 index 00000000..98ea7d7c --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/FAQ @@ -0,0 +1,234 @@ +################################################################ +# Document: FAQ +# Purpose : Frequently asked questions +# Author..: Stuart Winter <mozes@slackware.com> +################################################################ +# It's small at the moment but if I get any repeated +# or potentially repeated questions then they'll be added +# here. +################################################################ + + +Questions +--------- + +1. My build script places files into /home, but these are not + included in the package created by slacktrack. Why? + +2. Do I really have to remove the existing package before + building a new version with slacktrack ? + +3. I want to build a package of DVD libraries and players + but the players depend on the libraries being installed + first. How can I build such a package with slacktrack? + +4. I find that when building packages with slacktrack, a number of + files are appearing in the package that do not belong there. Why? + +5. What does slacktrack's --touch-filesystem-first option do? + why would I need it? + +6. I can't compile Perl CPAN modules via perl -MCPAN -eshell + Why ? + +7. I'm using Slackware v13 (or greater) and I want to create + package files using one of the other compression methods. + How can I do that? + +8. After completing a build using slacktrack, I see + "You have mail in /var/mail/root" + but I have no new email. + +Answers +------- + +Q1. My build script places files into /home, but these are not + included in the package created by slacktrack. Why? + +A1. slacktrack (by design and thus default) excludes /home + from being included within the package. The reason for this + that typically no package shipped should ever contain + data within /home. + +Q2. Do I really have to remove the existing package before + building a new version with slacktrack ? + +A. No (see my zlib example), but in the majority of cases, + I'd advise that you do. + + The reason that my example trackbuild scripts remove the + existing package first (or bomb out) is because some + package installations (makefiles) will not install a + new file onto the filesystem if it's identical to the + one in the source archive. This means that slacktrack + will not notice any change in the before and after picture + of the filesystem; thus your resulting package may + be missing some files. + + The way to work around this is: + 1. removepkg the package prior to building; + 2. Use the --touch-filesystem-first option; + But this option is not recommended since it destroys the + time stamp information on your system. + This option should only be used by experts using a disposable + OS installation. + Please see FAQ question 5. + + It's worth noting that Slackware's 'removepkg' program + won't always remove all files (especially config files + which are packaged as /etc/file.new and are renamed to + /etc/file by install/doinst.sh). + + It shouldn't be too much of an issue though. If it's a + brand new piece of software that you are building from + scratch then installwatch will pick up all new files. + If you're rebuilding a Slackware package using a + .build script from the source tree then it's worth + browsing the package's contents ( # cat /var/log/packages/lftp-* + for example ), then running 'removepkg' and looking at its + output. If there are any remaining config files then either + move them to a safe place or delete them before + building your package with slacktrack. + + In general though you shouldn't have any problems. + + +Q3. I want to build a package of DVD libraries and players + but the players depend on the libraries being installed + first. How can I build such a package with slacktrack? + +A. There are two ways. + 1. You either write build scripts for each individual + library and create packages for each. Once the packages + have been built, you install them prior to building + the player. + You then unarchive all packages into a temporary + directory and run makepkg over it. + 2. Use slacktrack and build them all one after another as + you no doubt have originally attempted. + + I have included example build scripts for a DVD library + package within slacktrack's source archive. + + +Q4. I find that when building packages with slacktrack, a number of + files are appearing in the package that do not belong there. Why? + +A. The way that slacktrack works is that it: + [a] takes a snapshot of the files and directories on the file system; + [b] runs the build script + [c] makes another snapshot of the files & dirs on the file system; + [d] compares the two snapshots and determines the differences + [e] the differences between the two snapshots constitute the package + contents + + The problem with this approach is that other running programs can + make modifications to files & dirs on the file system during the + build/compilation process. slacktrack will consider these modifications + to be part of the package -- slacktrack does not directly track what the + build process does: it *only* compares the differences between the + file system snapshots. + + Major culprits for this are: + cups + crond (running cron jobs) + Window Managers and X + + When using slacktrack you are advised to reduce the number of + processes to the minimum, and try to ensure that there are no processes + running which will modify the file system during the build process. + + If you cannot do this then you there are a number of work arounds: + [a] Using the -x (--exclude) operator. + With this operator you can specify a list of + paths to exclude from the file system snapshots, thus excluding them + from the resulting package. + [b] Use the -R (--run-after) operator. + With this operator you can specify a command that will be run after + slacktrack has compiled the package contents. + You may wish to run 'mc' (Midnight Commander) or perhaps just a 'bash' + shell; this will enable you to inspect and modify the contents of the + package prior to it being turned into a package file. + +Q5. What does slacktrack's --touch-filesystem-first option do? + why would I need it? + + This option touches all files this pre-set location on the host's + filesystem: + /opt /bin /boot /dev /etc /install /lib /sbin /usr /var + + It *excludes* by default '/lib/udev/devices' since this contains + live device data that doesn't take kindly to being touched. + You may see errors from 'touch' about certain binaries, including + /sbin/vol_id because this is a symlink into /lib/udev/devices. + + This will touch every file within those directories, destoying all the + timestamp information. + This is intended to be used on a throwaway development installation + that's reinstalled daily or more often. Builds will often leave + residue strewn about, so don't use this on your "good" machine and + think you're managing it properly. :-) + + The reason behind this is that if you run slacktrack and your build + partially fails, then it will leave some data on the filesystem. + You then fix the problem and re-try: this time the build may succeed. + However, if the original data on the filesystem from the first + part-failed build has *not* changed (ie if it was some static data that + was copied with cp -a (preserved time stamp & ownership)) between + the first part-failed build and second successful build, slacktrack + will miss this data from the final package. + + This option updates the file stamps contained within standard package + directories, therefore allowing slacktrack to detect changes + (even if the data contains an *old* time stamp from 1982, it will still + detect the difference). + +***** This is an expert option: Please don't use this option unless you do + not care about your operating system installation ***** + + +Q6. I can't compile Perl CPAN modules via perl -MCPAN -eshell + Why ? + +A. If you get this message: + Unable to get Terminal Size. The TIOCGWINSZ ioctl didn't work. + The COLUMNS and LINES environment variables didn't work. + The resize program didn't work. + + the answer is to tell slacktrack to turn off logging. + eg: + # slacktrack -Qnp foo-1.0-i486-2.tgz ./foo.build + +Q7. I'm using Slackware v13 (or greater) and I want to create + package files using one of the other compression methods. + How can I do that? + +A. It is 'makepkg' from the 'pkgtools' package which handles + the compression, based upon the extension of the package + file name supplied to it. + + The compression methods & file names are: + + .tgz - Gzip + .tbz - Bzip2 + .tlz - LZMA + .txz - XZ + + + Examples: + + # slacktrack -Qp foo-1.0-i486-1.tgz ./foo.build + # slacktrack -Qp foo-1.0-i486-1.tbz ./foo.build + # slacktrack -Qp foo-1.0-i486-1.tlz ./foo.build + # slacktrack -Qp foo-1.0-i486-1.txz ./foo.build + + +Q8. After completing a build using slacktrack, I see + "You have mail in /var/mail/root" + but I have no new email. + +A. This is because you used the '--touch-filesystem-first' or + '--touch-filesystem-faster' option at build time. + This option has touched all of the files on the file system, which + refreshes their date stamp. The mail notification system works only on + the date stamp of the mail spools, hence it triggers the message. diff --git a/source/d/slacktrack/slacktrack-project/docs/INSTALL b/source/d/slacktrack/slacktrack-project/docs/INSTALL new file mode 100644 index 00000000..8b74c9f1 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/INSTALL @@ -0,0 +1,9 @@ + +In order to build slacktrack: + + # ./slacktrack.SlackBuild -i + +This will create a Slackware package of slacktrack +and install it. + +The resulting package will reside in /tmp. diff --git a/source/d/slacktrack/slacktrack-project/docs/OVERVIEW b/source/d/slacktrack/slacktrack-project/docs/OVERVIEW new file mode 100644 index 00000000..fb99b247 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/OVERVIEW @@ -0,0 +1,595 @@ +############################################################################## +# Document: OVERVIEW +# Purpose : Provide an overview of the Slackware package system incorporating +# the use of 'slacktrack' +# Please note that this is *not* a guide to the use of slacktrack; +# the man page and SlackBuild scripts in the 'examples' directory +# aim to fulfill that requirement. +# Date....: 15-May-2009 +# Author..: Stuart Winter <mozes@slackware.com> +# Homepage: http://www.slackware.com/~mozes +############################################################################## + + +CONTENTS: +--------- +1.0 Preamble +2.0 Slackware packages + 2.0.1 Format of official Slackware packages + 2.0.1.1 Package names + 2.0.1.2 Version numbers + 2.0.1.3 Architectures + 2.0.1.4 Build numbers + 2.1 An overview of the creation of official Slackware packages + 2.1.1 'Clean' and 'dirty' builds + 2.1.1.1 Clean builds + 2.1.1.2 Dirty builds + 2.1.1 SlackBuild and .build scripts + 2.1.1.2 SlackBuild scripts + 2.1.1.3 .build scripts + 2.2 slacktrack in the scheme of things + 2.2.1 Using slacktrack with official .build scripts + 2.2.2 Writing your own .build scripts for slacktrack + 2.2.2.1 Making use of slacktrack's environment variables +3.0 slacktrack in operation + 3.1 How slacktrack finds which files have been installed +4.0 Example scripts + 4.0.1 non-slackware example build scripts + 4.0.2 slackware example wrapper build scripts +5.0 Known problems/features of slacktrack +6.0 New features +7.0 Licence + + + +1.0 Preamble + --------- + +I used to work for a company that provided web hosting and shell accounts. +When I started there were a number of shell servers all running various +releases of RedHat Linux, in various states of repair. I managed to convince +the management to let me try Slackware on there instead because I have a much +stronger understanding of how to maintain and build server using the +Slackware distribution. This trial went well and within a few months all +servers were converted to Slackware version 8.1. + +In order to ease the speed of installation (and to prevent against +forgetting to install or configure something critical), I wrote a +set of post installation scripts that upgraded Slackware packages, +configured numerous config files and copied pre-compiled software +(such as courier IMAP) onto the new system. +For other software that I could not simply copy, I'd compile it on the +new server. + +However, it soon became clear that due to security updates and so on, +it became incredibly time consuming (not to mention seriously boring) +to compile PHP, Apache and so on on every server. + +At this point, I began to investigate how to create packages for Slackware. + + +2.0 Slackware packages + ------------------ + + The Slackware Linux distribution consists of a variety of 'packages' + that make up the distribution. + + Traditionally, all packages are in '.tgz' format (a gzipped tar archive). + Starting with Slackware v13, new compression formats are supported which + are represented by three additional file extensions: + + .tgz - Gzip + .tbz - Bzip2 + .tlz - LZMA + .txz - XZ + + In this document, we use the file extension '.t?z' to represent + one of the above file formats. + + Once you have initially installed Slackware from the installer screen, + you have the facilities to install, remove or upgrade new or existing + packages using the package management tools: + + installpkg <package.t?z> - install 'package.t?z' + + upgradepkg <package.t?z> - upgrade existing 'package' with the + new version specified at the command line. + + removepkg <package> - remove specified package + + + Whilst the Slackware package system is not especially feature rich, + Slackware's user base (including me) like it because it is simple. + If we want to write our own package utilities then we can easily do so + by examining the existing package tools and querying and amending the + package database (text files). + + 2.0.1 Format of official Slackware packages + ------------------------------------- + + In Slackware 8.1 and up, each package file is named as follows: + + packagename-version-architecture-buildnumber.t?z + + 2.0.1.1 Package names + ------------- + + The package name is either the name of the single program + or the name of a collection of utilities that fall under + a single umbrella. + For example: + autoconf-2.54-noarch-1.tgz + + That is the name of the autoconf package I have on my + Slackware 8.1 box. + 'autoconf' is the name of the the entire collection of + binaries and associated documents that are extracted from + the autoconf source distribution archive. + + However, if we consider another example: + tcpip-0.17-i386-15.tgz + + There is no single piece of software called 'tcpip'. + This package contains a number of associated utilities + written by different authors but bundled into one single + 'package'. + + 2.0.1.2 Version numbers + --------------- + + If the package is the name of a particular piece of software + such as 'autoconf' from the example above, then the version + number represents the version number that its authors distribute. + + If the package is a 'bundle' such as 'tcpip' then the version + number increases as and when you add a new piece of software to + the package, or upgrade a particular piece of major software + contained within the package. + For example, with 'tcpip' above, the 0.17 refers to the version of + Linux Netkit. However, there are other programs included within + the Slackware tcpip package that are not part of 'Linux netkit'. + + 2.0.1.3 Architectures + ------------- + + The architecture is just that -- it tells you which architecture + the package is for. + + The current values in use are: + + ----- [ Official Slackware architecures ] + + noarch - Architecture independent files such as config files + i386 - packages for the x86 (Slackware v8.1 & 9) + i486 - packages for the x86 (Slackware 9.1+) + i586 - packages for the x86 + i686 - packages for the x86 + s390 - packages for the IBM s/390 mainframe + arm - packages for the ARM architecture + + Note: Whilst Slackware v10 is primarily built for i486, you may + find that there are some packages whose architecture versions + are higher than i486. This is for two reasons: + + [a] There is no source for the package - it is a repackaged + binary distribution (SUN's j2sdk is an example). + + [b] The package is not required or otherwise not suitable for + earlier revisions of the architecture (this is especially + the true with ARM and SPARC). + + ----- [ Unofficial ports of Slackware ] + + sparc - packages for the SUN Sparc architecture + powerpc - packages for the PowerPC architecture + + 2.0.1.4 Build numbers + ------------- + + A build number suplements the version number and is changed + when the *package maintainer* makes a change to the package but + the original source code and version number remains the same. + + For example, I build a package of 'foo' version 0.14 for the + sparc. I have never built this package before, thus it becomes + foo-0.14-sparc-1.tgz + However, I realise that I haven't configured + the 'bar' parameter correctly in /etc/foo.conf. I fix it + and re-build the package. The package is now named + foo-0.14-sparc-2.tgz + + + 2.1 An overview of the creation of official Slackware packages + ----------------------------------------------------------- + + This section gives a brief introduction of the two methods of + used when building the official Slackware packages. + + + 2.1.1 'Clean' and 'dirty' builds + -------------------------- + + I am assuming the reader has some experience with Makefiles + and has compiled and installed a number of software packages. + + 2.1.1.1 Clean builds + ------------ + + I term a 'clean' package one where you can specify a variable + to the 'make install' which contains the directory you wish to install + the package in, rather than installing it properly over the root file system. + For example: + # ./configure --prefix=/usr --sysconfdir=/etc + # make + # make install DESTDIR=/tmp/package-foo + + With a 'Makefile' that honours the DESTDIR variable, this will + install the whole package into /tmp/package-foo. This directory + effectively is the 'root' directory '/' as far as the Makefile + is concerned. + + From here you can use the Slackware 'makepkg' program and build + a package. + + This is by far the safest and most preferred method by all + users that make packages. + + You will find that DESTDIR is called prefix, TOPDIR and other names; + you need to examine the Makefile scripts in order to determine whether + it contains this functionality and if it does, then discover what + the variable name is. + + 2.1.1.2 Dirty builds + ------------ + + A 'dirty' build is the name I give to source distribution archives + whose Makefile scripts do not have any provisioning to install + in an alternate directory other than root. + + For these type of builds, you will typically do: + # ./configure --prefix=/usr --sysconfdir=/etc + # make + # make install + + The package will then be installed on the root filesystem. + + So how do you know what files were installed where and + even if you did, how do you pull all these files together in order + to run makepkg over them ? + That's the purpose of slacktrack! :-) + + + 2.1.1 SlackBuild and .build scripts + ----------------------------- + + Slackware has a number of packages by a great number of authors. + Some of the packages's source Makefiles honour a DESTDIR type + variable but others do not. + + 2.1.1.2 SlackBuild scripts + ------------------ + + SlackBuild scripts can be 'interesting'. They are + scripts that install into a 'clean' environment (usually /tmp). + + Some of the scripts follow the make install DESTDIR= + style, if the Makefile permits. + + Others have a 'framework' or 'controller tarball' which is + a _packagename.t?z (note the prefixing underscore). + + The SlackBuild script uses the Slackware 'explodepkg' script + to untar the contents of the _.t?z into the /tmp-package<name> + directory. + Slackbuild then runs 'make' to compile the binaries + and libraries, but then uses the 'cat' program such as: + # cat foobar > /tmp/package-foobar/usr/bin/foobar + + By using 'cat', the *new* version of 'foobar' retains + the original permissions and ownerships that are in the + controller tar ball. + + However, you may be wondering how, if the package does not + have a facility to install into somewhere other than root, + do we get the file names and permissions for the + controller _.t?z in the first place. + The answer is simple: + [a] find all files on the file system and dump to a file. + [b] compile and install the software + [c] find all files on the file system and compare the file + produced by the first 'find'. After a little pruning, you + have the list of files for the controller tar ball. + + + 2.1.1.3 .build scripts + --------------- + + For those software distributions whose Makefile does not hounour + the DESTDIR type system, there are Slackware's .build scripts. + + These scripts literally ./configure ; make ; make install + and copy docs and other goodies into the root file system. + + One of the problems with these scripts is that they are + often incomplete -- they build and install the package but + do not gzip the man pages or strip the binaries and libraries; + this is done manually afterwards. + + *These* are the scripts that slacktrack and altertrack were + written for. + + * Note: Whilst some software's Makefiles may appear to honour + the DESTDIR variable, the Makefile *may* be broken which can + result in files missing or corrupt within your new package. + For example: I built Apache v2.0.48 and built a package using + make install DESTDIR. However, a problem exists in that some of + the Perl scripts it installs have *temporary build paths* + hard coded into the resulting scripts. + This is why you *may* find a .build instead of a SlackBuild + script within Slackware's source tree. + + However, the primary reason is because the build script just + hasn't been updated to make use of DESTDIR. * + + + 2.2 slacktrack in the scheme of things + ---------------------------------- + + I follow Slackware-current quite closly. Often I want to + 'back port' a -current package to an earlier release of Slackware . + I can't simply upgrade with -current's package because it was + compiled for a newer GLIBC than Slackware 8.1's, for example. + For packages that use a 'clean' 'SlackBuild' script, this is + an easy job -- I simply run 'SlackBuild' on an 8.1 box. + + However, for .build scripts, I needed a way of building packages + using Slackware's .build scripts. + + I found a great program called 'CheckInstall' which fulfilled most of my + requirements. However, as time went on and I started building + more of Slackware's packages and writing my own build scripts, I found + that checkinstall was lacking some features that I required. + At this time I was also considering porting Slackware to run on + the ARM architecture and helping with the Splack (Slackware on SPARC project), + and therefore wanted a robust program that can deal with every .build script + I threw at it, and if it can't handle it, I needed to be able to make modifications. + The easiest way of doing this was to write my own script; thus + 'slacktrack' was born. + + slacktrack is based on the *idea* behind 'CheckInstall', but uses + only my own code (and contributions from other users), and only contains + Slackware-specific facilities -- it can not build Debian or RedHat packages + and never will. + + slacktrack does not have all of the facilities of CheckInstall either, + but then these are not required for building Slackware packages + from .build scripts. + + Also, slacktrack only works with 'official' Slackware directory locations + and /usr/local. + For example, if your make install installs binaries in /opt/packagename/bin + and the man pages in anywhere other than /usr/man or /usr/local/man, then + slacktrack's relevant options (eg stripping libs, bins, gzman) will + not detect them. + + + 2.2.1 Using slacktrack with official .build scripts + --------------------------------------------- + + Building a replicar Slackware package from a .build script is + typically fairly trivial with slacktrack. + + If we wanted to build slackware-9.1's elvis, we could do + # cd slackware/slackware-9.1/source/a/elvis + # chmod 755 elvis.build + # slacktrack -jefkzp "elvis-2.1-i386-2.tgz" ./elvis.build + + The resulting package (by default) be stored in + /tmp/built-slackwarepackages/ + + As already mentioned, some of the Slackware .build scripts + are incomplete with regard to gzipping man pages, stripping binaries + and so on -- fetchmail.build is one of them. + Therefore you can specify various options to slacktrack that + will take care of this for you. + The options in the example above : + j - compress libraries + e - chown root:bin /bin,/sbin,/usr/bin,/usr/sbin directories + f - chown root:bin files in the binary dirs listed above + k - strip binaries found in the binary dirs listed above + z - gzip man pages + p - the resulting Slackware package .t?z name + + The way I re-create the packages is to build a 'trackbuild' script that + launches slacktrack with the required options and the name + of the Slackware .build script. You can find examples of such + scripts within the docs directory after installing slacktrack: + + /usr/doc/slacktrack*/buildscript-examples/ + + You will also find that in Slackware versions 12.0 and upwards, + the .build scripts are accompanied by 'trackbuild' scripts because + slacktrack is used by the Slackware team to produce the packages. + + 2.2.2 Writing your own .build scripts for slacktrack + ---------------------------------------------- + + There isn't any specific that you have to do to write a build + script for use with slacktrack -- the script name specified to + slacktrack doesn't even have to be a script - it can be a binary - + as long as it is executable, it is acceptable. + + You can see some of my own build scripts that I have written + for use with slacktrack by looking in the documents directory + after installing slacktrack: + + /usr/doc/slacktrack*/buildscript-examples/ + + 2.2.2.1 Making use of slacktrack's environment variables + ------------------------------------------------- + + slacktrack exports two environment variables: + SLACKTRACKFAKEROOT and SLACKTRACKSCRATCHDIR + + SLACKTRACKFAKEROOT: + ```````````````````` + + The purpose of this to allow your .build script to access the + 'root' directory of the resulting package. + There are two scenarios where you may want to use this + variable: + + 1. During the build: + + The reason you may wish to do this is to pre-populate + the package with files that you may not wish to place directly + onto the root filesystem. + The package contents will only appear inside this directory + once your build script has finished, and slacktrack has determined + what to put into this directory. + + In previous slacktrack versions which used a pseudo-root filesystem + (where the package contents were populated *during* the build), this + made sense, but in slacktrack v2.00, it is unlikely that you'd want + to use this vairable from the build script. + + 2. Post-build -- cleanups after the build: + + The most likely use of this script is to perform package cleanup + tasks after the build. This is mainly to perform tasks that slacktrack + does not handle itself - such as deleting known files/directories that + creep into packages (due to a system daemon such as CUPS), or setting + some file and directory permissions. + + An example post build script is below. + A post build script can be specified by slacktrack's -R option: + + # Incase you had CUPS running: + rm -rf etc/cups etc/printcap + # crond: + rm -rf var/spool/cron + rmdir var/spool + + # perllocal.pod files don't belong in packages. + # SGMLSPL creates this: + find . -name perllocal.pod -print0 | xargs -0 rm -f + + # Some doc dirs have attracted setuid. + # We don't need setuid for anything in this package: + chmod -R a-s . + + + SLACKTRACKSCRATCHDIR: + ````````````````````` + + The purpose of this variable is to provide some temporary + space to untar your source archives and so on. slacktrack + will manage the creation and deletion of this directory. + + For example: + # cd ${SLACKTRACKSCRATCHDIR} + # tar zxvvf ${ORIGPATH}/source/foobar.tar.gz + + You can see in some of the example 'non-slackware' scripts + how I have used these variables + + +3.0 slacktrack in operation + ----------------------- + + The basic event flow is as follows: + + [1] Parse command line arguments + -> Check they are OK, if not bomb out + [2] Launch the supplied build script + [3] Run any specified functions (eg gzman, strip bins, chowns) over the + package 'root' directory and contents + [4] Run Slackware's 'makepkg' program over the package contents + [5] Move the .t?z to the specified build store path + [6] Scan for any hard links that may be in the package + -> If any found, alert the user on screen and also + log to a packagename.hardlinks.log file in the build store path + + The slacktrack shell script is fairly simple and well commented; it should be + relatively easy for anybody who understands bash to quickly comprehend what + is happening and why. + + 3.1 How slacktrack finds which files have been installed + ---------------------------------------------------- + + In order to track the files and directories that have been installed + or changed, slacktrack follows this ordered process: + + [1] Scans a pre-set list of directories on the filesystem and + logs the contents. + [2] Launches build script which installs the package onto the + filesystem + [3] Scans the filesystem once again + [4] Compares the differences in the before and after snapshots + [5] Copies the differences into a 'package root directory' and + runs makepkg over them. + + In slacktrack version 1, we used 'installwatch' which overloaded + some of glibc's filesystem calls, creating new files and directories + into a pseudo-root filesystem, avoiding the need to install onto + the host's filesystem (and also allowing to build as a non-root user). + However, this library is ill maintained and even in the early days + when it worked well, it still had problems and workarounds were required. + +4.0 Example scripts + --------------- + + Included with the slacktrack binary distribution are a number of example + scripts that hopefully should provide you with a basis of how to use slacktrack + to build from 'dirty' source distributions. + + The examples are bundled in the documentation directory available + after installing slacktrack: + + /usr/doc/slacktrack*/buildscript-examples/ + + +5.0 Known problems/features of slacktrack + ------------------------------------- + + Current problems: + + [1] slacktrack doesn't have sufficient error checking. + + I'm in two minds about *where* to put error checking, you see. + Do I go no further if the supplied build script exits with a non-zero + value? + No, that's a bad idea because what if you didn't write the build script? + it might be one of these qmail type binary installer programs that + you can't (easily without hacking the source) fix. The author may + have their own systems, and the program exits with a value that their + own controller script recognises as non-failure. + + What should I do if makepkg has failed? You see it on screen + and in the logs anyway, plus makepkg is one of the last things + that slacktrack calls -- how can you recover? + + That said, version 1.03 now has some error handling. There's still + not enough though, imo. + + [2] No support for a default config file + + I don't see the point. Each .build script is different + and although I typically use the same options to slacktrack + for most of my build scripts, I don't see why I'd need a + config file just to save 4 bytes or so in a trackbuild wrapper :-) + + +6.0 New features + ------------- + + See the TODO file in the docs directory. + + If you have any specific features you would like to see + included, or have found any bugs, please + email me <mozes@slackware.com> + +7.0 Licence + ------- + + slacktrack is distributed under BSD Licence. diff --git a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST new file mode 100644 index 00000000..12817beb --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_CHECKLIST @@ -0,0 +1,244 @@ +########################################################################## +# Document: PACKAGE_BUILDING_CHECKLIST +# Purpose : Check list for creation of Slackware packages +# via .build scripts +# Author..: Stuart Winter <mozes@slackware.com> +# Date....: 04-Apr-2006 +# Version : 1.01 +########################################################################## +# This document belongs to my 'slacktrack' program +# http://www.slackware.com/~mozes +########################################################################## +# Changelog +########### +# v1.01 - 04-Apr-2006 +# * Added note about Slackware version 11 using root:root ownerships +# for binary directories. +# v1.00 - 01-Mar-2003 +# * Created +########################################################################### +Building the package via slacktrack +----------------------------------- + +Let's assuming you're rebuilding the 'fetchmail' utilities package +from Slackware-current. + + # cd slackware/slackware-current/source/n + # slacktrack -jefkzcnp "fetchmail-6.2.0-sparc-2.tgz" "/bin/sh fetchmail.build" + + +If you wanted to make slacktrack save the package into a different directory +you would use the -b option, eg + # slacktrack -b "/data/sparc-packages/n/" \ + -Qnp "fetchmail-6.2.0-sparc-2.tgz" "/bin/sh fetchmail.build" + +slacktrack now moves the package and its .txt description file into my +Sparc port's 'n' series package directory. + +Your package compiles successfully and is now stored in +/tmp/built-slackwarepackages/ +as fetchmail-6.2.0-sparc-2.tgz + +Testing the package +------------------- + +We must now manually check the integrity of the resulting package. + +The easiest way of examining the package is to run it through less. + # less fetchmail-6.2.0-sparc-2.tgz + +[a] The 'install/slack-desc' file + ----------------------------- + + This is a text file in the standard 'slack-desc' format. + It gives a brief description of the package and any relevant + information. + + For examples you should look in the source directory + of any slackware package. + +[b] The 'install/doinst.sh' file + ---------------------------- + + Unless you know what you are doing, your installation scripts should + only refer to relative path names. + For example: + + if [ ! -f etc/foo.conf ]; then + mv -f etc/foo.conf.new etc/foo.conf + fi + + This is because the user can specify a different root directory + when installing the package. If your script uses absolute path names + (path names begin with a /) then this script will not work as expected because + installpkg only changes into the specified root directory and runs the script; + it does not perform a chroot or anything similar. + +[c] Check permissions + ----------------- + + Ensure that there are no globally writeable files and directories + that should not be there. + PHP 4.3.0 is an all time classic example of why you should check + your packages; it had globally writeable files in /usr/lib/php ! + + You can feed slacktrack the --chmod-og-w option to help you + deal with globally writeable files. However, it's best if you + do it yourself from your script, and using this option is no + excuse to not check ! + +[d] Check file & directory ownerships + ----------------------------------- + + Unless specifically required, the files and directories should + be owned by 'root' in the group 'root'. + You may find that some source distributions install their files + with different UIDs because they've simply copied them from the + source ball -- so the files end up being owned by 'bob.users' + or similar. + + However, also see the next check regarding binaries. + +[e] Check binary file & binary directory ownerships + ----------------------------------------------- + + Prior to Slackware version 11, the standard was to have binaries + installed in + /bin,/sbin,/usr/bin,/usr/sbin + as owned by root:bin + + The directories (above) themselves should also have these ownerships. + + You can feed slacktrack the following options to help here: + -e, --chown-bdirs-root-bin + This runs chown root.bin over the binary directories listed above + -f, -chown-bfiles-root-bin + This runs chown root.bin over the FILES inside the binary directories + listed above. + + Again, you should check the package incase there has been a problem. + + The -e and -f options are provided because *Slackware*'s .build scripts + do not do chown them for you -- it is done manually by Pat. + + With Slackware version 11, those binary directories are owned by root:root. + For slacktrack you can use the -m operator to have this set for you. + +[f] Ensure man pages are gzipped & any broken symlinks are fixed + ------------------------------------------------------------ + + Slackware's packages all (or at least should) have gzipped man pages. + The man pages reside in numbered directories ('sections') within + /usr/man + eg man pages in section 1 reside in /usr/man/man1 + + man pages that are *not* gzipped will not have a .gz extension. + For example, the mkdir man page that is not gzipped would be: + /usr/man/man1/mkdir.1 + The gzipped version is + /usr/man/man1/mkdir.1.gz + + Some binaries behave differently when called with different names, or + have different names for historical purposes. + Such an example are packages from the 'floppy' Slackware package. + /usr/bin/xdfformat is a symlink to /usr/bin/xdfcopy + The man page is no different: + xdfformat.1 -> xdfcopy.1 + By default, the Slackware 'floppy.build' script does not gzip man pages. + It's easy to gzip man pages - slacktrack does this + find usr/man -type f -print0 | xargs -0 gzip -9 + However, if you do an ls -l on the man1 directory, you will see + that we have broken the xdffformat.1 symlink to xdfcopy.1 + because xdfcopy.1 is now named xdfcopy.1.gz + The way to fix this would be to + # rm -f xdffformat.1 ; ln -s xdfcopy.1 xdfformat.1 + + The easiest way to ensure your man pages are gzipped and all symlinks + are restored is to feed slacktrack the -z or --gzman option + slacktrack will take care of your symlinks for you. + + Again, there is no excuse not to check manually ! + +[g] strip binaries and shared objects + --------------------------------- + + In order to reduce the size of the binary once installed and package, + Slackware strips the libraries and binaries. + + For example, if we wanted to strip the grep program we would do + # strip --strip-unneeded /bin/grep + + Stripping binaries from .build scripts called via slacktrack + is fairly easy. There are two ways of doing it: + [1] Let slacktrack take care of it + -j or --striplib will cause slacktrack to strip + any executable .so files it finds in /lib and /usr/lib + + -k or --stripbin will cause slacktrack to strip + any executable binaries it finds in /bin,/sbin,/usr/bin,/usr/sbin + + [2] Do it yourself in the your build script - this is the preferred way. + slacktrack exports an environment variable named + SLACKTRACKFAKEROOT + This enables you to do something like this + # find ${SLACKTRACKFAKEROOT}/usr/lib -type f -name *.so -print0 | xargs -0 strip + Using the environement variable prevents you from having to know + all of the library & binary file names, as you will only find + files that your build script has created in the fake root directory. + + * Note: You may find that some binaries or libraries break when they + are stripped. This is because they require symbols that strip + removes. This is why it's best to do your own binary and + library stripping and individually strip the required files rather + than letting slacktrack do it for you * + +[h] Check zero length files + ----------------------- + + slacktrack uses Slackware's makepkg program which should identify any + zero length files for you. However, it's worth checking *why* any files + are of zero length -- you will find that some of them are meant to be; + the etc-*-noarch-*.tgz package's /etc/mtab file is an example of this. + + There should be no occasion for a binary or .so to be of zero bytes. + + If you're unsure of any zero length files, check out the next point. + +[i] Compare your package with the official package + ----------------------------------------------- + + If you are rebuilding/porting a Slackware package from -8.1 or -current + (or any other version for that matter), then one of the easiest ways + to give you some confidence that your package is official-looking is to + simply examine the official package. + + This will allow you to see whether the file & dir permissions are the + same as your own package, verify any zero length files and so on. + + Please note that if you DO find any zero length files or anything + that you can easily PROVE is broken then *DO* submit a report + to Slackware so that it can be fixed. + + If you're porting Slackware packages to a different architecture then + obviously don't be overly concerned about file size differences -- although + it's worth making sure you've stripped your binaries. You may actually + find that some of the Slackware official packages aren't stripped. + +[j] Ensure your package root directory is chmod 755 + ----------------------------------------------- + + prisere [packages] # tar ztvvf foo.tgz + drwx------ root/root 0 2003-03-01 18:46:17 ./ + + If you see this, your package IS BROKEN. + + Installing this package will render your system seriously + broken because it will chmod 700 the root directory ! + + By default slacktrack will chmod 755 the root directory, but + as with everything else, you should check ! + + + +That's about it. If you can think of any other checks then please +email <mozes@slackware.com> diff --git a/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS new file mode 100644 index 00000000..801b8aa0 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/PACKAGE_BUILDING_URLS @@ -0,0 +1,38 @@ +These are a few URLs that provide information about +how to build packages for Slackware Linux: + + Slackware Linux Essentials book + ------------------------------- + + http://www.slackware.com/book/index.php?source=x4132.html + + + Linux packages + -------------- + + This web site has a great number of pre-built packages for + Slackware. + + It also has a HOWTO about building packages: + + http://www.linuxpackages.net/howto/howto.php?page=package + + + Slackbuilds.org + ------------------ + + This site has a huge repository of build scripts for Slackware. + They are all 'SlackBuild' type -- eg the 'clean' builds + (the preferred method -- i.e. these do not need slacktrack) + + http://www.slackbuilds.org + + + Slackware's official build scripts + ---------------------------------- + + I also recommend that you look at the official Slackware build + scripts that can be found on the FTP site in the 'source' + directory of the distribution + (e.g. slackware/slackware-9.1/source) + diff --git a/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES b/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES new file mode 100644 index 00000000..02876d89 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/RELEASE_NOTES @@ -0,0 +1,137 @@ +slacktrack version 2.00 +Release notes: 17th September 2008 +=================================== + +Highlights: +----------- + +slacktrack no longer uses 'installwatch' to track the installation +process -- what was previously called 'altertrack' has been turned +into 'slacktrack'. + +slacktrack's method of tracking package installations is to +have the package installed directly onto the host's filesystem. + +This is for a number of reasons: + + 1. installwatch is ill maintained and was failing to work correctly + with new versions of glibc and GNU 'coreutils'. + + 2. installwatch could not track statically compiled binaries, + meaning that if a statically compiled binary was used to + manipulate the filesystem in any way, these manipulations would + not be reflected in your package contents. + + 3. With virtualisation -- QEMU, VMWare, SUN's VirtualBox -- being so + readily available, and allowing filesystem 'snapshots', it's + easier and easier to spin up a development operating system and + build and install directly onto the root filesystem, thus getting + a complete package. + +Upgrading your build scripts from slacktrack version 1.x +-------------------------------------------------------- + +1. slacktrack internal variables + ----------------------------- + + $SLACKTRACKFAKEROOT + + This variable points to the location of the package's + root filesystem (usually /var/tmp/<someplace>). + Using slacktrack 1.x, you could perform operations on the + package contents from your build script *during* the build + process. + + In slacktrack 2.x, the package root directory is only populated + after the build script has finished. + + However, the variable can still be used from a post-build + script. + You can use slacktrack's '-R' operator to specify a post-build + script. In the example below, the post build script is + called 'postbuildfixes.sh' and resides in the same directory + as the 'trackbuild' script. + + ** Note: Ensure that your post-build script is chmod 755. ** + +# Launch the build script: +altertrack \ + --notidy \ + --showdeps \ + -T $TMP \ + -l $CWD/build.$ARCH.log \ + -R $CWD/postbuildfixes.sh \ + -b $PKGSTORE \ + -zIKASmg \ + -Ocp $PKGNAM-$PKGVERSION-$ARCH-$BUILD.tgz ./linuxdoc-tools.build + + The contents of this post build script can be something such as: + +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- +#!/bin/bash + +# Once altertrack has determined what the contents of the package +# should be, it copies them into $SLACKTRACKFAKEROOT +# From here we can make modifications to the package's contents +# immediately prior to the invocation of makepkg: altertrack will +# do nothing else with the contents of the package after the execution +# of this script. + +# If you modify anything here, be careful *not* to include the full +# path name - only use relative paths (ie rm usr/bin/foo *not* rm /usr/bin/foo). + +# Enter the package's contents: +cd $SLACKTRACKFAKEROOT + +# OpenSP creates this symlink; we delete it. +if [ -L usr/share/doc ]; then + rm -f usr/share/doc +fi + +# Incase you had CUPS running: +rm -rf etc/cups etc/printcap +# crond: +rm -rf var/spool/cron +rmdir var/spool + +# perllocal.pod files don't belong in packages. +# SGMLSPL creates this: +find . -name perllocal.pod -print0 | xargs -0 rm -f + +# Some doc dirs have attracted setuid. +# We don't need setuid for anything in this package: +chmod -R a-s . +-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + + +2. Build script changes + -------------------- + + If your build scripts were more sophisticated and took advantage of + the way installwatch used a pseudo root filesystem, please be acutely + aware that your build script now runs on the host's live operating system; + so you need to be more careful. However, as suggested -- run only on development + installations. + +3. Additional files creeping into the packages + ------------------------------------------- + + Due to some daemons making changes to their config files whilst your build + is in flight, you may find some additional files have crept into your package + which you were not expecting. + + You may wish to turn off the following daemons before starting a build: + CUPS + crond + sendmail + ypbind (NIS) + ypserv (NIS) + + If you look at the example post build script above, you can see that it + removes some CUPS and crond residue. + Whilst it would be possible to remove these paths from slacktrack's scan + locations, some users may wish their package to place data in those directories; + so you need to make your own adjustments and checks for this. + + +END. diff --git a/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples b/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples new file mode 100644 index 00000000..9a57620a --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/SLACKDTXT.examples @@ -0,0 +1,103 @@ +########################################################################## +# Document: SLACKDTXT.examples +# Purpose : Provide examples of how one may use slackdtxt +# Author..: Stuart Winter <mozes@slackware.com> +# Version : 1.00 +# Date....: 02-Mar-2003 +########################################################################### + +1.0 Building ProFTPD from Slackware's source directory + -------------------------------------------------- + +In this example, I have my slackware-current source tree +stored in the directory ' /data2 ' + +I want to compile ProFTPD using Slackware's SlackBuild script, but I want +to move the package from /tmp (where SlackBuild stores it) +into my Slackware binary directory + /data2/slackware-current/slackware/n/ +and I also want to create a .txt description file in the same binary directory. + + 1. Enter the slackware-current source directory + -------------------------------------------- + + meths [proftpd] # pwd + /data2/slackware-current/source/n/proftpd + meths [proftpd] # ls + _proftpd.tar.gz etc proftpd-1.2.7.tar.bz2 proftpd-1.2.7.tar.bz2.asc proftpd.SlackBuild slack-desc + + + 2. Compile ProFTPd using the supplied SlackBuild script. + ----------------------------------------------------- + + meths [proftpd] # ./proftpd.SlackBuild + + [ .. snip lots of text as the package is compiled and built .. ] + + Our proftpd package is built in /tmp as this is where SlackBuild stores it. + + meths [proftpd] # ls -l /tmp/proftpd-1.2.7-i386-1.tgz + -rw-r--r-- 1 root root 503169 Mar 3 00:43 /tmp/proftpd-1.2.7-i386-1.tgz + meths [proftpd] # + + + 3. Create the .txt file and move the package into the binary distribution directory + --------------------------------------------------------------------------------- + meths [proftpd] # slackdtxt -d /data2/slackware-current/slackware/n/ /tmp/proftpd-1.2.7-i386-1.tgz + slackdtxt: Copying package to destination directory ....done + slackdtxt: Verifying the version of the package in the destination directory ....done + slackdtxt: Attempting to extract install/slack-desc from the package ....done + slackdtxt: proftpd-1.2.7-i386-1.txt created + slackdtxt: Deleting the original package ....done + meths [proftpd] # + + In this instance I have extracted the slack-desc file from the /tmp/proftpd-1.2.7-i386-1.tgz + package. Because I was in the source directory, I could have used the local slack-desc + file and saved the overhead of having to untar. In order to do this I could have done: + + # slackdtxt -d /data2/slackware-current/slackware/n/ -s slack-desc /tmp/proftpd-1.2.7-i386-1.tgz + + +Example 2: Creating .txt files from a bunch of packages + -------------------------------------------- + +In this example, I have built a number of packages already. They are +stored in my binary distribution directory (/data2/slackware-current/slackware) +but the packages do not have corresponding .txt files. + +I will use slackdtxt to create .txt files in the same directory as the package files. + + + 1. Enter the slackware-current binary distribution directory + ========================================================== + + meths [n] # pwd + /data2/slackware-current/slackware/n + + These are the packages I have built previously. + + meths [n] # ls + htdig-3.1.6-i386-2.tgz mod_ssl-2.8.12_1.3.27-i386-1.tgz mutt-1.4i-i386-1.tgz wget-1.8.2-i386-2.tgz + meths [n] # + + 2. Create .txt files for all corresponding package files + ===================================================== + + meths [n] # slackdtxt *.tgz + slackdtxt: Attempting to extract install/slack-desc from the package ....done + slackdtxt: htdig-3.1.6-i386-2.txt created + slackdtxt: Attempting to extract install/slack-desc from the package ....done + slackdtxt: mod_ssl-2.8.12_1.3.27-i386-1.txt created + slackdtxt: Attempting to extract install/slack-desc from the package ....done + slackdtxt: mutt-1.4i-i386-1.txt created + slackdtxt: Attempting to extract install/slack-desc from the package ....done + slackdtxt: wget-1.8.2-i386-2.txt created + + meths [n] # ls + htdig-3.1.6-i386-2.tgz mod_ssl-2.8.12_1.3.27-i386-1.tgz mutt-1.4i-i386-1.tgz wget-1.8.2-i386-2.tgz + htdig-3.1.6-i386-2.txt mod_ssl-2.8.12_1.3.27-i386-1.txt mutt-1.4i-i386-1.txt wget-1.8.2-i386-2.txt + meths [n] # + + All .txt files are now created. + + diff --git a/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples b/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples new file mode 100644 index 00000000..924f932f --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/SLACKTRACK.examples @@ -0,0 +1,34 @@ + +If you are looking for example scripts to help you use +slacktrack please look in the documentation directory: + + /usr/doc/slacktrack*/buildscript-examples/ + +Quick example: +-------------- + +I will build the elvis editor that you can find in Slackware's +'a' series. This is looking at an older version of the Slackware +source tree (v 9.1) -- the build script has since been replaced +by a 'SlackBuild', but this example still serves as a good example +reference: + +bourbon [root] # cd slackware-9.1/source/a +bourbon [elvis] # slacktrack -gfenzKSUIp elvis-2.41-i486-1.tgz ./elvis.build +bourbon [elvis] # tar ztvvf /tmp/elvis-2.41-i486-1.tgz | head -n9 +drwxr-xr-x root/root 0 2003-07-11 09:26:05 ./ +drwxr-xr-x root/root 0 2003-07-11 09:26:04 usr/ +drwxr-xr-x root/bin 0 2003-07-11 09:26:05 usr/bin/ +-rwxr-xr-x root/bin 301280 2003-07-11 09:26:05 usr/bin/elvis +-rwxr-xr-x root/bin 19956 2003-07-11 09:26:05 usr/bin/ref +-rwxr-xr-x root/bin 15160 2003-07-11 09:26:05 usr/bin/elvtags +-rwxr-xr-x root/bin 936180 2002-06-08 00:15:29 usr/bin/vim +drwxr-xr-x root/root 0 2003-07-11 09:26:01 usr/share/ +drwxr-xr-x root/root 0 2003-07-11 09:26:04 usr/share/elvis-2.1_4/ +bourbon [elvis] # + +As you can see, we now have an elvis package with the +correct ownerships set on the binary files and so on and +so forth. + +Stuart. diff --git a/source/d/slacktrack/slacktrack-project/docs/TODO b/source/d/slacktrack/slacktrack-project/docs/TODO new file mode 100644 index 00000000..28c22b04 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/TODO @@ -0,0 +1,65 @@ +To do list +---------- + +Likely to be done: +================== + +This list represents changes that I am likely to implement myself: + +Thinking about it: +================== + +1. Modify slacktrack to do a couple of scans of the filesystem prior to + launching the build script. + It'd compare the scans and add any differences to an exclude list -- since + any such differences were not generated by the build script, thus should not + be in the package. + The purpose of this is to reduce the possibility of non package material making + its way into the final .tgz. + *However*, there's nothing to say that some arbitary cron job won't launch and + modify the filesystem anyway -- so this sort of feature would only lead to + confusion in the long run. + +2. Allow addition of exclude/additional scan dirs without having to replace + the existing list. + Suggested by: Eduard Rozenberg + +3. Compare contents of new package and warn about any overlapping files. + This is harder to do that it sounds because the user may not be removing + the previous package (although it's suggested that you do) because it's + an integral system library or binary and they simply want to upgrade + it and produce a package. This would always talk about overlap. + We could get the 'base package name' of the supplied package + and then remove it from any found ovelap results, but it seems + a bit slow. + +Unlikely to be done: +==================== + +This list represents future additions that (for one reason or another) I am +unlikely to implement. However, feel free to submit a patch (but ask me first - +I don't like receiving unsolicited attachments!). + +2. Add an option to rename/move .conf files to conf.new + Suggested by Geoffrey Sanders, based on an option protopkg supports. + + [..] + > altertrack to (during it's file scan of new files for the package) to + > move any newly created .conf (or any other type of config files) to a + > *.new extension. Don't know how much work this would be...but thought + > that it might be nice to add for those of us who may forget to 'backup' + > any config's that may get stepped on. + [..] + + I must admit that I'm not overly keen on this idea - it sounds too much + like checkinstall -- add a feature that mainly works but breaks when you + least expect it. + + Just moving the .conf to .conf.new is okay in theory but it may: + a) catch people out who rely on the feature but where the config + file isn't called '*.conf' + + b) if it updates the doinst.sh script, the shell script which changes + the file name may need to be before or after the symlink creation + code (if there is any). + diff --git a/source/d/slacktrack/slacktrack-project/docs/USAGE b/source/d/slacktrack/slacktrack-project/docs/USAGE new file mode 100644 index 00000000..46ec1f1c --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/USAGE @@ -0,0 +1,8 @@ + +slacktrack and slackdtxt have full section 8 man pages. Please do + + # man slacktrack + # man slackdtxt + + +Stuart Winter <mozes@slackware.com> diff --git a/source/d/slacktrack/slacktrack-project/docs/WARNINGS b/source/d/slacktrack/slacktrack-project/docs/WARNINGS new file mode 100644 index 00000000..0ba7e31c --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/WARNINGS @@ -0,0 +1,38 @@ +1. Do not Use on production servers + --------------------------------- + + Do NOT run slacktrack on production servers. + + It should only be run on a development box. + + This is because slacktrack version 2.0 and upwards install onto + the filesystem of the server, rather than into a pseudo root. + +2. Slackware versions + ------------------ + + slacktrack has been tested on: + - Slackware 12.0, 12.1, 12.2, 13.0 + - ARMedslack, all versions. + + It may works on previous releases of Slackware, it may not. + +3. slacktrack default working space + -------------------------------- + + By default, slacktrack puts its work space in + /var/tmp/<randomnumber>slacktrack + + It is essential that you have enough disk space on the + partition on which /var/tmp resides - particularly if you use + ${SLACKTRACKSCRATCHDIR} + + If you do not have enough space in /var/tmp then you can + pass --tempdir to slacktrack to change the base temporary directory. + + eg you may do + # slacktrack --tempdir /tmp/slacktrack -Qp "foobar-4.1-sparc-2.tgz" "/bin/sh foobar.build" + + +Stuart Winter <mozes@slackware.com> + diff --git a/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README b/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README new file mode 100644 index 00000000..5182cc99 --- /dev/null +++ b/source/d/slacktrack/slacktrack-project/docs/buildscript-examples/README @@ -0,0 +1,19 @@ +This directory contains example scripts on which you may +base your own build scripts. + +Note that the packages and versions are not current, but their +purpose is to serve as examples. + +Slackware's packaging standard is that documents in /usr/doc are +chmod 644, so these examples are archived to retain the execute +permissions on the build scripts. + +Please extract the archive to /tmp to begin: +Example: + +mkdir -pm /tmp/slacktrack +tar xf examples.tar.bz2 -C /tmp/slacktrack + +-- +Stuart Winter <mozes@slackware.com> +17th Sept 2008 |