Introduction
Compat32pkg is an automated tool for managing packages to format compat32 for Slackware-64 with AlienBob's multilib.
Its main purpose is to provide all the necessary for managing (converting,installing,upgrading, removing) of 32-bit part of the multilib. However, it can also be used for other packages which are part of Slackware-32 like firefox, seamonkey, jre.
Compat32pkg provides the following features:
- Downloads, from a Slackware-32 mirror, of packages and converts them to format compat32.
- Downloads, from a Slackware-32 mirror, of packages, converts them to format compat32, and installs the resulting packages.
- Checks available updates, on a slackware-32 mirror, for a given subset of packages to format compat32.
- Enumerates available updates, on a slackware-32 mirror, for a given subset of packages to format compat32.
- Downloads, from a slacwkare-32 mirror, of available updates for a given subset of packages to format compat32, and converts them to format compat32.
- Downloads, from a slacwkare-32 mirror, of available updates for a given subset of packages to format compat32, converts them to format compat32, and performs the upgrade.
- Looks for packages, on a slackware-32 mirror, and prints informations about found packages.
- Removes, in whole or part of installed compat32 packages.
Requirements
Compat32pkg requires :
- To be installed on a 64-bit version of Slackware. Even if there's currently no multilib for Slackware S/390, support for this port has been integrated into compat32pkg, and this should work, I hope, flawlessly when time comes ...
- User to be root.
- convertpkg-compat32 from AlienBob's compat32-tools package. This package can be found here, and its management (i.e: install, update, remove) can be automated using multilibpkg.
Installation
The best way to do that is to grab the Slackware package here and install it like any other slackware package:
$ installpkg /tmp/compat32pkg-1.4.110408-noarch-3_SeB.tgz
Verifying package Verifying package compat32pkg-1.4.110408-noarch-3_SeB.tgz.
Installing package Installing package compat32pkg-1.4.110408-noarch-3_SeB.tgz:
PACKAGE DESCRIPTION::
# Compat32pkg is an automated tool for managing packages to format
# compat32 for slackware-64 with AlienBob's multilib. Its main purpose
# is to provide all the necessary for managing (converting,installing,
# upgrading, removing) of 32-bit part of the multilib. However, it can
# also be used for other packages which are part of slackware/32 like
# firefox, seamonkey, jre.
#
# Homepage: http://sourceforge.net/projects/compat32pkg/
# http://compat32pkg.sourceforge.net/
#
Executing install script for compat32pkg-1.4.110408-noarch-3_SeB.tgz.
Package compat32pkg-1.4.110408-noarch-3_SeB.tgz installed.
Once compat32pkg is installed, user should :
- check for new configuration files (ie *.new) into /etc/compat32pkg. This is not needed when compat32pkg is installed for the first time.
-
check available updates for the configuration file for
the layer-32 (ie /etc/compat32pkg/multilib-32bit-packages.lst),
and, update this file as needed. For this, user has to use
compat32pkg as below :
$ compat32pkg --layer-32-config check-update $ compat32pkg --layer-32-config update
Look at Checking updates, and upgrade, of the configuration file for the "layer-32" for more precision about --layer-32-config.
Configuration files
The Configuration script: /etc/compat32pkg/compat32pkg.conf
This script contains the following variables that users could overwrite when needed.
WORKDIR
This is required and must refer to the working directory used by compat32pkg to store its working data.
By default, WORKDIR is set to /var/lib/compat32pkg. As data stored into this directory are not, currently, re-used, it can be cleaned at any time, except, obviously, while running of compat32pkg.
SLACK32PKG_CACHE
This is required and must refer to the directory used to store packages downloaded from Slackware-32 mirrors.
By default, SLACK32PKG_CACHE is set to /var/cache/compat32pkg/slackware-32. To avoid waste of disk space, this directory will have to be cleaned periodically. This could be automated by executing compat32pkg in mode --clear-cache with slackware-32 as argument:
$ compat32pkg --clear-cache slackware-32
COMPAT32PKG_CACHE
This is required and must refer to the directory used to store packages converted to format compat32.
By default COMPAT32PKG_CACHE is set to /var/cache/compat32pkg/compat-32. To avoid waste of disk space, this directory will have to be cleaned periodically. This could be automated by executing compat32pkg in mode --clear-cache compat-32 as argument:
$ compat32pkg --clear-cache compat-32
DEFAULT_MIRROR
This is optional. When defined, it must refer to the Slackware-32 mirror that will be used by compat32pkg when user does not provide one on the command line. By default, DEFAULT_MIRROR is set to "". When defined, its value can be :
-
A local directory containing a valid Slackware-32 tree. In this case, the directory
could contains only part of official Slackware-32 tree (without directories like /testing,
/slackware/k,...) and the file CHECKSUMS.md5 at his root :
DEFAULT_MIRROR=~/mirrors/slackware-13.0
- The URL of a Slackware-32 mirror:
DEFAULT_MIRROR=ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware-13.0
- The key (or alias), introduced by an "at symbol", of one of the mirrors
given into the configuration file /etc/compat32pkg/mirrors:
DEFAULT_MIRROR=@WorldWide-13.0 DEFAULT_MIRROR=@DVD
PKGS_PRECEDENCE_ORDER
This is required. This must be an array containing the packages precedence order, from the most important to the least important, given by patterns of kind baseref.
The order given in this array allows to :
- force installation of given packages in a given order. This is the case of the package aaa_elflibs which has to be installed before all others packages. Indeed, as this package has to be processed first when installing Slackware, it also has to be processed first in the case of the multilib. Otherwise, this might lead to downgrading some libraries as this is clearly explained here.
- give the priority to the more recent/stable packages when running compat32pkg in mode: --convert, --install, --check-updates, --list-updates, --convert-updates, and --upgrade. This is the case with packages from patches/packages which are always more recent that those in slackware.
By default, PKGS_PRECEDENCE_ORDER is defined as below :
PKGS_PRECEDENCE_ORDER=(
"slackware/a/aaa_elflibs" \
"patches/packages/.*" \
"slackware/.*" \
"extra/.*" \
"testing/.*" \
"pasture/.*" \
)
PREVENT_INCOMPATIBILITIES
This is required. It allows to enable or disable the mechanism to preventing accidental incompatibilities. By default, this mechanism is enabled.
PREVENT_INCOMPATIBILITIES can be set to $TRUE (enable the mechanism), or, to $FALSE (disable the mechanism).
TRUSTED_EXTERN_CMDS
This is required. It defines the external commands trusted by compat32pkg. Each of these commands could be executed by any trigger whose task is of kind "exec:CMD".
By default, TRUSTED_EXTERNS_CMDS is defined as below :
TRUSTED_EXTERNS_CMD=( "installpkg" "upgradepkg" "c32pkg-notify-send" )
To add a command named FOO into this list, simply put it after the last as in example below :
TRUSTED_EXTERNS_CMD=( "installpkg" "upgradepkg" "c32pkg-notify-send" "FOO" )
When this variable is undefined or set to an empty value ( i.e: ="" or =() ):
-
Any attempt to add a trigger with a task "exec:CMD" using the command
compat32pkg --trigger add ...
will fail. - At execution of compat32pkg, any triggers to process with a task "exec:CMD" will be aborted, and compat32pkg prints a warning.
For more details about the triggers, read the section The triggers
PACKAGES_PROCESSING
This is required. It defines how compat32pkg will process the packages (or updates) to download and convert, or to download, convert and install. This can be set to one of the modes described below, auto being the default :
Mode | Description |
---|---|
auto |
compat32pkg will automatically select the right mode between legacy and concurrent according to the number of package to process and the number of cpu/cores. The legacy mode is selected when there's less than 3 packages to process, or less than 2 cpu/core, otherwise, the concurrent mode is selected. |
legacy | Inherited from past versions. The download, the conversion, and the installation of packages are performed by a single process. This means that compat32pkg starts to process the next package only when the current package has been fully processed. |
concurrent | In this mode, The download, the conversion, and the installation are separate processes. This means that a package may be in download, while another (already downloaded) is in conversion, and yet another (already downloaded and converted) is in install. |
PROGRESSBAR_COLORS
Defines the colors of the progress bar drawn when compat32pkg handles the packages concurrently.
The colors of the progress bar can be changed using the ANSI escape code
"CSI n [;k] m
" (http://en.wikipedia.org/wiki/ANSI_escape_code).
By default, this is set to "\e[7m
" which swaps the foreground and background
colors.
For example, to get a progress bar with white text on blue, PROGRESSBAR_COLORS
must be set to "\e[1;37;44m
". 1 is the attribute for bold,
37 and 44, the codes for white foreground and blue background as defined
in the table below :
Color | Black | Red | Green | Yellow | Blue | Magenta | Cyan | White |
Foreground | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 |
Background | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
DEVELOPER SECTION
This section is reserved to the developers and is never executed in the case of stable releases. Users have not to worry about this section, and its removal will have no consequence.
The file of mirrors: /etc/compat32pkg/mirrors
This file is required but its usage is optional and always implicit. It contains the list of mirrors and their aliases. It consists in a set of entries that rely on the syntax below:
mirror-entry ::= <key> = <mirror-addr>
key ::= string
mirror-addr ::= <local-directory>url>
For example, if you look at the content of this file, you will see something like that:
snippets of mirror's file |
---|
|
- The entry with the key DVD refer to the local directory in which dvd are mounted by users.
- The entries with the keys WorldWide-13.0, WorldWide-13.1 and WorldWide-current respectively refer to the Slackware mirrors of versions 13.0, 13.1 and current. The same apply to the entries with keys Germany-13.0, Germany-13.1 and Germany-current, but those key refers to servers in another country.
Each of the mirrors from this file can be defined as the default mirror for compat32pkg or explicitly passed to compat32pkg using their aliases introduced by an "at symbol" :
-
To defines the mirror bound to the key Germany-13.1 as the default mirror, the
variable DEFAULT_MIRROR of configuration script /etc/compat32pkg/compat32pkg.conf
should be declared as below:
DEFAULT_MIRROR=@Germany-13.1
-
To select the mirror bound to the key WorldWide-13.1 using the command line, simply
pass this key, introduced by an "at symbol", as argument to the parameter --mirror :
$ compat32pkg --mirror @WorldWide-13.1 ...
The blacklist file : /etc/compat32pkg/blacklist
This file is required. It contains the patterns (one per line) which identify permanently excluded packages from conversion, installation, updating, and removal. Each pattern can be the basename of a package (ex: mozilla-firefox), the baseref of a package (ex: slackware/xap/mozilla-firefox), or a regular expression (ex: mozilla-.*,pasture/.*).
This file has to be used for permanent exclusion of packages only. To exclude a package, or a set of package, punctually, during execution of compat32pkg only, the optional parameter --exclude should be used instead of this file.
The configuration file for the "layer-32" : /etc/compat32pkg/multilib-32bit-packages.lst
This file contains the list of packages (ie their basename) which provide the 32-bit part of the multilib (aka "layer-32") for Slackware-64.
-
This file must start with a line formatted as below :
$ #!version=M.m.YYMMDD
M.m.YYMMDD must be the version number of the file, where, "M" is the major revision number, "m" the minor revision number, and, "YYMMDD" the date of the revision.
This information is used by the configuration update mechanism, ie, when compat32pkg is executed in mode --layer-32-config.
-
The packages which provide the 32-bit part of the multilib must be given using their
basenames only, and there must be one basename per line only.
As this configuration file must be usable on all slackware-64 versions, it must contain references of all packages for all versions of the multilib. Therefore, this implies that a reference to a package could only be removed when the package is not any more used by all version of the multilib.
- Each line, whose the first non-whitespace character is a "#", is treated as a comment, and ignored.
As this file describes the 32-bit part of the multilib, it could seem natural to pass it as argument to compat32pkg to manage this layer. However, this usage is discouraged, and user should use the keyword layer-32 instead, as, this one is more explicit and, furthermore, offers a better management of the 32-bit part of the multilib, mostly when checking for updates, or, when upgrading this layer :
$ compat32pkg --mirror @WorldWide-13.0 --install layer-32
$ compat32pkg --mirror @WorldWide-13.1 --list-updates layer-32
$ compat32pkg --remove all --exclude layer-32
The directory of triggers : /etc/compat32pkg/triggers.d
This directory is required and is dedicated to the triggers.
See point The triggers for detailed informations about this feature.
The logfile : /var/log/compat32pkg.log
This file is used by compat32pkg to log all of its activity. As this file could take more disk space over time, it has to be reset from time to time by executing :
$ compat32pkg --reset-log
Preventing concurrent execution
Only one instance of compat32pkg can be run at a time. To achieve this, compat32pkg uses a simple lock mechanism based on the file /var/lock/compat32pkg.lock. In case of freeze of this mechanism (due to a power outage for example), this file should be deleted manually to unlock execution of compat32pkg.
Temporary files
compat32pkg use the directory /tmp/compat32pkg to store its temporary files. As a convenience, compat32pkg shares this temporary location with convertpkg-compat32. To do that, each time that compat32pkg calls convertpkg-compat32, the directory /tmp/compat32pkg is passed to convertpkg-compat32 through its environment variable TMP.
This feature is available since compat32pkg version 1.2.110112
Identifying the packages
When using compat32pkg, the packages to process, and the packages not to process, have to be identified using patterns.
Except when explicitly said, each pattern can be the basename of a package (ie: alsa-lib, mozilla-firefox), the baseref of a package (slackware/a/dbus, slackware/l/atk) or a regular expression (alsa-.*,patches/.*). Those patterns can be given into a comma separated list of patterns introduced by the keyword "list:" or into a text-file (one per line), whose commented lines and empty lines will be automatically ignored.
Available packages
compat32pkg allows users to access all of packages available on the selected mirror with exception for packages whose architecture is set to noarch and fw, and, those explicitly blacklisted into the file /etc/compat32pkg/blacklist. This choice has been made because hard coding of exclusion was not a clean solution as opposed to the flexibility offered by an external blacklist.
Preventing accidental incompatibilities
This mechanism has been designed to prevent usage of incompatible slackware mirrors at architecture and version level with the installed slackware.
The activation and deactivation of this mechanism is controlled by the variable PREVENT_INCOMPATIBILITIES in configuration's script /etc/compat32pkg/compat32pkg.conf. By default, this mechanism is enabled. To disable it, the variable PREVENT_INCOMPATIBILITIES must simply be set to $FALSE as below :
PREVENT_INCOMPATIBILITIES=$FALSE
The prevention is done by checking consistency (at architecture and version level), between the selected slackware mirror and the installed version of slackware when compat32pkg is in mode --convert, --install, --search, --check-updates, --list-updates, --convert-updates, --upgrade.
In case of inconsistency, this could imply one of the following :
-
compat32pkg is terminated with exit-code 1.
Example: In case of using a Slackware-64 mirror as source when using compat32pkg in mode --convert, --install, --search, --check-updates, --list-updates, --convert-updates, --upgrade.
-
The user is warned and execution of compat32pkg is paused for 5
seconds.
Example 1: When using compat32pkg in mode --check-updates, --list-updates, --convert, --convert-updates, --search, with a mirror which relates to a version of Slackware older (or newer) than the installed one.
Example 2: When using compat32pkg in mode --check-updates, --list-updates, --convert, --convert-updates,--search, with a mirror which relates to the development version of slackware (ie current).
slackware-current followers can avoid this by changing the version number into the file /etc/slackware-version to 'current'.
-
The user is warned, and, prompted to explicitly confirm continuation of
the process. When continuation is dismissed, compat32pkg is terminated
with 99 as exit code.
Example 1: When using compat32pkg in mode --install, --upgrade with a mirror which relates to a version of slackware newer (or older) than the installed one :
Example 2: When using compat32pkg in mode --install, --upgrade with a mirror which relates to the development version of slackware (ie current).
slackware-current followers can avoid this by changing the version number into the file /etc/slackware-version to 'current'.
Resolving duplicates
compat32pkg is able to detect duplicates (ie packages that share the same basename) and reports them when needed.
The search engine of compat32pkg automatically resolves, using the precedence order mechanism, duplicates that live in different directories. For example, if the query "list:mozilla-firefox" returns the packages patches/mozilla-firefox-3.6.8 and slackware/xap/mozilla-firefox-3.5.2, the execution of the precedence order mechanism, in its default configuration, will imply the selection of the package patches/mozilla-firefox-3.6.8.
On the other side, when duplicates live in the same directory, this mechanism, as it as not been designed to resolve that kind of duplicates, is totally useless. Therefore, currently, compat32pkg, even if it can detect that kind of duplicates, is not able to resolve them. Even if into the scope of compat32pkg this can not be seen as a major flaw, this will be fixed in a future release, and more precisely by using the list of unresolved duplicates and a dialog box.
The triggers
Triggers allow the user to execute a task following an event.
Each trigger :
- can be enabled or disabled
-
has a task to do, which can be :
Name Description message Prints a simple or multi-line message. warning Prints a simple or multi-line warning. exec:CMD Executes the external command CMD.
For security reason, in case of "exec:CMD", the command CMD must be one of the external commands trusted by compat32pkg which are defined by the variable TRUSTED_EXTERN_CMDS into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf). -
has a triggering event, which can be one of the following :
Event Description pre-install@layer-32 Occurs when the 32-bit layer is about to be installed. This event is triggered only when running :
$ compat32pkg --install layer-32
post-install@layer-32 Occurs when the 32-bit layer has been installed. This event is triggered only when running :
$ compat32pkg --install layer-32
update-found@layer-32 Occurs when updates are available for the layer-32. This event may be triggered only when running :
$ compat32pkg --check-updates layer-32
pre-upgrade@layer-32 Occurs when updates for the layer-32 are about to be installed. This event may be triggered only when running :
$ compat32pkg --upgrade layer-32
post-upgrade@layer-32 Occurs when updates for the layer-32 have been installed. This event may be triggered only when running :
$ compat32pkg --upgrade layer-32
pre-remove@layer-32 Occurs when the layer-32 is about to be removed. This event is triggered only when running :
$ compat32pkg --remove layer-32
post-remove@layer-32 Occurs when the layer-32 has been removed. This event is triggered only when running :
$ compat32pkg --remove layer-32
update-found@layer-32-config Occurs when an update is available for the descriptor of the 32-bit layer. This event may be triggered only when running :
$ compat32pkg --layer-32-config check-update
pre-install@anyof:<pattern,...> Occurs when any of the compat32-packages identified by the given patterns is about to be installed. This event may be triggered when running :
$ compat32pkg --install ...
post-install@anyof:<pattern,...> Occurs when any of the compat32-packages identified by the given patterns has been installed. This event may be triggered when running :
$ compat32pkg --install ...
update-found@anyof:<pattern,...> Occurs when there's available updates for any of the compat32-packages identified by the given patterns. This event may be triggered when running :
$ compat32pkg --check-updates ...
pre-upgrade@anyof:<pattern,...> Occurs when updates for any of the compat32-packages identified by the given patterns is about to be installed. This event may be triggered when running :
$ compat32pkg --upgrade ...
post-upgrade@anyof:<pattern,...> Occurs when updates for any of the compat32-packages identified by the given patterns have been installed. This event may be triggered when running :
$ compat32pkg --upgrade ...
pre-remove@anyof:<pattern,...> Occurs when any of the compat32-packages identified by the given patterns is about to be removed. This event may be triggered when running :
$ compat32pkg --remove ...
post-remove@anyof:<pattern,...> Occurs when any of the compat32-packages identified by the given patterns has been removed. This event may be triggered when running :
$ compat32pkg --remove ...
In the case of events of kind *@anyof:<pattern,...>, each pattern can be the basename of a package (i.e: mesa, mozilla-firefox) or a regular expression (i.e: mozilla-.*)
To manage the triggers, compat32pkg comes with the built-in commands below :
$ compat32pkg --trigger add NAME EVENT TASK TASK_ARG...
Creates the trigger named NAME to execute the task TASK following the event EVENT.
NAME is the name of the trigger to create, and by extension, the basename of the file that describes this trigger.
- Each trigger file is stored into the directory /etc/compat32pkg/triggers.d and has ".trigger" as extension.
- When an events occurs, compat32pkg handles all the enabled triggers that match this event according to the alphabetical order of their names.
EVENT can be one of the supported events.
TASK TASK_ARG... is the task to do and its arguments. TASK can be message, warning, or exec:CMD.
In the case of message and warning, each argument TASK_ARG[i] will be processed as a i-th line of the message/warning to print.
In the case of exec:CMD :
- CMD must be the external command to execute. This command must be one of the approved external commands by compat32pkg, which are defined by the variable TRUSTED_EXTERN_CMDS in the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf).
- Since compat32pkg has no way to know whether the command CMD requires parameters, TASK_ARG ... is optional. When present, each of the arguments TASK_ARG[i] will be handled as the i-th parameter of the external command to execute (i.e CMD).
-
Each of the variables below will be accessible at execution of the external command CMD :
-
CTRIGGER_NAME:
The name of the running trigger
-
CTRIGGER_EVT:
The event linked to the running trigger, which can be :
pre-install@layer-32 pre-install@anyof post-install@layer-32 post-install@anyof update-found@layer-32 update-found@anyof pre-upgrade@layer-32 pre-upgrade@anyof post-upgrade@layer-32 post-upgrade@anyof pre-remove@layer-32 pre-remove@anyof post-remove@layer-32 post-remove@anyof update-found@layer-32-config
-
CTRIGGER_ANYOF_PATTERNS :
When CTRIGGER_EVT is of kind *@anyof, this is the comma separated list of patterns associated to the event. Otherwise, this variable is unset.
-
CTRIGGER_MATCHPKGS :
When CTRIGGER_EVT is of kind *@layer-32 this contains the basename of the package that provide the 32-bit layer which are targeted by the event.
When CTRIGGER_EVT is of kind *@anyof this contains the basename of the packages, processed by compat32pkg, that match the patterns (CTRIGGER_ANYOF_PATTERNS) associated to the event.
In both cases, the basenames are given as a comma separated list of basenames.
In any other cases, this variable is unset.
-
CTRIGGER_MATCHPKGCOUNT :
When CTRIGGER_EVT is of kind *@layer-32 this is the number of packages targeted by the event.
When CTRIGGER_EVT is of kind *@anyof this is the number of package matching the patterns (CTRIGGER_ANYOF_PATTERNS) associated to the event.
In any other cases, this variable is unset.
Note that, when adding a trigger of kind exec:CMD using compat32pkg, the use of any of these variables inside of any argument of the command to execute passed to compat32pkg must be done with an escaping like \$CTRIGGER_NAME. Indeed, without this, the variable will be directly interpreted instead of being interpreted at each execution of the command CMD. -
CTRIGGER_NAME:
$ compat32pkg --trigger remove <all>|<list:name,...>
$ compat32pkg --trigger enable <all>|<list:name,...>
$ compat32pkg --trigger disable <all>|<list:name,...>
$ compat32pkg --trigger list [ <enabled-only>|<disabled-only> ]
The triggers file format
As triggers are simple text files, user can manage them manually. Each trigger file must be stored into /etc/compat32pkg/triggers.d, and must have ".trigger" as extension. These files use the format below :
STATUS_FIELD ::= STATUS=<enabled>|<disabled>
EVENT_FIELD ::= EVENT=<C32PKG_EVENT>
TASK_FIELD ::= TASK=<message>|<warning>|<exec:CMD>
TASKARG_FIELDS ::= TASK_ARG[i]=text
-
The name of a trigger is given by the name of the file that describes it.
-
When an events occurs, compat32pkg handles all the enabled triggers that match this event according to the alphabetical order of their names.
The field STATUS defines the status of the trigger, and can be enabled or disabled.
The field EVENT defines the event that must imply the execution of the task TASK. This must be one of the supported events.
The field TASK defines the task that must be executed by the trigger, which can be message, warning, or exec:CMD.
In the case of tasks message and warning, each field TASK_ARG[i] defines the i-th line (starting from 0) of the message/warning.
Note that each line which includes significant spaces at start and/or at end must be put in double quotes, otherwise the spaces will be removed when the message/warning will be printed. Example:
TASK_ARG[0]= " ******************* "
TASK_ARG[1]= " * a sample example * "
TASK_ARG[2]= " ******************* "
In the case of task exec:CMD :
- The command CMD must be one of the external commands approved by compat32pkg defined by the variable TRUSTED_EXTERN_CMDS in the configuration's script (i.e: /etc/compat32pkg/compat32pkg.conf). Otherwise, each time this trigger will be handled, its command will not be executed and the user will be warned.
-
As compat32pkg has no way to know whether the command CMD requires parameters, the fields TASK_ARGS[0..n-1] are optional. When present, each field TASK_ARG[i] defines the i-th (starting from 0) parameter of the command CMD.
Note that each argument which includes spaces must be put in quotes, otherwise, at execution, the argument could be misinterpreted by the command CMD.
- The variables CTRIGGER_NAME, CTRIGGER_EVT, CTRIGGER_ANYOF_PATTERNS, CTRIGGER_MATCHPKGS, and, CTRIGGER_MATCHPKGCOUNT, will be accessible at execution of the external command CMD :
The Triggers shipped with compat32pkg
compat32pkg is shipped with the triggers described below :
mesa-installed-warn.trigger
Warns user he should reinstall any proprietary driver (like nvidia, ati) when the package mesa-compat32 has been installed.
By default, this trigger is enabled. It can be disabled using compat32pkg as below :
$ compat32pkg --trigger disable list:mesa-installed-warn
When this trigger is enabled and the package mesa is one of the packages targeted by compat32pkg --install ...
,
the user will be warned as below :
mesa-updated-warn.trigger
Warns user he should reinstall any proprietary driver (like nvidia, ati) when the package mesa-compat32 has been updated.
By default, this trigger is enabled. It can be disabled using compat32pkg as below :
$ compat32pkg --trigger disable list:mesa-updated-warn
When this trigger is enabled and the package mesa is one of the packages targeted by
compat32pkg --upgrade ...
, the user will be warned as below :
layer32-cfg-update-found-notify.trigger
Notifies user, using a tooltip, when there's an available update for the descriptor of the layer-32.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:layer32-cfg-update-found-notify
When this trigger is enabled, this is a good idea to create a cron job to be notified on available update for the descriptor of layer-32. This cron job could be as below :
0 */2 * * mon compat32pkg --layer-32-config check-update &>/dev/null
As needed, the notification can be sent to another screen using the variable DISPLAY as in example below :
0 */2 * * mon DISPLAY=:1 compat32pkg --layer-32-config check-update &>/dev/null
When this trigger is enabled, and there's an update for the descriptor of the layer-32 when executing
compat32pkg --layer-32-config check-update
, the user will be notified through a tooltip as below :
layer32-installed-notify.trigger
Notifies user, using a tooltip, following the installation of the layer-32.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:layer32-installed-notify
When this trigger is enabled, and the layer-32 is installed (ie compat32pkg --install layer-32
),
the user will be notified through a tooltip as below :
layer32-removed-notify.trigger
Notifies user, using a tooltip, when the layer-32 has been removed.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:layer32-removed-notify
When this trigger is enabled, and the layer-32 is removed (ie compat32pkg --remove layer-32
),
the user will be notified through a tooltip as below :
layer32-update-found-notify.trigger
Notifies user, using a tooltip, when there are available updates for the layer-32.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:layer32-update-found-notify
When this trigger is enabled, this is a good idea to create a cron job to be notified on available updates for the layer-32. This cron job could be as below :
0 */2 * * mon,wed,fri compat32pkg --check-updates layer-32 &>/dev/null
As needed, the notification can be sent to another screen using the variable DISPLAY as in example below :
0 */2 * * mon,wed,fri DISPLAY=:1 compat32pkg --check-updates layer-32 &>/dev/null
In the examples below, it's assumed that a default mirror has been defined into the configuration's script (i.e: /etc/compat32pkg/compat32pkg.conf).
When this trigger is enabled, and there's updates for the layer-32 (ie compat32pkg --check-updates layer-32
),
the user will be notified through a tooltip as below :
layer32-updated-notify.trigger
Notifies user, using a tooltip, when available updates for the layer-32 have been installed.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:layer32-updated-notify
When this trigger is enabled, and the layer-32 is updated (ie compat32pkg --upgrade layer-32
),
the user will be notified through a tooltip as below :
mesa-installed-notify.trigger
Notifies user, using a tooltip, he should reinstall any proprietary driver (like nvidia, ati) when the package mesa-compat32 has been installed.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:mesa-installed-notify
When this trigger is enabled and the package mesa is one of the packages targeted by
compat32pkg --install ...
, the user will be warned as below :
mesa-updated-notify.trigger
Notifies user, using a tooltip, he should reinstall any proprietary driver (like nvidia, ati) when the package mesa-compat32 has been updated.
By default, this trigger is disabled. It can be enabled using compat32pkg as below:
$ compat32pkg --trigger enable list:mesa-updated-notify
When this trigger is enabled and the package mesa is one of the packages targeted by
compat32pkg --upgrade ...
, the user will be warned as below :
The triggers and tooltip notifications
Any trigger can be used to notify the user with a tooltip. This requires the command notify-send, and the wrapper c32pkg-notify-send (shipped with compat32pkg) to be installed, otherwise a warning will be printed instead. The command notify-send is part of the package libnotify since Slackware 13.1.
As Slackware 13.0 has no package libnotify, users of this version will have to get it, and its dependencies too. Furthermore, users who don't use KDE should also get xfce4-notifyd. Note that all of these can be found on Robby Workman's repository.
Concurrent processing of packages
Since version 1.5, compat32pkg provides a mechanism which uses separated processes to download, convert, and install the packages. This features can significantly improve packages processing time.
This mechanism can be controlled through the variable PACKAGES_PROCESSING declared into the configuration's script (i.e: /etc/compat32pkg/compat32pkg.conf). The possible value of this variable are : legacy, concurrent, and auto, which is the default.
When set to auto, compat32pkg selects the package processing mode according to the number of packages to process, and, the number of installed cpu/core. When there's less than 3 packages to process, or, less than 2 cpu/core installed, the legacy mode will be selected, otherwise, the concurrent mode is selected.
When the legacy mode is selected, the packages are processed as in earlier version of compat32pkg. This means, that compat32pkg download a package, convert it to compat32, and installs the compat32 package, and so on with next packages...
When the concurrent mode is selected, compat32pkg uses separate processes to download, convert, and install the packages. This means that a package can be in download, while another (already downloaded) is being converted, and yet another (already downloaded and converted) is being installed.
As legacy and concurrent modes does not work the same way, they have different output too.
Sample output of legacy mode
Sample output of concurrent mode
At execution, the concurrent mode draws a progress bar which is described below :
Area | Description |
---|---|
1 | The elapsed time since start of package processing. |
2 | The number of package to process. |
3 |
This area is dedicated to informations from the downloader process :
|
4 |
This area is dedicated to informations from the converter process :
|
5 |
This area is dedicated to informations from the installer process :
|
Obtaining help
compat32pkg provides two kinds of help: summary and complete. The first is displayed by default when executing compat32pkg without argument, like below:
Using compat32pkg
Downloading packages and converts them to format compat32
This is done by using compat32pkg in mode --convert. As this mode needs a source to get the packages to convert, a mirror should be supplied in argument of parameter --mirror unless if a default mirror is provided into the configuration's script (i.e: /etc/compat32pkg/compat32pkg.conf). It is also possible to punctually exclude packages from this process by using optional parameter --exclude :
$ compat32pkg --convert list:l/alsa-lib,xap/mozilla-firefox
$ compat32pkg --mirror @France-13.0 --convert list:"slackware/l/alsa-\(lib\|oss\),slackware/xap/mozilla-.*" --exclude list:.*thunderbird
$ compat32pkg --convert /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --convert. In this context, layer-32 provides a simple way to automate conversion of packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @WorldWide-13.1 --convert layer-32
compat32pkg will store the downloaded packages and the converted packages into the directories pointed by the variables SLACK32PKG_CACHE and COMPAT32PKG_CACHE declared into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf).
In the example above, the packages to convert were identified using their baseref, which imply, unless in few exceptional cases, the selection of one package per baseref.
Now, If we use basenames instead of baserefs, the query will be less specific and more than one package would match the query. Therefore, In that case, the search engine will automatically choose the package according to the order given by the variable PGKS_PRECEDENCE_ORDER like in the example below:
As we can see above, in that case, the search engine has selected a newer version (3.6.8 vs 3.5.2) of package mozilla-firefox than in sample #1.
Obviously, the same rule as above is applied in case of mixing of basename and baseref into the query like as below :
Downloading packages, converts them to format compat32 and installs resulting packages
This works like for converting packages unlike that the parameter --install has to be used instead of --convert.
$ compat32pkg --install list:l/alsa-lib,xap/mozilla-firefox
$ compat32pkg --mirror @France-13.0 --install list:"slackware/l/alsa-\(lib\|oss\),slackware/xap/mozilla-.*" --exclude list:.*thunderbird
$ compat32pkg --install /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --install. In this context, layer-32 provides a simple way to automate install of packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @ WorldWide-13.1 --install layer-32
compat32pkg will store the downloaded packages and the converted packages into the directories pointed by the variables SLACK32PKG_CACHE and COMPAT32PKG_CACHE declared into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf).
The Installation of packages resulting from conversion process is done by using the command upgradepkg and its option --install-new.
Checks available updates for a given subset of packages to format compat32
This is done by using compat32pkg in mode --check-updates. As this mode needs a source to search updates, a mirror should be supplied in argument of parameter --mirror unless a default mirror is provided into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf).
To check available updates for all installed packages, the keyword "all" has to be passed as argument of parameter --check-updates. Otherwise, the patterns which identify the installed packages to be checked must be given, as always, in a text file or in a comma separated list of pattern introduced by the keyword "list:". However, as installed compat32 packages can only be identified by their basenames, the use of baserefs is prohibited and will result in an error.
It is also possible to punctually exclude some of installed packages and some of updates by using optional parameter --exclude.
If updates were found, compat32pkg will terminate with 0 as exit code. Otherwise, it will terminate with 100 as exit code.
$ compat32pkg --check-updates list:mozilla-firefox
$ compat32pkg --mirror @France-13.0 --check-updates all --exclude list:patches/.*
$ compat32pkg --check-updates /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --check-updates. In this context, layer-32 provides a simple way to only check updates for packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @WorldWide-13.1 --check-updates layer-32
When the argument layer-32 is used, compat32pkg will check updates for the 32-bit part of the multilib only. In this case, the update mechanism recognizes as an update:
- any new version of any installed package of the 32-bit part of the multilib
- any package of the 32-bit part of the multilib which is not installed, nor blacklisted, nor excluded.
This implies that any addition (of package) into the file that describes the 32-bit part of the multilib is handled as update.
Lists available updates for a given subset of packages to format compat32
This works like for checking updates unlike that the parameter --list-updates has to be used instead of --check-updates.
$ compat32pkg --list-updates list:mozilla-firefox
$ compat32pkg --mirror @France-13.0 --list-updates all --exclude list:patches/.*
$ compat32pkg --list-updates /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --list-updates. In this context, layer-32 provides a simple way to only enumerate the updates for packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @WorldWide-13.1 --list-updates layer-32
When the argument layer-32 is used, compat32pkg will check updates for the 32-bit part of the multilib only. In this case, the update mechanism recognizes as an update:
- any new version of any installed package of the 32-bit part of the multilib
- any package of the 32-bit part of the multilib which is not installed, nor blacklisted, nor excluded.
This implies that any addition (of package) into the file that describes the 32-bit part of the multilib is handled as update.
Downloads available updates for a given subset of packages to format compat32 and convert them
This works like for checking updates unlike that the parameter --convert-updates has to be used instead of --check-updates.
$ compat32pkg --convert-updates list:mozilla-firefox
$ compat32pkg --mirror @France-13.0 --convert-updates all --exclude list:patches/.*
$ compat32pkg --convert-updates /etc/compat32pkg/multilib-32bit-packages.lst
$ compat32pkg --mirror @WorldWide-13.1 --convert-updates layer-32
compat32pkg will store the downloaded packages and the converted packages into the directories pointed by the variables SLACK32PKG_CACHE and COMPAT32PKG_CACHE declared into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf)..
The argument layer-32 is available since version 1.0.101201. In the context of --convert-updates, it provides a simple way to only convert updates for packages that provide the 32-bit part of the multilib. In this case, the update mechanism recognizes as an update:
- any new version of any installed package of the 32-bit part of the multilib
- any package of the 32-bit part of the multilib which is not installed, nor blacklisted, nor excluded.
This implies that any addition (of package) into the file that describes the 32-bit part of the multilib is handled as update.
Downloads available updates for a given subset of packages to format compat32, converts them, and upgrade
This works like for converting updates unlike that the parameter --upgrade has to be used instead of --convert-updates.
$ compat32pkg --upgrade list:mozilla-firefox
$ compat32pkg --mirror @France-13.0 --upgrade all --exclude list:patches/mozilla-firefox
$ compat32pkg --upgrade /etc/compat32pkg/multilib-32bit-packages.lst
$ compat32pkg --mirror @WorldWide-13.1 --upgrade layer-32
The Installation of packages resulting from conversion process is done by using the command upgradepkg.
The argument layer-32 is available since version 1.0.101201. In the context of --upgrade, it provides a simple way to only upgrade packages that provide the 32-bit part of the multilib. In this case, the update mechanism recognizes as an update:
- any new version of any installed package of the 32-bit part of the multilib
- any package of the 32-bit part of the multilib which is not installed, nor blacklisted, nor excluded.
This implies that any addition (of package) into the file that describes the 32-bit part of the multilib is handled as update.
Looks for packages on a slackware-32 mirror
This is done by using compat32pkg in mode --search. As this mode needs a source to search packages, a mirror should be supplied in argument of parameter --mirror unless if a default mirror is provided into the configuration's script (i.e /etc/compat32pkg/compat32pkg.conf). It is also possible to punctually exclude packages from this process by using optional parameter --exclude :
$ compat32pkg --search list:.*
$ compat32pkg --search list:l/alsa-lib,xap/mozilla-firefox
$ compat32pkg --mirror @France-13.0 --search list:"slackware/l/alsa-\(lib\|oss\),slackware/xap/mozilla-.*" --exclude list:.*thunderbird
$ compat32pkg --search /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --search. In this context, layer-32 provides a simple way to search only the packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @WorldWide-13.1 --search layer-32
The column "mult." indicates if it exists other versions (ie duplicates) of the same package (ie with the same basename).
Removing of installed compat32 packages
This is done by using compat32pkg in mode --remove. To remove all installed compat32 packages, the keyword "all" has to be passed as argument of parameter --remove. Otherwise, the patterns which identify the installed packages to remove must be given, as always, in a text file or in a comma separated list of pattern introduced by the keyword "list:". It is also possible to punctually exclude packages from this process by using optional parameter --exclude.
As installed compat32 packages can only be identified by their basenames, the use of baserefs is prohibited and will result in an error.
$ compat32pkg --remove all --exclude list:mozilla-firefox
$ compat32pkg --remove list:mozilla-firefox
$ compat32pkg --remove /etc/compat32pkg/multilib-32bit-packages.lst
Since compat32pkg version 1.0.101201, the argument layer-32 can be passed in argument of --remove. In this context, layer-32 provides a simple way to only remove packages that provide the 32-bit part of the multilib' :
$ compat32pkg --mirror @WorldWide-13.1 --remove layer-32
Checking updates, and upgrade, of the configuration file for the "layer-32"
By using compat32pkg in mode --layer-32-config, the user can check available updates, and upgrade, the configuration file for the layer-32
$ compat32pkg --layer-32-config <check-update>|<update> [ updates-site-url ]
This mode allows users to follow evolving of the layer-32, easily, without to have to install a new version of compat32pkg, nor to have to look for changes made to the layer-32.
The argument updates-site-url is optional. When presents, this must be the url of the updates site that compat32pkg will use for the requested update operation, otherwise, the default one (ie http://sourceforge.net/projects/compat32pkg/files/updates-site) will be used.
In case of configuration file for the layer-32, the following files must be available on the selected updates-site, otherwise the update operation will fail :
- The latest revision of the configuration file for the layer-32 which must be named multilib-32bit-packages.lst
-
The file containing information about the file (1), named multilib-32bit-packages.lst.infos, and, which must contain the following data:
-
The version number of the configuration file (1). This version must be given by a field
named version :
version = 1.4.110319
-
The md5sum of the configuration file (1). This value must be given by a field named
md5sum :
md5sum = 6f7d19e164201754d28a66c59913afed
-
The description of changes since the previous revision. This description must be given
by using lines starting by a character ":". Example:
:This is the description of changes since the previous revision of the file :that describes the layer-32. : + package X was added. This does not affect the multilib for 13.0
-
The version number of the configuration file (1). This version must be given by a field
named version :
To check available updates related to the configuration file for the layer-32, compat32pkg will have to be used like below:
$ compat32pkg --layer-32-config check-update
$ compat32pkg --layer-32-config check-update http://my.compat32pkg.updates-site-url
When an update is available, the changes since the previous revision of the configuration files for the layer-32 is shown, as in the sample below :
To upgrade the configuration file for the layer-32 to the version available on the selected updates site, compat32pkg will have to be used like below :
$ compat32pkg --layer-32-config update
$ compat32pkg --layer-32-config update http://my.compat32pkg.updates-site-url
When an update is available, a backup of the previous revision of the configuration file for layer-32 is automatically performed prior to the updating. This backup will be named multilib-32bit-packages.lst.bak_<date>, where <date> is the current date to format YYYYMMDD.
List the dependencies
Since revision 1.6.130502, compat32pkg includes the command --depends which lists the dependencies required by a single 32-bit binary, or by the 32-bit binaries in a directory hierarchy, or by the 32-bit binaries from an installed package.
$ compat32pkg --depends skype
compat32pkg ver. 1.6.130502 (stable)
[--depends] Started on Thu 02 May 2013 04:14:27 PM CEST
[--depends] Inspecting 32-bit binaries from package skype-4.1.0.20-i486-1_SBo
[--depends] Found 1 32-bit binaries.
[--depends] Found 48 dependencies (0 orphans, 0 unresolved)
[--depends] 48 dependencies are fulfilled by these packages:
aaa_elflibs-compat32
alsa-lib-compat32
bzip2-compat32
cxxlibs-compat32
expat-compat32
fontconfig-compat32
freetype-compat32
gcc
gcc-g++
glib2-compat32
glibc
glibc-solibs
gst-plugins-base-compat32
gstreamer-compat32
libICE-compat32
libSM-compat32
libX11-compat32
libXScrnSaver-compat32
libXau-compat32
libXdmcp-compat32
libXext-compat32
libXrender-compat32
libXv-compat32
libffi-compat32
libpng-compat32
libxcb-compat32
libxml2-compat32
qt-compat32
sqlite-compat32
util-linux-compat32
zlib-compat32
[--depends] Ended on Thu 02 May 2013 04:14:31 PM CEST
Clearing the cache(s)
As said before here and here, both directories used to store downloaded packages and the converted packages have to be cleaned periodically. This could be easily automated by using compat32pkg in mode --clear-cache with one of the arguments below :
slackware-32 | To clean the directory used to store the downloaded packages. |
compat-32 | To clean the directory used to store the converted packages. |
all | To clean both directories used to store the downloaded and converted packages. |
Resetting the logfile
As said here, the logfile used by compat32pkg to log its activity can be reset using the mode --reset-cache.
Howto
Using of Firefox 32-bit and Firefox 64-bit at the same time
First of all, the 32-bit version of Firefox must be installed. This is easily done by using compat32pkg like as below :
$ compat32pkg --install list:mozilla-firefox
compat32pkg ver. 0.9.101808
[--install] Started on Wed 08 Sep 2010 12:15:45 PM CEST
[--install] Using mirror ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware-13.0
[--install] Local system is Slackware/x86_64 version 13.0.0.0.0
[--install] Mirrored system is Slackware/i486 version 13.0
[--install] Slackware-32 packages will be stored into /var/cache/compat32pkg/slackware-32
[--install] compat32 packages will be stored into /var/cache/compat32pkg/compat-32
[--install] 1 package(s) were found (1,020 sec.)
[--install] Processing package mozilla-firefox version 3.6.8 build 1
[--install] Package successfully downloaded (/var/cache/compat32pkg/slackware-32/mozilla-firefox-3.6.8-i686-1.txz)
[--install] Package converted to format compat32 (/var/cache/compat32pkg/compat-32/mozilla-firefox-compat32-3.6.8-x86_64-1.txz)
[--install] Package successfully installed.
[--install] Ended on Wed 08 Sep 2010 12:16:53 PM CEST
Once firefox-32 is installed you have to execute,as root, the command update-pango-querymodules
,
otherwise, firefox will be unusable (its output will be unreadable). Another way to achieve this is to
reset the system :
$ su
Password:
$ /usr/bin/update-pango-querymodules
Now, to be able to use firefox 32-bit and 64-bit at the same time, you will need to create two different profile, one for the 32-bit version and another for the 64-bit version.
Create a profile for 64-bit firefox
Close all instance of Firefox and run it as follow :
$ /usr/bin/firefox -P
Into "Firefox - Choose User Profile", create a profile named "64bit" for example, validate and exit.
Create a profile for 32-bit firefox
Close all instance of Firefox and run it as follow :
$ /usr/bin/32/firefox -P
Into "Firefox - Choose User Profile", create a profile named "32bit" for example, validate and exit.
Once both profile created, both versions of firefox can be started using their respective profile:
$ /usr/bin/firefox -P "64bit" --no-remote &
$ /usr/bin/32/firefox -P "32bit" --no-remote &
Firefox-32 plugins
Mplayer plugins
First of all, the 32-bit version of this plugin have to be installed. This is easily done by using compat32pkg like below :
$ compat32pkg --install list:mplayerplug-in
compat32pkg ver. 0.9.101808
[--install] Started on Wed 08 Sep 2010 14:03:51 PM CEST
[--install] Using mirror ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware-13.0
[--install] Local system is Slackware/x86_64 version 13.0.0.0.0
[--install] Mirrored system is Slackware/i486 version 13.0
[--install] Slackware-32 packages will be stored into /var/cache/compat32pkg/slackware-32
[--install] compat32 packages will be stored into /var/cache/compat32pkg/compat-32
[--install] 1 package(s) were found (1,094 sec.)
[--install] Processing package mplayerplug-in version 3.55 build 1
[--install] Package successfully downloaded (/var/cache/compat32pkg/slackware-32/mplayerplug-in-3.55-i486-1.txz)
[--install] Package converted to format compat32 (/var/cache/compat32pkg/compat-32/mplayerplug-in-compat32-3.55-x86_64-1.txz)
[--install] Package successfully installed.
[--install] Ended on Wed 08 Sep 2010 14:03:59 PM CEST
Once installed, this plugin should work flawlessly the next time firefox-32 will be started. It is possible to test it here, which should give you something like below :
Java plugin
First of all, the 32-bit version of the JRE or of the JDK has to be installed. This is easily done by using compat32pkg like below :
$ compat32pkg --install list:jre
compat32pkg ver. 0.9.101808
[--install] Started on Wed 08 Sep 2010 16:13:44 PM CEST
[--install] Using mirror ftp://ftp.lip6.fr/pub/linux/distributions/slackware/slackware-13.0
[--install] Local system is Slackware/x86_64 version 13.0.0.0.0
[--install] Mirrored system is Slackware/i486 version 13.0
[--install] Slackware-32 packages will be stored into /var/cache/compat32pkg/slackware-32
[--install] compat32 packages will be stored into /var/cache/compat32pkg/compat-32
[--install] 1 package(s) were found (1,059 sec.)
[--install] Processing package jre version 6u16 build 1
[--install] Package successfully downloaded (/var/cache/compat32pkg/slackware-32/jre-6u16-i586-1.txz)
[--install] Package converted to format compat32 (/var/cache/compat32pkg/compat-32/jre-compat32-6u16-x86_64-1.txz)
[--install] Package successfully installed.
[--install] Ended on Wed 08 Sep 2010 16:16:17 PM CEST
After installation of the jre (or jdk), the plugins have to be installed manually as explained below :
- In case of firefox < 3.6
$ ln -sfv /usr/lib/java/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/mozilla/plugins/
- In case of firefox >= 3.6
$ ln -sfv /usr/lib/java/lib/i386/libnpjp2.so /usr/lib/mozilla/plugins/
Afterward, the java plugin should work flawlessly the next time firefox-32 will be started. It is possible to test it here which should give you something like below :