Title : How to use Slackware community slackbuilds
Author: Solène
Date  : 13 November 2020
Tags  : slackware

In today article I will explain how to use
[Slackbuilds](https://slackbuilds.org/) repository on a
[Slackware](https://www.slackware.com) current system.

You can read the [Documentation](https://slackbuilds.org/howto/) of
slackbuilds for more information.

We will first install **sbotools** package which make the use of
slackbuilds a lot easier: like a proper ports tree. As it's preferable
to let the tools create the repository, we will install them without
downloading the whole slackbuild repository.

Download the slackbuild
[from this page](https://slackbuilds.org/repository/14.2/system/sbotools/),
extract it and cd into the new directory.

    $ tar xzvf sbotools.tar.gz
    $ cd sbotools
    $ . ./sbotools.info
    $ wget $DOWNLOAD
    $ md5sum $(basename $DOWNLOAD)
    $ echo $MD5SUM

The two md5 string should match.

Now, run the build as root

    $ sudo sh sbotools.SlackBuild
    [lot of text]
    Slackware package /tmp/sbotools-2.7-noarch-1_SBo.tgz created.

Now you can install the created package using

    $ sudo /sbin/installpkg /tmp/sbotools-2.7-noarch-1_SBo.tgz

We now have a few programs to use the slackbuilds repository, they all
have their own man page:

+ sbocheck
+ sboclean
+ sboconfig
+ sbofind
+ sboinstall
+ sboremove
+ sbosnap
+ sboupgrade


# Creating the repository

As root, run the following command:

    # sbosnap fetch
    Pulling SlackBuilds tree...
    Cloning into '/usr/sbo/repo'...
    remote: Enumerating objects: 59, done.
    remote: Counting objects: 100% (59/59), done.
    remote: Compressing objects: 100% (59/59), done.
    remote: Total 485454 (delta 31), reused 14 (delta 0), pack-reused 485395
    Receiving objects: 100% (485454/485454), 134.37 MiB | 1.20 MiB/s, done.
    Resolving deltas: 100% (337079/337079), done.
    Updating files: 100% (39863/39863), done.

The slackbuilds tree is now installed under `/usr/sbo/repo`.  This
could be configured before using `sboconfig -s /home/solene` which
would create a `/home/solene/repo`.


# Searching a port

One can use the command `sbofind` to look for a port:

    # sbofind nethack
    SBo:    nethack 3.6.6
    Path:   /usr/sbo/repo/games/nethack
    
    SBo:    unnethack 5.2.0
    Path:   /usr/sbo/repo/games/unnethack


# Install a port

We will install the previously searched port: *nethack*

    # sboinstall nethack
    Nethack is a single-player dungeon exploration game. The emphasis is
    on discovering the detail of the dungeon. Each game presents a
    different landscape - the random number generator provides an
    essentially unlimited number of variations of the dungeon and its
    denizens to be discovered by the player in one of a number of
    characters: you can pick your race, your role, and your gender.
    
    User accounts that play this need to be members of the "games" group.
    
    Proceed with nethack? [y] y
    nethack added to install queue.

    Install queue: nethack

    Are you sure you wish to continue? [y] y
    [... compilation ... ]
    +==============================================================================
    | Installing new package /tmp/nethack-3.6.6-x86_64-1_SBo.tgz
    +==============================================================================
    
    Verifying package nethack-3.6.6-x86_64-1_SBo.tgz.
    Installing package nethack-3.6.6-x86_64-1_SBo.tgz:
    PACKAGE DESCRIPTION:
    # nethack (roguelike game)
    #
    # Nethack is a single-player dungeon exploration game. The emphasis is
    # on discovering the detail of the dungeon. Each game presents a
    # different landscape - the random number generator provides an
    # essentially unlimited number of variations of the dungeon and its
    # denizens to be discovered by the player in one of a number of
    # characters: you can pick your race, your role, and your gender.
    #
    # http://nethack.org
    #
    Package nethack-3.6.6-x86_64-1_SBo.tgz installed.
    Cleaning for nethack-3.6.6...

Done, nethack is installed! *sboinstall* manages dependencies and if
required will ask you for every required other slackbuilds to install
to add to the queue before starting compiling.


# Example: getting flatpak

[Flatpak](https://www.flatpak.org) is a software distribution system
for linux distributions, mainly to provide desktop software that could
be complicated to package like Libreoffice, GIMP, Microsoft Teams
etc... Using Slackware, this can be a good source of software.

To use flatpak and the official *flathub* repository, we need to
install flatpak first. It's now as easy as:

    # sboinstall flatpak

And answer yes to questions (you will be asked to agree for every
dependency required, there are a few of them), if you don't want to
answer, you can use `-r` flag to automatically accept.

We need to add the official repository **flathub** using the
following command:

    # flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

And now you can browse flatpak programs on [flathub](https://flathub.org/home)

For example, if you want to install
[VLC](https://flathub.org/apps/details/org.videolan.VLC)

    # flatpak install flathub org.videolan.VLC

You will be prompted about all the dependencies required in order to
get VLC installed, those dependencies are some system parts that will
be shared across all the flatpak software in order to efficiently use
disk space. For VLC, some kde components will be required and also
Xorg GL/VAAPI/openh264 environments, flatpak manage all this and you
don't have to worry about this.

**The file `/usr/sbo/repo/desktop/flatpak/README` explains quirks of
flatpak on Slackware, like pulseaudio instructions or the polkit
policy on slackware not allowing your user to use the global flatpak
install command.**

I found the following `~/.xinitrc` to enable dbus and pulseaudio for
me, so flatpak programs work.

    start-pulseaudio-x11
    eval $(pax11publish -i)
    dbus-run-session fvwm2