Solus is an operating system for x86-64 architecture based on the Linux kernel which was previously known as Evolve OS. This OS supports Budgie, MATE, GNOME, and KDE Plasma desktop environments.

Software Packaging in solus

Solus Linux applies an eopkg(Evolve OS Package) package management system which ensures the delivery of software to end-users. Eopkg is based on PiSi(Packages Installed Successfully as Intended) from Pardus which is a distribution developed with the support of the government of Turkey. Eopkg offers tools such as installing, removing packages, searching, and managing repositories. Note that Solus supports its package management with the help of other package managers such as Flatpak and Snap packages.

Applications availability

When you install Solus on your computer, it will come with a pre-installed range of software. The additional software which is not installed on default can be downloaded from the software center. Also, with the help of the .eopkg package format on Solus, you can easily, manage your packages starting from installation to deletion.

Eopkg Package Manager Usage

A package manager is a useful tool in any Linux distribution. For instance, when packages in Solus start piling up, it will become tedious and complex to handle the versions and dependencies in those packages. Hence, you will require an Eopkg package manager to assist in installing, configuring, upgrading, and removing packages in your Solus system via the use of simple commands. This guide will take you through the introduction to packaging managing in Solus and the various long and short versions of commands used.

Upgrade packages / system

It is always advisable to keep on upgrading your Solus operating system. In that case use this command:

sudo eopkg upgrade

Keep in mind that you can upgrade a specific package on your system.

sudo eopkg upgrade package_name

An Example:

$ sudo eopkg upgrade vlc
Updating repositories
Updating repository: Solus
eopkg-index.xml.xz.sha1sum     (40.0  B)100%      0.00 --/- [--:--:--] [complete]
Solus repository information is up-to-date.
No packages to upgrade.          

Installing Packages

In Solus, it is possible to install a package or packages using this command:

sudo eopkg install <package>

For example, let’s install VLC using the install or it command. When asked whether you want to continue with the installation process, type Yes and the package will be installed.

$ sudo eopkg it vlc
Following packages will be installed:
libdvbpsi  libebml  libmatroska  libmodplug  libupnp  protobuf  qt5-svg  qt5-x11extras  sdl1-image  vlc
Total size of package(s): 12.52 MB
There are extra packages due to dependencies. Do you want to continue? (yes/no) yes

Uninstalling software

In case you want to uninstall or remove specific software from your system, use the commands below.

sudo eopkg remove package_name
#or
sudo eopkg rm package_name

Let’s go ahead and uninstall the package we have already installed which in this case is VLC, using the remove or rm command.

$ sudo eopkg remove vlc
The following list of packages will be removed
in the respective order to satisfy dependencies:
vlc 
Removing package vlc
Removed vlc

Reinstalling/Remove Packages

There are certain instances where you are experiencing issues with an already installed software, reinstall it using the following commands:

sudo eopkg install --reinstall package_name

For Example:

$ sudo eopkg install --reinstall vlc
Total size of package(s): 10.36 MB
Downloading 1 / 1
Package vlc found in repository Solus
vlc-3.0.17.3-147-1-x86_64.eopkg [cached]
Installing 1 / 1
vlc-3.0.17.3-147-1-x86_64.eopkg [cached]
Installing vlc, version 3.0.17.3, release 147
Extracting the files of vlc
Installed vlc

Search package / packages

You can find out whether a package is available in the Solus repository by following this command.

sudo eopkg search package-name
#or
sudo eopkg sr package-name

When you search for a package, you get results and more details about the particular package.

$ sudo eopkg search vlc
vlc-dbginfo                    - Debug symbols for vlc
vlc                            - Open source multimedia player
libbluray-dbginfo              - Debug symbols for libbluray
vlc-devel                      - Development files for vlc
playerctl                      - mpris command-line controller and library for spotify, vlc, audacious, bmp, xmms2, and others.
libbluray-devel                - Development files for libbluray
vlc-pause-click-plugin         - Plugin for VLC that pauses/plays video on mouse click
simplescreenrecorder-dbginfo   - Debug symbols for simplescreenrecorder
streamlink                     - Extracts streams from various services and pipes them into a video player of choice
streamlink-twitch-gui          - Browse Twitch.tv and watch streams in your videoplayer of choice
simplescreenrecorder           - A screen recorder for Linux
libbluray                      - Library for Blu-Ray disc playback
vlc-pause-click-plugin-dbginfo - Debug symbols for vlc-pause-click-plugin

List Repositories

You can get the list of repositories in your Solus system by applying this command.

sudo eopkg list-repo
#or
sudo eopkg lr

When we use the above commands, you will see the list of repos as the example below indicates.

 $ sudo eopkg list-repo
Solus [active]
   https://mirrors.rit.edu/solus/packages/shannon/eopkg-index.xml.xz

List packages available in the repositories

In your repository, there are a couple of packages. You view the list of all the available packages by using this command.

sudo eopkg la

These are some of the available packages in the Solus Repository.

$ sudo eopkg la
dbus-32bit-devel                            - Development files for 32-bit dbus 
dbus-dbginfo                                - Debug symbols for dbus 
dbus-devel                                  - Development files for dbus 
dbus-glib                                   - D-Bus GLib Bindings 
dbus-glib-32bit                             - 32-bit libraries for dbus-glib 
dbus-glib-32bit-dbginfo                     - 32-bit debug symbols for dbus-glib 
dbus-glib-32bit-devel                       - Development files for 32-bit dbus-glib 
dbus-glib-dbginfo                           - Debug symbols for dbus-glib 
dbus-glib-devel                             - Development files for dbus-glib 
dbus-glib-docs                              - Documentation for dbus-glib 
dbus-launch                                 - X11 dbus-launch helper 
dcfldd                                      - dcfldd - enhanced version of dd or forensics and security 
dcfldd-dbginfo                              - Debug symbols for dcfldd 
dconf                                       - GNOME Configuration Database 
dconf-32bit                                 - 32-bit libraries for dconf 
dconf-32bit-dbginfo                         - 32-bit debug symbols for dconf 
dconf-32bit-devel                           - Development files for 32-bit dconf 

List Newest Packages in Repos

When you use this command on your terminal, it will display the newest package on the repositories.

sudo eopkg list-newest
#or
sudo eopkg ln

List Installed Packages

With the following commands, Solus will print a list of all the installed packages.

eopkg list-installed
#or
eopkg li

Here is an example.

$ eopkg list-installed
aa-lsm-hook                             - AppArmor system integration
aalib                                   - AAlib is an portable ascii art GFX library
abi-wizard                              - Tool for generating ABI reports for libraries and binaries.
accountsservice                         - D-Bus service for accessing user accounts and information
acl                                     - Access control list shared library
adwaita-icon-theme                      - The Adwaita Icon Theme package contains an assortment of non-scalable icons of different sizes and themes.
alsa-firmware                           - ALSA Firmware for certain sound cards
alsa-lib                                - The ALSA Sound Interface
alsa-plugins                            - Plugins for various sound servers

Update Repository

Keep your repository up-to-date by applying these commands.

sudo eopkg ur

In that case, the repository or repositories will be updated.

 $ sudo eopkg ur
Updating repository: Solus
eopkg-index.xml.xz.sha1sum     (40.0  B)100%      0.00 --/- [--:--:--] [complete]
Solus repository information is up-to-date.

Get Package Information

In case you want to get information about the package owner and release, apply these commands.

sudo eopkg blame package

Let’s go ahead and get VLC package information.

$ sudo eopkg blame vlc
Name: vlc, version: 3.0.17.3, release: 147
Package Maintainer: Joey Riches <[email protected]>
Release Updater: Joey Riches <[email protected]>
Update Date: 2022-03-25

Rebuild against ncurses .6 ABI

Rebuild Database

Due to the issues that may arise with the system databases, you might want to rebuild the databases allowing the system to be opened cleanly.

sudo eopkg rebuild-db
#or
sudo eopkg rbd

Use the commands above and type yes to continue with the process.

$ sudo eopkg rebuild-db
Rebuild eopkg databases? (yes/no)

Display Package Info

If you want some additional information on a particular package such as version, installation, or description, Solus makes it possible to do so.

sudo eopkg info package-name

Using the above command, you can see more information on the VLC package or any other package.

$ sudo eopkg info vlc
Installed package:
Name                : vlc, version: 3.0.17.3, release: 147
Summary             : Open source multimedia player
Description         : VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming
                      protocols.
Licenses            : GPL-2.0-or-later, LGPL-2.1-or-later
Component           : multimedia.video
Dependencies        : libdc1394 harfbuzz libvpx libstdc++ libdvbpsi librsvg libxcb x264 x265 gstreamer-1.0-plugins-base libglvnd qt5-svg libva systemd samba xcb-util-keysyms gstreamer-1.0
                      chromaprint libgnutls qt5-x11extras fontconfig mpg123 gdk-pixbuf libxpm libxinerama libkate libplacebo ncurses libupnp libmatroska libbluray taglib libnotify libgtk-3
                      liba52dec libmtp libtheora openssl-11 ffmpeg libcairo faad dbus zlib libmpeg2 libsoxr libmodplug wayland libvorbis avahi libdvdread libxml2 libspeex fluidsynth
                      libsamplerate libgcc sdl1-image libebml libflac alsa-lib glibc libdvdnav libgpg-error lua libsecret twolame freetype2 libpng libxext protobuf libcddb libssh2 libogg
                      libgcrypt libshout sdl1 qt5-base dav1d fribidi libjpeg-turbo libx11 pulseaudio libarchive srt microdns glib2 opus libass 
Distribution        : Solus, Dist. Release: 1
Architecture        : x86_64, Installed Size: 57.55 MB
Reverse Dependencies: 

Package found in Solus repository:
Name                : vlc, version: 3.0.17.3, release: 147
Summary             : Open source multimedia player
Description         : VLC is a free and open source cross-platform multimedia player and framework that plays most multimedia files as well as DVDs, Audio CDs, VCDs, and various streaming
                      protocols.
Licenses            : GPL-2.0-or-later, LGPL-2.1-or-later
Component           : multimedia.video
Dependencies        : libdc1394 harfbuzz libvpx libstdc++ libdvbpsi librsvg libxcb x264 x265 gstreamer-1.0-plugins-base 

Remove Eopkg Packages

It is possible to get rid of a package. See the example below.

sudo eopkg remove package
#or
sudo eopkg rm package

Example:

$ sudo eopkg remove vlc
The following list of packages will be removed
in the respective order to satisfy dependencies:
vlc 
Removing package vlc
Removed vlc

Verify Installation

Verify the integrity of installed packages by using the check command.

$ sudo eopkg check
Checking all installed packages

Checking integrity of appstream-glib                             OK
Checking integrity of libsoup3                                   OK
Checking integrity of gd                                         OK
Checking integrity of gstreamer-1.0-plugins-good                 OK
Checking integrity of gnome-themes-extra                         OK
Checking integrity of gdbm                                       OK
Checking integrity of gstreamer-1.0-plugins-base                 OK
Checking integrity of gpgme                                      OK
Checking integrity of libice                                     OK
Checking integrity of libsndfile                                 OK
Checking integrity of libdvdcss                                  OK
Checking integrity of libvisio                                   OK
Checking integrity of xset                                     

Clean Stale Locks

In Solus, this is the command you use to clean stale locks.

sudo eopkg clean 

Delete Cache Files

To remove the existing cache files or data, apply the command below.

sudo eopkg delete-cache
#or
sudo eopkg dc

Results sample:

$ sudo eopkg dc
Cleaning package cache /var/cache/eopkg/packages...
Cleaning source archive cache /var/cache/eopkg/archives...
Cleaning temporary directory /var/eopkg...
Removing cache file /var/cache/eopkg/packagedb.cache...
Removing cache file /var/cache/eopkg/sourcedb.cache...
Removing cache file /var/cache/eopkg/groupdb.cache...
Removing cache file /var/cache/eopkg/installdb.cache...
Removing cache file /var/cache/eopkg/componentdb.cache...

Install Component Packages

Keep in mind that you can install components in your Solus system using these commands.

sudo eopkg it -c component

For example, we can install the system.devel component as shown below.

$ sudo eopkg it -c system.devel
Following packages will be installed:
abi-wizard                   autoconf    automake        bash-completion-devel  binutils         bison               catbox          cmake          dbus-devel        diffstat       diffutils 
expat-devel                  fakeroot    file-devel 

Also, we can remove the component we have installed as shown below.

sudo eopkg rm -c system.devel

 List available components

To check on the available components on your Solus Operating System, use this command.

sudo eopkg lc

Below is a sample of a list with components.

$  sudo eopkg lc
database - Database clients and servers 
desktop - Desktop specific software 
desktop.budgie - Budgie Desktop 
desktop.core - Core components for desktop systems 
desktop.font - Fonts to enhance the desktop 
desktop.gnome - GNOME Desktop 
desktop.gnome.core - GNOME Desktop - Core System 
desktop.gnome.doc - Documentation tools for GNOME 
desktop.gtk - GTK Runtime Libraries 
desktop.i3 - i3 Desktop 
desktop.kde - KDE Desktop 
desktop.kde.core - KDE Desktop - Core System 
desktop.library - Common libraries required for a desktop 
desktop.mate - MATE Desktop 
desktop.multimedia - General Multimedia Software 
desktop.qt - Qt Runtime Libraries 
desktop.theme - Themes to enhance the desktop 
editor - Simple and advanced text editors 
games - Main games 
games.action - Action Games 
games.arcade - Arcade Games 

Repository Managing in Solus

Solus eopkg package manager allows us to use multiple repositories on our system.

Add a Repository

In this case, we will add a Local repository in Solus. Start by installing the local profile.

sudo eopkg install solbuild-config-local-unstable

Since the solbuild-config-local-unstable package lives in /var/lib/solbuild/local, refresh the index.

sudo eopkg index --skip-signing /var/lib/solbuild/local/ --output /var/lib/solbuild/local/eopkg-index.xml

Continue by adding your repository. Here are the commands you should apply.

sudo eopkg add-repo Name Url
#or
sudo eopkg ar Name Url

In our case, let’s add a Local repository.

$ sudo eopkg ar Local /var/lib/solbuild/local/eopkg-index.xml.xz
Repo Local added to system.
Updating repository: Local
Package database updated.

You can view the list of available repos.

 $ eopkg lr
Solus [active]
   https://mirrors.rit.edu/solus/packages/shannon/eopkg-index.xml.xz
Local [active]
   /var/lib/solbuild/local/eopkg-index.xml.xz

Remove a Repository

Note that it is possible to remove a repository from your Solus system.

sudo eopkg remove-repo Name

For instance, we can remove the Local repo we just added.

$ sudo eopkg remove-repo Local
Repo Local removed from system.

Enable a Repository

We can enable a repository using the following command.

sudo eopkg enable-repo Name

An Example includes:

$ sudo eopkg enable-repo Local

Disable a Repository

To stop a repository from functioning, we use this:

sudo eopkg disable-repo Name

For instance:

sudo eopkg disable-repo Local

Build eopkg Packages

Solus provides commands that will help you build and run packages. The process of building packages is centered around the Solbuild program. Let’s start by installing a component by the name system.devel that will assist in creating packages.

sudo eopkg it -c system.devel

Continue by installing Solbuild itself.

sudo eopkg install git solbuild arcanist solbuild-config-unstable

Results after installing solbuild.

solbuild-config-unstable-1.5.1.0-36-1-x86_64.eopkg [cached]
Installing solbuild-config-unstable, version 1.5.1.0, release 36
Extracting the files of solbuild-config-unstable
Installed solbuild-config-unstable

Initialize Solbuild to ensure its functioning is excellent.

sudo solbuild init

Here are the results:

$ sudo solbuild init
167.71 MiB / 167.71 MiB [-----------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 25.93 MiB p/s
 ⮞  Profile successfully initialised

Continue by updating Solbuild

sudo solbuild update

Sample results after updating Solbuild.

$ sudo solbuild update
Updating repositories
Updating repository: Solus
eopkg-index.xml.xz.sha1sum     (40.0  B)100%      1.15 MB/s [00:00:00] [complete]
eopkg-index.xml.xz             (3.1 MB)100%      4.22 MB/s [00:00:00] [complete]
Package database updated.
Safety switch forces the installation of following packages:
json-c  openssl-11

Set up Common

Now set up common which is a set of scripts that allows you to easily manage, build, check, and publish packages.

git clone https://dev.getsol.us/source/common.git

Results should look like this:

$ git clone https://dev.getsol.us/source/common.git
Cloning into 'common'...
remote: Enumerating objects: 1982, done.
remote: Counting objects: 100% (1982/1982), done.
remote: Compressing objects: 100% (1333/1333), done.
remote: Total 1982 (delta 1288), reused 977 (delta 641)
Receiving objects: 100% (1982/1982), 38.78 MiB | 18.74 MiB/s, done.
Resolving deltas: 100% (1288/1288), done.

Use these commands one after the other to set up symlinks.

ln -sv common/Makefile.common .
ln -sv common/Makefile.toplevel Makefile
ln -sv common/Makefile.iso .

Set up a package

File your name and email address on this command.

Example:

git config --global user.name"Mary"
git config --global user.email [email protected]

Set Up a packager file in the home directory.

mkdir -p ~/.solus

Build or Make Packages

Now your system is set for building packages. Let’s build the Zsync package.

Start by making a file for Zsync.

mkdir zsync

Go to the Zsync file.

cd zsync

You will get the Zsync file from their official website. Fetch the Zsync file from the source using this command.

../common/Scripts/yauto.py http://zsync.moria.org.uk/download/zsync-0.6.2.tar.bz2

Inside the same folder, build or run this:

echo "include ../Makefile.common" > Makefile

Open the Zsync package file and edit it. In our case, we can remove the Builddeps section in the Zsync .yml file and save it on the save icon.

gedit package.yml

Use the make command to build the Zsync package.

 ~/zsync $ make
make build
make[1]: Entering directory '/home/maryndungu/zsync'
sudo solbuild build package.yml -p unstable-x86_64;

The package will be built successfully.

[Build] install successful
[Examine] Examining packages
[Stripped] /usr/bin/zsyncmake
[Stripped] /usr/bin/zsync
[Dependency] /usr/bin/zsync adds dependency on libc.so.6 from glibc
[Dependency] /usr/bin/zsyncmake adds dependency on libm.so.6 from glibc
[Package] Creating /home/build/work/zsync-0.6.2-1-1-x86_64.eopkg ...
[Package] Building complete
 ⮞  Building succeeded
make[1]: Leaving directory '/home/maryndungu/zsync'

Confirm that Zsycn or any package you want has been built.

lseopkg file_name.eopkg

Results:

$ lseopkg zsync-0.6.2-1-1-x86_64.eopkg
/usr/bin/zsync
/usr/bin/zsyncmake
/usr/share/doc/zsync/COPYING
/usr/share/doc/zsync/README
/usr/share/man/man1/zsync.1
/usr/share/man/man1/zsyncmake.1

Conclusion

Solus is managed with a lot of eopkg commands. We have covered most of them and those that you will interact with will daily. Also, you can find more commands by using the “eopkg help” command. I hope you have enjoyed the guide which consists of commands you will apply to manage your Solus OS. Note that these commands consist of both long and short-form versions. In case you have any queries, feel free to ask.

More Guides:

LEAVE A REPLY

Please enter your comment!
Please enter your name here