Download CruxPorts4Slack

Version: 20120729

What is it?
In the BSD Unix World a ports system means a directory hierarchy (ususally under /usr/ports)
where you can automatically build your own binary packages from source.

The advantage of a ports system is, that the built packages are optimized for your
computer. Second advantage is: ports are faster available then binary packages.

In the last years ports systems became popular on Linux, too.
A well-known Linux distro with a ports system is Gentoo, another one is
Crux ( and another one Arch Linux (

Being a Slackware fan, I decided to switch to Crux, because
Slackware hadn't alls the packages I wanted and using
./configure && make && make install (or even checkinstall) wasn't the optimum for me.

At first I was impressed with the ports system of Crux. But building every single
package, even the most basic software (e.g. util-linux), was getting on my nerves.
And I didn't like the  system layout of Crux as much as I liked

I thought "Why don't use a mix of the two". Slackware with the Crux ports system
- that would be it. Crux binary packages are based on tarballs, so are Slackware packages.
So I switched back to Slack and ported the Crux port system to Slackware.

Here is the result: With cruxports4slack you can use the crux ports system
with Slackware.


Depends on: curl

Installation with:  installpkg cruxports4slack-20120729-noarch-1.tgz


usage: pkginfo [-i|-i package]
-i, --installed        list installed packages and their version.
-l, --list package     list  files  owned  by  the  specified package
-h                     print help and exit

usage: ports [options] [collection ...]
-u, --update    update ports
-l, --list      list available ports
-d, --diff      list differences between installed packages and availabe ports
-v, --version   print version and exit
-h, --help      print help and exit

usage: pkgmk [options]
-i,   --install             build and install package
-u,   --upgrade             build and install package (as upgrade)
-r,   --recursive           search for and build packages recursively
-d,   --download            download missing source file(s)
-do,  --download-only       do not build, only download missing source file(s)
-utd, --up-to-date          do not build, only check if package is up to date
-um,  --update-md5sum       update md5sum
-im,  --ignore-md5sum       build package without checking md5sum
-cm,  --check-md5sum        do not build, only check md5sum
-ns,  --no-strip            do not strip executable binaries or libraries
-f,   --force               build package even if it appears to be up to date
-c,   --clean               remove package and downloaded files
-kw,  --keep-work           keep temporary working directory
-a2c, --arch2crux          convert Arch Linux PKGBUILD to Crux Pkgfile
-cf,  --config-file   use alternative configuration file
-v,   --version             print version and exit
-h,   --help                print help and exit

Example for building and installing a package

cd /usr/ports/contrib/antiword
pkgmk -i


How it works
With cruxports4slack you will be able to use Pkgfile files from .

The ports command can checkout ports from port repositories. Support for *.rsync
files is included.

If you want to use *.httpup files you have to build and install httpup first (available
at Crux's "core" repo)

The pkgmk command  is a modified pkgmk from Crux's pkgutils which uses Slackware tools
(e.g. "makepkg") to build a Slackware package.

Where can I get ports?
At is a huge collection of port repositories. With this you
can easily build Slackware packages for almost every Free Software

What about Arch Linux PKGBUILD files?
Beginning from 20120729 the "pkgmk -a2c" can convert an Arch PKGBUILD to a
Crux Pkgfile to some extent. Arch's PKGBUILD files are much more complex then
Crux's Pkgfile files. So it is better to check the created Pkgfile.

.footprint files aren't supported in this version of pkgmk, they are
simply ignored.

Not every Crux port is 100% compatible with Slackware, especially
where it has influence on the system layout. For example don't install
Crux's port of "base/filesystem", "base/rc" or "base/pkgutils" on Slackware.
You have been warned.

20120729 - Added -a2c/--arch2crux option to pkgmk for converting Arch Linux's PKGBUILD to Crux Pkgfile
         - Removed httpup and Crux's Repo file
         - Replaced httpup driver with rsync driver

20061113 - Added -p/--pkgfile option to pkgmk for using alternative Pkgfiles. This comes in handy
           if you have a modified Pkgfile which will not be overwritten by a ports -u
         - Modified contrib and opt repository to match the new URL

20060822 - Added pkginfo, a script to print information about installed packages
         - Removed base repository

20050612 - pkgmk makes install/slack-desc from "# Description:" in Pkgfile
         - pkgmk guesses arch in pkgname-version-arch-release.tgz from CFLAGS in /etc/pkgmk.conf
         - re-packed the wohle thing in one package

20050606 - Initial release