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.
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
$ 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.
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
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
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
$ sudo eopkg install --reinstall vlc Total size of package(s): 10.36 MB Downloading 1 / 1 Package vlc found in repository Solus vlc-18.104.22.168-147-1-x86_64.eopkg [cached] Installing 1 / 1 vlc-22.214.171.124-147-1-x86_64.eopkg [cached] Installing vlc, version 126.96.36.199, 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
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
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: 188.8.131.52, release: 147 Package Maintainer: Joey Riches <[email protected]> Release Updater: Joey Riches <[email protected]> Update Date: 2022-03-25 Rebuild against ncurses .6 ABI
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: 184.108.40.206, 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: 220.127.116.11, 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
$ 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 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
$ 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
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
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-18.104.22.168-36-1-x86_64.eopkg [cached] Installing solbuild-config-unstable, version 22.214.171.124, 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.
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.
Go to the Zsync file.
You will get the Zsync file from their official website. Fetch the Zsync file from the source using this command.
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.
Use the make command to build the Zsync package.
~/zsync $ make make build make: 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: Leaving directory '/home/maryndungu/zsync'
Confirm that Zsycn or any package you want has been built.
$ 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
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.