Table of Content

This is a three-parts article. There are few sections here.

Part One
  • Preface
  • Preparing Docker
  • IRSIF: slackpkg install, removepkg, Query Search, Show Info, List File
  • Container: Slackware64, Minimal Install, Package Series
  • Mirror
  • System Wide: Installed Packages
  • History: The Log File
  • No Dependency: Example, slpkg deps-status
  • Hold: Blacklist
  • Cleanup
Part Two
  • Using slackbuild, manual compilation, and installpkg
  • Using sbopkg, automatic compilation
  • Using slapt-get: Reading, Install, Dependencies, Update, Upgrade, Install, Show Info
  • Using slapt-src: Update, Install
Part Three
  • Install slpkg: Dependency, Install, No certificate
  • Using slpkg: Documentation, Update, Install, The Log File
  • Repository: List, Configuration, Enable, List Package, Install Package
  • Conclusion
There are still other topic uncovered here
  • slackpkgplus

Slackbuild

There are few options to have slackbuild compiled.

  • Manual Compilation

  • Using sbopkg

  • Other tools such as slapt-src, and slpkg

Here we I use fish as an experiment. You can use other Slackbuild as well such as ncdu.

Manual Compilation

Get the slackbuild. Using the appropriate slackware version.

$ cd ~

$ wget -c ftp://ftp.slackbuilds.org/pub/slackbuilds/14.2/system/fish.tar.gz

$ tar -xvf fish.tar.gz

$ cd fish

$ chmod +x fish.SlackBuild

Get the source code. Using fish.info

$ cat fish.info 
PRGNAM="fish"
VERSION="2.6.0"
HOMEPAGE="http://fishshell.com/"
DOWNLOAD="https://github.com/fish-shell/fish-shell/releases/download/2.6.0/fish-2.6.0.tar.gz"
MD5SUM="ce9d8cc2a34d172a94cfa3ef9988937c"
DOWNLOAD_x86_64=""
MD5SUM_x86_64=""
REQUIRES="man-db"
MAINTAINER="Edinaldo P. Silva"
EMAIL="edps.mundognu@gmail.com"

$ wget -c --no-check-certificate https://github.com/fish-shell/fish-shell/releases/download/2.6.0/fish-2.6.0.tar.gz

Do the compilation process. Be brave to track error in /tmp/*/config.log whenever you encounter error.

$ ./fish.SlackBuild
...
Slackware package /tmp/fish-2.6.0-x86_64-1_SBo.tgz created.

And finally install.

$ installpkg /tmp/fish-2.6.0-x86_64-1_SBo.tgz
Verifying package fish-2.6.0-x86_64-1_SBo.tgz.
Installing package fish-2.6.0-x86_64-1_SBo.tgz:
PACKAGE DESCRIPTION:
# fish (Friendly Interactive Shell)
#
# fish is a user friendly command line shell for UNIX-like systems.
#
# fish includes case insensitive completions, a multiline editing
# system, a new and simplified key binding system, and a large number
# of command specific completions.
#
# Homepage: http://fishshell.com/
#
Executing install script for fish-2.6.0-x86_64-1_SBo.tgz.
Package fish-2.6.0-x86_64-1_SBo.tgz installed.

Docker Slackware: Build Fish using Slackbuild

Tracking Dependency

Sometimes (or usually for beginner), error happened while building from source. This step give me better understanding of my system.

$ ./fish.SlackBuild

...
...

configure.ac:28: installing './missing'
Makefile.am: installing './depcomp'
autoreconf: Leaving directory 'pcre2-10.22'
autoreconf: configure.ac: not using Libtool
autoreconf: configure.ac: not using Automake
autoreconf: Leaving directory '.'
checking if autoreconf needs to be run... no
checking if autoheader needs to be run... no
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in '/tmp/SBo/fish-2.6.0':
configure: error: C compiler cannot create executables
See 'config.log' for more details

You should take a look at the config log for more verbose message.

$ less /tmp/SBo/fish-2.6.0/config.log

Docker Slackware: Take a look at config.log

You can see in that figure above that we need to install as the Portable GNU Assembly. Other case we encounter a more complicated thing, such as missing file that must be search first. Here is some example.

$ find /usr/ -name crti*

$ slackpkg file-search crti.o

$ slackpkg search libxml2

This doesn’t look as so bad. Actually searching for these files is fun if you have time.

All you need is patience, and passion.

sbopkg

After manual compilation, we can continue to automatic compilation. There is this sbopkg tool to make your life easier.

Reading

Install

$ cd ~

$ wget -c --no-check-certificate https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz

$ installpkg sbopkg-0.38.1-noarch-1_wsr.tgz

Now you are ready to use sbopkg. But however you need to install rsync first, to populate repository data to local.

Update

First Thing First
$ sbopkg

$ slackpkg install rsync

$ sbopkg -r

$ sbopkg -i fish

Docker Slackware: Install Fish with sbopkg

As long as you prepare toolchain well, sbopkg is helpful.

The sbopkg Log File

$ tail -n 15 /var/log/sbopkg/sbopkg-build-log 
SUMMARY LOG
Using the SBo repository for Slackware 14.2
Queue Process:  Download, build, and install

slpkg:
  MD5SUM check for slpkg-3.2.8.tar.gz ... OK
  Building package slpkg-3.2.8-x86_64-1_SBo.tgz ... OK
  Installing package slpkg-3.2.8-x86_64-1_SBo.tgz ... OK

Docker Slackware: sbopkg build log


Using slapt-get

There also unofficial package manager for slackware that emulate Debian apt-get. slapt-get for binary, and slapt-src for source such as slackbuild.

Reading

Install slapt-get

$ wget -c  --no-check-certificate https://software.jaos.org/slackpacks/14.2-x86_64/slapt-get/slapt-get-0.10.2t-x86_64-1.tgz

$ tar -xvf slapt-get-0.10.2t-x86_64-1.tgz
$ installpkg slapt-get-0.10.2t-x86_64-1.tgz 
Verifying package slapt-get-0.10.2t-x86_64-1.tgz.
Installing package slapt-get-0.10.2t-x86_64-1.tgz:
...
Executing install script for slapt-get-0.10.2t-x86_64-1.tgz.
Package slapt-get-0.10.2t-x86_64-1.tgz installed.

Docker slapt-get: Installing

Dependencies of slapt-get

These packages are required to run slapt-get

$ slackpkg install gpgme

$ slackpkg install libassuan

$ slackpkg install libgpg

$ slackpkg install cyrus-sasl

Update

First Thing First
$ slapt-get --update
Retrieving package data [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Cached
Retrieving patch list [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Cached
Retrieving checksum list [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Cached
Retrieving checksum signature [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Cached
Verifying checksum signature [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Verified
Retrieving ChangeLog.txt [ftp://ftp.slackware.com/pub/slackware/slackware64-14.2/]...Cached
Reading Package Lists...Done
Retrieving package data [http://software.jaos.org/slackpacks/14.2-x86_64/]...Cached
Retrieving patch list [http://software.jaos.org/slackpacks/14.2-x86_64/]...Cached
Retrieving checksum list [http://software.jaos.org/slackpacks/14.2-x86_64/]...Cached
Retrieving checksum signature [http://software.jaos.org/slackpacks/14.2-x86_64/]...Cached
Verifying checksum signature [http://software.jaos.org/slackpacks/14.2-x86_64/]...No key for verification
Retrieving ChangeLog.txt [http://software.jaos.org/slackpacks/14.2-x86_64/]...Cached
Reading Package Lists...Done

Docker slapt-get: Update

Upgrade

$ slapt-get --upgrade
Reading Package Lists...Done
The following packages have been EXCLUDED:
  glibc-solibs 
0 upgraded, 0 reinstalled, 0 newly installed, 0 to remove, 1 not upgraded.

Done

Docker slapt-get: Upgrade

Install

This htop install succeed.

$ slapt-get --install htop
Reading Package Lists...Done
htop is up to date.
0 upgraded, 0 reinstalled, 0 newly installed, 0 to remove, 0 not upgraded.

Done

Docker slapt-get: Install htop

But this ncdu install failed, because ncdu comes from slackbuild.

slapt-get --install ncdu
Reading Package Lists...Done
No such package: ncdu

Docker slapt-get: Install ncdu

Show Info

slapt-get --show ncdu
Package Name: ncdu
Package Mirror: 
Package Priority: Default
Package Location: 
Package Version: 1.8-x86_64-1_SBo
Package Size: 28 K
Package Installed Size: 80 K
Package Required: 
Package Conflicts: 
Package Suggests: 
Package MD5 Sum:  
Package Description:
 ncdu (NCurses Disk Usage)

 As the name already suggests, ncdu is an NCurses version of the famous
 old 'du' unix command. It provides a fast and easy interface to your
 harddrive. Where is your disk space going? Why is your home directory
 that large? ncdu can answer those questions for you in just a matter
 of seconds!

 http://dev.yorhel.nl/ncdu/


Package Installed: yes

Docker slapt-get: Show Info ncdu

Since ncdu come from slackbuild repository that needed to be compiled first. We need another tool to manage.


Using slapt-src

In order to use slackbuild form source, we can utilize slapt-src. This time no need to wget, since we already have slapt-get.

$ slapt-get --install slapt-src
Reading Package Lists...Done
The following NEW packages will be installed:
  slapt-src 
0 upgraded, 0 reinstalled, 1 newly installed, 0 to remove, 0 not upgraded.
Need to get 48.0kB of archives.
After unpacking 220.0kB of additional disk space will be used.
1/1 Get http://software.jaos.org/slackpacks/14.2-x86_64/ slapt-src 0.3.2i-x86_64-1 [48.0kB]...Done

Preparing to install slapt-src-0.3.2i-x86_64-1
Verifying package slapt-src-0.3.2i-x86_64-1.tgz.
Installing package slapt-src-0.3.2i-x86_64-1.tgz:
PACKAGE DESCRIPTION:
# slapt-src (slapt slackbuild utility)
# slapt-src is a utility to make querying, retrieving, and building
# slackbuilds as easy as working with binary packages with slapt-get.
# 
#
Executing install script for slapt-src-0.3.2i-x86_64-1.tgz.
Package slapt-src-0.3.2i-x86_64-1.tgz installed.

Done

Docker slapt-src: Installing

Update

First Thing First

Do update first before doing nay task with any command.

$ slapt-src -u
Fetching slackbuild list from http://www.slackware.org.uk/slackbuilds.org/14.0/...Cached

Docker slapt-src: Update

Install

Now we can install ncdu from slackbuild.

sh-4.3# slapt-src --install ncdu
The following packages will be installed:
 ncdu 
Do you want to continue? [y/N] y
Fetching README...Done
Fetching ncdu.SlackBuild...Done
Fetching ncdu.info...Done
Fetching slack-desc...Done
ncdu-1.8/
ncdu-1.8/doc/
ncdu-1.8/doc/Makefile.am
ncdu-1.8/doc/Makefile.in
ncdu-1.8/doc/ncdu.1
ncdu-1.8/src/

Docker slapt-src: Install ncdu


What’s Next

Consider finish reading [ Part Three ] that cover slpkg and repository.

Thank you for reading