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:
- How To Install RealVNC Server and Viewer on Solus
- How To Install and Use Wine 7 on Solus Linux
- Install KDE Desktop Environment on Solus Linux