TRACEPKG(8)

NAME
tracepkg - slackware utility for package administration.

SYNOPSIS
tracepkg [--sync | --resync | -V] | [[--remove | --remove-root | --install | --install-new | --reinstall | --build | -s | -d | -m | -v] packagename] | [--upgrade [oldpackagename%]packagename]

DISCLAIMER OF WARRANTIES
    This program is free software; you can redistribute it and/or
    modify it under the terms of GNU GENERAL PUBLIC LICENSE Version 2,
    June 1991 as published by the Free Software Foundation.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the
    Free Software Foundation, Inc.,
    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

DESCRIPTION
tracepkg is a script collection made to help Slackware administrators with the management of tgzs. It scans tgzs stored in the /var/log/packages directory and finds all their binary dependencies using ldd. tracepkg searches dependencies into the other installed tgzs. If a dependency is found, the related tgz is stored inside the /var/log/dependencies directory, instead, if the dependency is not found, the missing file is stored inside the /var/log/missing directory. Of course tracepkg doesn't substitute the administrator, as in the slackware philosophy (or in a sort of). tracepkg is NOT another tool for dependency resolution, it's just a tool that helps the administrator: it collects informations ad gathers them for the man who stands in front of the console, reducing the stress of tgz management. Basically tracepkg is made to help you removing a tgz and all its not shared dependencies. Nonetheless tracepkg acts as a wrapper for all major pkgtools operations, (as other tools like slackpkg by Piter Punk). tracepkg doesn't think for you: you must think, tracepkg will do the dirty job.

SETTINGS AND FIRST LAUNCH
tracepkg requires few settings. If you are not running a standard Slackware, that is you are running one of the many ports to 64 bit x86 arch or to powerPC arch, you must open your favourite text editor and edit the file /etc/tracepkg/tracepkg.conf. Inside the file there are the following options (you must edit them for your system):

BIT=32
    this is the number of bits of your architecture (32 for slackware, 64 for slamd64 etc...the default value is 32)

ENC=LSB
    this is the ELF format encription (LSB for x86 arch both 32 and 64 bits, MSB for powerPC. the default value is LSB)

Moreover if you dislike the predefined attended execution mode (see the EXECUTION MODE section for more details), you can modify the following option:

AUTO=0
    this flag defines if tracepkg should automatically answer to every question (0 means no automatic answer, 1 means automatic answer)

After you have edited these options you must run the command:

tracepkg --sync

So tracepkg will be syncronized with your /var/log/packages directory. it takes some seconds, depending of your CPU.

Please note that, if an upgrade is done from a previous tracepkg version, the installation script will leave your config file untouched, placing a new config file in the same directory and naming it tracepkg.conf.new. It is on the administrator to check the new file. For more informations please have a look to the /var/log/scripts/tracepkg* file automatically generated by pkgtools after the upgrade.

OPTIONS
Long options perform write/install/upgrade/remove operations and require root privileges to run.

--sync
    (re)build the whole database. Every previous data will be removed.

--resync
    resyncronize the whole database after any external operation. External means any operation performed by means of other management tools (e.g. slapt-get).

--build
    (re)build the dependency list for the specified tgz. Every previous data will be removed. A packagename is mandatory.

--remove
    scan the database retriving the list of dependencies for the given packagename and ask user for remotion. A packagename is mandatory.

--remove-root
    retrive all end-user tgz's dependant on a lib and remove them. The packagename of the lib is mandatory.

--install
    install the given package and retrive the list of dependencies. The packagename is mandatory.

--upgrade
    upgrade the given package and retrive the list of dependencies. The packagename is mandatory. the format '[oldpackagename%]packagename.tgz' is described in man upgradepkg(8).

--install-new
    upgrade the given package if an older version is installed into the system, otherwise install the given package. After all retrive the list of dependencies. A packagename is mandatory.

--reinstall
    reinstall the given package if _THE SAME_ version is installed into the system. No one operation is performed on dependencies. A packagename is mandatory.

Short options perform read operations and don't require root privileges to run.

-s  scan the database retriving the complete list of tgz dependant on the given packagename. A packagename is mandatory.

-d  scan the database retriving the list of installed dependencies for the given packagename. A packagename is mandatory.

-m  scan the database retriving the list of missing dependencies for the given packagename. A packagename is mandatory.

-v  print to stdout a *VERY* verbose list of direct dependencies of the give package. A package name is mandatory.

-V  print to stdout the current version and exit.

EXECUTION MODE
tracepkg can run in both attended and unattended mode. the AUTO option let the user select the preferred mode. if AUTO is set to 0 (which is the default) the tool always requires user to answer some questions related to the task. Basically tracepkg will ask the user about what to do with some given tgzs. when the tool asks a question it also provides the set of possible answers in the form: [yes,no,all] or [yes,no].

- if no is selected the performed task is aborted.

- if all is selected (when available) all tasks in the execution queue are automatically executed.

- if yes is selected tracepkg will prompt for confirmation at the start of any task in the execution queue.

if the AUTO option is set to 1 tracepkg will select yes/all for every answer but the ones related to shared dependencies. this means that it will automatically remove a tgz with all its unshared dependencies and it will upgrade every tgz regardless of the fact that this tgz can be in use by some other tgzs (this can cause conflicts if you are used to costumize your distro)

Moreover it is possible to override the selected behaviour on the fly, via the UNATTENDED flag, as described by the following commands:

#> UNATTENDED=1 tracepkg options [args]
    tracepkg will override the AUTO option running in unattended mode

#> UNATTENDED=0 tracepkg options [args]
    tracepkg will override the AUTO option running in attended mode

this means that you can use the AUTO option to define your common needs and the UNATTENDED flag to modify them when required by some special cases.

EXAMPLES

tracepkg --sync

UNATTENDED=1 tracepkg --remove /var/log/packages/name-version-arch-build

tracepkg --install /path/to/name-version-arch-build.tgz

tracepkg --install-new /path/to/name-version-arch-build.tgz

tracepkg --upgrade /var/log/packages/name-version-arch-build%/path/to/name-version-arch-build.tgz

tracepkg --build name

tracepkg -s name

tracepkg -d /var/log/packages/name-version-arch-build

tracepkg -V

instead of 'name', 'name-version-arch-build.tgz', '/var/log/packages/name-version-arch-build' you can use special characters as *? and regular expressions

Examples:

tracepkg --remove mozilla-*

tracepkg --install /path/to/{hydrogen*,flac*}

BUGS
If you find a bug, please report it to me and it will be fixed! For a list of (safe) known issues look at /usr/doc/tracepkg-x.x.x/knownissues. an online copy of known issues as an uptodated list of bugs is hosted by: www.slacky.eu/~absinthe.

AUTHOR
tracepkg is by Matteo Nunziati <matteo.nunziati@unifi.it>.

CREDITS
Slackware(r) is a registered trademark of Slackware Linux, Inc. Linux is a Registered Trademark of Linus Torvalds. The man page is based on the requirebuild man page by Stefano Stabellini <stefano@stabellini.net>. A bit of inspiration comes from slackpkg utility by Piter Punk. A lot of thanx to all people at www.slacky.it and #slackware on syrol.net. Special tahnx go to:

-Loris Vincenzi (slacky.it webmaster, tracepkg.Slackbuild main author and supervisor - I just add bugs ;)

-Gioco (early bug report for powerPC arch)

-Andrew Kroll (for feedback and suggestions)

-Submax (I've learned something new about man pages helping you with yours ;)

-Danimoth (chatmate :)

-Krisi(s) (what can I say about this guy? He rocks!)