Sisyphus

From Redcore Linux Project Wiki
Jump to navigationJump to search

Sisyphus is one of the package managers available in Redcore Linux, alongside Portage and Flatpak. It is the recommended package manager to use, and it was developed by Redcore Linux developers for Redcore Linux. In it's essence Sisyphus is a simple wrapper around portage which provides an apt-get/yum-alike interface to it, to assist newcomer people transitioning from Debian/Redhat-based systems to Gentoo.

Note: Not every aspect of Portage is wrapped or exposed. Sisyphus is under active development, so things may be added, changed or removed in the future.

Development

Sisyphus is written in python3 (backend and cli frontend) and PyQt5 (gui frontend) and is divided in 3 parts :

 * A backend
 * A cli client
 * A gui client

Backend

The backend is fairly simple and is comprised of a collection of python3 function libraries which wrap around parts of Portage and implement Sisyphus specific aspects (branches, database recovery, advanced package search and filtering). To avoid potential breakages it does NOT use Portage API and, in order to stay compatible with Portage, the wrapped parts follow it closely, and use identical methods. Some Portage methods have been replaced over time with Sisyphus specific methods (binary package downloader) while still maintaining compatibility. Am experimental method to install binary packages is under development, but it is currently unfortunately stalled due to lack of time (early tests show a 2000% speed increase, while still maintaining Portage compatibility).

CLI client

  • Usage :
root # sisyphus [OPTIONS] COMMAND [ARGS]
  • Options :
--install-completion: Install completion for the current shell.
--show-completion: Show completion for the current shell, to copy it or customize the installation.
--help: Show this message and exit.
  • Commands :
autoremove: Uninstall packages that are no longer needed.
branch: Pull the selected branch of the Portage tree,...
install: Install binary and/or ebuild(source)...
mirror: List/Set the active binhost (binary repository) mirror.
rescue: Resurrect Sisyphus's package database if lost...
search: Search for binary and/or ebuild (source)...
spmsync: Sync Sisyphus's package database with...
sysinfo: Display information about installed core...
uninstall: Uninstall packages *SAFELY* by checking for...
update: Update the Portage tree, the Redcore...
upgrade: Upgrade the system using binary and/or ebuild...
  • Help :
root # sisyphus --help

Uninstall orphan packages

Uninstall packages that are no longer needed. When you uninstall a package, it's dependencies will become orphans if nothing else requires them. In addition, a package may no longer depend on another one, so that other package becomes orphan as well if nothing else requires it. Use this command to check the whole dependency chain for such packages, and uninstall them.

Usage

root # sisyphus autoremove [OPTIONS]

Options

--help : Show this message and exit.

Help

root # sisyphus autoremove --help

Examples

root # sisyphus autoremove

Portage equivalent

root # emerge --depclean --verbose --ask

Switch branches

Pull the selected branch of the Portage tree, Redcore overlay and Portage configs. The remote can be selected by using the --remote option.

'BRANCH' can be one of the following : master, next. 'REMOTE' can be one of the following : gitlab, pagure (default is pagure).

Usage

root # sisyphus branch [OPTIONS] [master|next]

Options

-r, --remote [gitlab|pagure]
-help: Show this message and exit.

Help

root # sisyphus branch --help

Examples

root # sisyphus branch master --remote=gitlab (pull the branch 'master' from gitlab.com)
root # sisyphus branch next --remote=next (pull the branch 'next' from pagure.io)

Note

Once you changed the branch, you must pair it with the correct binhost (binary repository).

Examples

Branch 'master' must be paired with the stable binhost (binary repository) (odd numbers in 'sisyphus mirror list').

root # sisyphus mirror set 1
root # sisyphus mirror set 5

Branch 'next' must be paired with the testing binhost (binary repository) (even numbers in 'sisyphus mirror list').

root # sisyphus mirror set 4
root # sisyphus mirror set 8

Sisyphus will refuse to install any package or upgrade the system if the branch and the binhost are not paired, as various package configuration options may be different between branches. This is to avoid user confusion, potential downgrades or system breakages.

sisyphus install google-chrome
fetching updates..       
Current branch: 'next' (testing)
Current binhost: 'http://mirrors.redcorelinux.org/redcorelinux/packages/' (stable)
Invalid branch - binhost pairing; Use 'sisyphus branch --help' for help; Quitting.

Portage

none, you must change branches manually

Warning

Portage will bypass the protections in Sisyphus, and offer you a solution. Most of the time this solution will include a recompilation or downgrade of packages with different configuration options between branches.

Install packages

Install binary and/or ebuild(source) packages. By default, only binary packages will be installed. Use the --ebuild option to install ebuild(source) packages.

Usage

root # sisyphus install [OPTIONS] PACKAGE

Options

-e, --ebuild
--help: Show this message and exit

Help

root # sisyphus install --help

Examples

root # sisyphus install pidgin

Will install pidgin binary package (if available); if there is none, but the ebuild(source) package for pidgin is found, it will stop and suggest the --ebuild option.

root # sisyphus install pidgin

Source package(s) found in the mix; Use 'sisyphus install pidgin --ebuild'; Quitting.
root # sisyphus install pidgin --ebuild

These are the source packages that would be merged, in order:

net-libs/gssdp-1.2.3  dev-libs/libgnt-2.14.1  net-libs/libsrtp-2.3.0-r1  media-plugins/gst-plugins-srtp-1.16.3  net-libs/gupnp-1.2.7  net-libs/gupnp-igd-0.2.5-r10  net-libs/libnice-0.1.15  media-plugins/gst-plugins-libnice-0.1.15-r100  net-libs/farstream-0.2.9  net-im/pidgin-2.14.5

Total: 10 source package(s)

Would you like to proceed? [y/N] 

Will ask Portage to compile and install pidgin and its dependencies from source.

Note

The --ebuild option will preffer to reuse binary packages(if available) to satisfy the dependencies for the ebuild(source) package, speeding up the installation. You can use the --ebuild option all the time even if you don't want to install any ebuild(source) packages; It will fall back to binary packages only (if found).

Portage

root # emerge --getbinpkgonly --verbose --ask pidgin (install pidgin binary package, fail if not found, even if the ebuild(source) package is found)
root # emerge --getbinpkg --verbose --ask pidgin (install pidgin binary package if found, compile it from source if not)
root # emerge --verbose --ask pidgin (compile pidgin from source, ignoring the binary package)

Sisyphus wraps Portage methods in a slightly different way. It doesn't fail if the binary package is not found, but suggests the '--ebuild' option if the ebuild(source) package is found. If you would rather prefer to use Portage all the time :

root # emerge --sync
root # emerge --getbinpkg --verbose --ask --with-bdeps=y --rebuilt-binaries PKGNAME
root # sisyphus spmsync

will achieve the same result as if running

root # sisyphus install PKGNAME --ebuild

all the time. Portage --getbinpkg option will preffer to reuse binary packages(if available) to satisfy the dependencies for the ebuild(source) package, speeding up the installation.

Configure package mirrors

List/Set the active binhost (binary repository) mirror.

Usage

root # sisyphus mirror [OPTIONS] COMMAND [ARGS]

Options

--help: Show this message and exit.

Commands

list: List available binary package repository...
set: Change the binary package repository to the...

Help

root # sisyphus mirror --help

List mirrors

List available binary package repository mirrors (the active one is marked with *).

Usage

root # sisyphus mirror list [OPTIONS]

Options

--help: Show this message and exit.

Help

root # sisyphus mirror list --help

Examples

root # sisyphus mirror list
1   http://mirrors.redcorelinux.org/redcorelinux/packages/
2 * http://mirrors.redcorelinux.org/redcorelinux/packages-next/
3   http://mirror.math.princeton.edu/pub/redcorelinux/packages/
4   http://mirror.math.princeton.edu/pub/redcorelinux/packages-next/
5   http://mirror.alpix.eu/redcorelinux/packages/
6   http://mirror.alpix.eu/redcorelinux/packages-next/
7   http://mirror.yandex.ru/mirrors/redcorelinux/packages/
8   http://mirror.yandex.ru/mirrors/redcorelinux/packages-next/

Portage

root # emerge --info --verbose|grep BINHOST
PORTAGE_BINHOST="http://mirrors.redcorelinux.org/redcorelinux/packages-next/"

Note

Support for multiple binary repositories is somewhat incomplete, only one can be activate at a time, and Portage only lists the active one. Read more at https://wiki.gentoo.org/wiki/Binary_package_guide

Switch mirrors

Change the binary package repository to the selected mirror.

Usage

sisyphus mirror set [OPTIONS] INDEX

Options

--help: Show this message and exit.

Help

root # sisyphus mirror set --help

Examples

root # sisyphus mirror set 6
root # sisyphus mirror list
1   http://mirrors.redcorelinux.org/redcorelinux/packages/
2   http://mirrors.redcorelinux.org/redcorelinux/packages-next/
3   http://mirror.math.princeton.edu/pub/redcorelinux/packages/
4   http://mirror.math.princeton.edu/pub/redcorelinux/packages-next/
5   http://mirror.alpix.eu/redcorelinux/packages/
6 * http://mirror.alpix.eu/redcorelinux/packages-next/
7   http://mirror.yandex.ru/mirrors/redcorelinux/packages/
8   http://mirror.yandex.ru/mirrors/redcorelinux/packages-next/
root # sisyphus mirror set 2
root # sisyphus mirror list
1   http://mirrors.redcorelinux.org/redcorelinux/packages/
2 * http://mirrors.redcorelinux.org/redcorelinux/packages-next/
3   http://mirror.math.princeton.edu/pub/redcorelinux/packages/
4   http://mirror.math.princeton.edu/pub/redcorelinux/packages-next/
5   http://mirror.alpix.eu/redcorelinux/packages/
6   http://mirror.alpix.eu/redcorelinux/packages-next/
7   http://mirror.yandex.ru/mirrors/redcorelinux/packages/
8   http://mirror.yandex.ru/mirrors/redcorelinux/packages-next/

Portage

Read https://wiki.gentoo.org/wiki/Binary_package_guide to learn how to set up a binary package repository on Gentoo Linux systems and how to configure your systems to use it.

Recover database

Resurrect Sisyphus's package database if lost or corrupted. If for some reason Sisyphus's package database is lost or corrupted, it can be resurrected using Portage's package database. If Portage's package database is corrupted (in this case you're screwed anyway :D), only a partial resurrection will be possible. If Portage's package database is intact, full resurrection will be possible.

Usage

root # sisyphus rescue [OPTIONS]

Options

--help: Show this message and exit.

Help

root # sisyphus rescue --help

Examples

root # sisyphus rescue

Search packages

Search for binary and/or ebuild (source) packages.

Usage

root # sisyphus search [OPTIONS] PACKAGE

Options

-d, --description TEXT: Match description.
-f, --filter [all|alien|installed|available|upgradeable]: [default: all]
-q: Short (one line) output.
-e, --ebuild: Search in ebuilds (slower).
--help: Show this message and exit.

Help

root # sisyphus search --help

By default will search for binary packages, using internal database. The search term can be provided also in the category/name format.

Examples

root # sisyphus search openbox

OR

root # sisyphus search x11-wm/openbox

Wildcards

Using * and ? wildcards is supported. An empty string will match everything (similar to *). To search for all packages belonging to a category, use '*' or leave the name empty.

Examples
root # sisyphus search x11-wm/

OR

root # sisyphus search x11-wm/*

Description search

In addition, search can be performed by package description, using the -d (--description) option.

Examples
root # sisyphus search x11/open -d 'window manager'

(use single or double quotes when the description contains spaces)

Search filtering

Use the -f (--filter) option to select only packages of interest. Possible values:

all (default) - search the entire database
alien - search for installed packages but not available (this filter can match packages installed from ebuilds or packages no longer maintained as binaries)
installed - search in all installed packages
available - search for available packages but not installed
upgradeable - search for installed packages where installed version is different from available version
Examples
root # sisyphus search "" -f installed 

Since no search term was provided, it will display all installed packages.

root # sisyphus search google-chrome -f all
Searching all packages ... 

*  www-client/google-chrome
       Installed version: None
       Latest available version: 91.0.4472.114
       Description: The web browser from Google

Found 1 matching package(s) ...

Search the entire database for Google Chrome and display the results.

root # sisyphus search pidgin -f all
Searching all packages ... 

No package found!
Use the '--ebuild' option to search for source packages!

Pidgin was not found in the database, so there is no binary package for it in the repository. However Sisyphus suggests to use the '--ebuild' option.

Ebuild search

To search for all (including source) packages, use the --ebuild option. This is slower since will perform an 'emerge --search'. With this option, more than one package can be provided as search term.'-d', '-f' and '-q' (quiet) options are ignored in this mode.

Examples
root # sisyphus search pidgin --ebuild

Local copy of remote index is up-to-date and will be used.
 
[ Results for search key : pidgin ]
Searching...

*  net-im/pidgin
     Latest version available: 2.14.5
     Latest version installed: [ Not Installed ]
     Size of files: 8,494 KiB
     Homepage:      https://pidgin.im/
     Description:   GTK Instant Messenger client
     License:       GPL-2

*  x11-plugins/pidgin-birthday-reminder
     Latest version available: 1.7-r1
     Latest version installed: [ Not Installed ]
     Size of files: 460 KiB
     Homepage:      https://launchpad.net/pidgin-birthday-reminder
     Description:   Plugin for Pidgin that reminds you of your buddies birthdays
     License:       GPL-2

*  x11-plugins/pidgin-bot-sentry
     Latest version available: 1.3.0
     Latest version installed: [ Not Installed ]
     Size of files: 275 KiB
     Homepage:      http://pidgin-bs.sourceforge.net/
     Description:   Bot Sentry is a Pidgin plugin to prevent Instant Message (IM) spam
     License:       GPL-2

*  x11-plugins/pidgin-encryption
     Latest version available: 3.1-r1
     Latest version installed: [ Not Installed ]
     Size of files: 590 KiB
     Homepage:      http://pidgin-encrypt.sourceforge.net/
     Description:   Pidgin IM Encryption PlugIn
     License:       GPL-2

*  x11-plugins/pidgin-extprefs
     Latest version available: 0.7-r1
     Latest version installed: [ Not Installed ]
     Size of files: 325 KiB
     Homepage:      http://gaim-extprefs.sourceforge.net
     Description:   Extra preferences that are desired but are not worthy for Pidgin
     License:       GPL-2

*  x11-plugins/pidgin-funyahoo-plusplus [ Masked ]
     Latest version available: 9999
     Latest version installed: [ Not Installed ]
     Size of files: 0 KiB
     Homepage:      https://github.com/EionRobb/funyahoo-plusplus
     Description:   Yahoo! (2016) Protocol Plugin for Pidgin
     License:       GPL-3+

*  x11-plugins/pidgin-gnome-keyring
     Latest version available: 2.0-r1
     Latest version installed: [ Not Installed ]
     Size of files: 12 KiB
     Homepage:      https://github.com/aebrahim/pidgin-gnome-keyring
     Description:   Integrates Pidgin (and libpurple) with the system keyring
     License:       GPL-2+

*  x11-plugins/pidgin-gpg
     Latest version available: 0.9.3
     Latest version installed: [ Not Installed ]
     Size of files: 788 KiB
     Homepage:      https://github.com/Draghtnod/Pidgin-GPG
     Description:   Pidgin GPG/OpenPGP (XEP-0027) plugin
     License:       GPL-3

*  x11-plugins/pidgin-hotkeys
     Latest version available: 0.2.4
     Latest version installed: [ Not Installed ]
     Size of files: 334 KiB
     Homepage:      http://pidgin-hotkeys.sourceforge.net/
     Description:   Pidgin plugin to define global hotkeys for various actions
     License:       GPL-2

*  x11-plugins/pidgin-indicator
     Latest version available: 1.0.1
     Latest version installed: [ Not Installed ]
     Size of files: 304 KiB
     Homepage:      https://github.com/philipl/pidgin-indicator
     Description:   AppIndicator/KStatusNotifierItem plugin for Pidgin
     License:       GPL-2+

*  x11-plugins/pidgin-latex
     Latest version available: 1.5.0
     Latest version installed: [ Not Installed ]
     Size of files: 18 KiB
     Homepage:      https://sourceforge.net/projects/pidgin-latex/
     Description:   Pidgin plugin that renders latex formulae
     License:       GPL-2

*  x11-plugins/pidgin-led-notification
     Latest version available: 0.1
     Latest version installed: [ Not Installed ]
     Size of files: 9 KiB
     Homepage:      https://sites.google.com/site/simohmattila/led-notification
     Description:   Pidgin plugin to notify by writing user defined strings to (led control) files
     License:       GPL-2

*  x11-plugins/pidgin-libnotify
     Latest version available: 0.14-r1
     Latest version installed: [ Not Installed ]
     Size of files: 314 KiB
     Homepage:      http://gaim-libnotify.sourceforge.net/
     Description:   pidgin-libnotify provides popups for pidgin via a libnotify interface
     License:       GPL-2

*  x11-plugins/pidgin-mbpurple
     Latest version available: 0.3.0-r2
     Latest version installed: [ Not Installed ]
     Size of files: 82 KiB
     Homepage:      https://code.google.com/p/microblog-purple/
     Description:   Pidgin plug-in supporting microblog services like Twitter or identi.ca
     License:       GPL-3

*  x11-plugins/pidgin-mpris
     Latest version available: 0.2.6
     Latest version installed: [ Not Installed ]
     Size of files: 207 KiB
     Homepage:      http://m0n5t3r.info/work/pidgin-mpris/
     Description:   Gets current song from MPRIS-aware media players
     License:       GPL-2

*  x11-plugins/pidgin-musictracker
     Latest version available: 0.4.22
     Latest version installed: [ Not Installed ]
     Size of files: 711 KiB
     Homepage:      https://code.google.com/p/pidgin-musictracker/
     Description:   A Pidgin now playing plugin to publicise the songs you are listening
     License:       GPL-2

*  x11-plugins/pidgin-opensteamworks
     Latest version available: 1.7
     Latest version installed: [ Not Installed ]
     Size of files: 231 KiB
     Homepage:      https://github.com/eionrobb/pidgin-opensteamworks
     Description:   Steam protocol plugin for pidgin
     License:       GPL-3

*  x11-plugins/pidgin-otr
     Latest version available: 4.0.2
     Latest version installed: [ Not Installed ]
     Size of files: 504 KiB
     Homepage:      http://www.cypherpunks.ca/otr/
     Description:   (OTR) Messaging allows you to have private conversations over instant messaging
     License:       GPL-2

*  x11-plugins/pidgin-privacy-please
     Latest version available: 0.7.1
     Latest version installed: [ Not Installed ]
     Size of files: 339 KiB
     Homepage:      https://code.google.com/p/pidgin-privacy-please/
     Description:   pidgin plugin to stop spammers from annoying you
     License:       GPL-3

*  x11-plugins/pidgin-rhythmbox
     Latest version available: 2.0
     Latest version installed: [ Not Installed ]
     Size of files: 314 KiB
     Homepage:      http://jon.oberheide.org/pidgin-rhythmbox/
     Description:   automatically update your pidgin profile with current info from Rhythmbox
     License:       GPL-2

*  x11-plugins/pidgin-sipe
     Latest version available: 1.25.0-r1
     Latest version installed: [ Not Installed ]
     Size of files: 1,363 KiB
     Homepage:      http://sipe.sourceforge.net/
     Description:   Pidgin Plug-in SIPE (Sip Exchange Protocol)
     License:       GPL-2

*  x11-plugins/pidgin-skypeweb
     Latest version available: 1.7
     Latest version installed: [ Not Installed ]
     Size of files: 291 KiB
     Homepage:      https://github.com/EionRobb/skype4pidgin
     Description:   SkypeWeb Plugin for Pidgin
     License:       GPL-3+

*  x11-plugins/pidgin-telegram
     Latest version available: 1.4.6
     Latest version installed: [ Not Installed ]
     Size of files: 487 KiB
     Homepage:      https://github.com/majn/telegram-purple
     Description:   A libpurple protocol plugin that adds support for the Telegram messenger
     License:       GPL-2+

*  x11-plugins/pidgin-window_merge
     Latest version available: 0.3
     Latest version installed: [ Not Installed ]
     Size of files: 322 KiB
     Homepage:      https://github.com/dm0-/window_merge
     Description:   A Pidgin plugin that merges the Buddy List window with a conversation window
     License:       GPL-3

*  x11-plugins/pidgin-xmpp-receipts
     Latest version available: 0.8
     Latest version installed: [ Not Installed ]
     Size of files: 16 KiB
     Homepage:      https://github.com/noonien-d/pidgin-xmpp-receipts
     Description:   Implementation of xmpp message delivery receipts (XEP-0184) for Pidgin
     License:       GPL-3

*  x11-plugins/pidgintex
     Latest version available: 1.1.2_p20170107
     Latest version installed: [ Not Installed ]
     Size of files: 50 KiB
     Homepage:      https://github.com/Micket/pidgintex
     Description:   Pidgin plugin to render LaTeX expressions in messages
     License:       GPL-3+

*  x11-themes/pidgin-penguins-smileys
     Latest version available: 1.0
     Latest version installed: [ Not Installed ]
     Size of files: 257 KiB
     Homepage:      https://gnome-look.org/content/show.php?content=62566
     Description:   Penguins pidgin smiley theme
     License:       GPL-1+

[ Applications found : 27 ]

There are many source packages related to pidgin.

More examples

root # sisyphus search google-chrome -q -f all

Search the entire database for for Google Chrome, but display the results in a compacted way, without description

root # sisyphus search "" -q -f available

Since no search term was provided, it will display all the binary packages in the repository, which are NOT installed on the system. The results are displayed in a compacted way, without description.

root # sisyphus search "" -d browser -f all

Search the entire database for packages which have the word "browser" in their description.

Notes

In default search mode, only one search term can be used at a time. If more than one search terms are provided, only the first one will be matched, ignoring the rest.

root # sisyphus search opera chromium -q -f all
Searching all packages ... 

Package                                       Installed            Available
www-client/opera                              None                 77.0.4054.146

Found 1 matching package(s) ...

In '--ebuild' search mode, more than one search terms can be used, however this mode is slightly slower, and you loose the filtering capabilities from the default search mode.

Bash will expand a single * character as current folder listing. To use filtering you must escape it, or surround it with quotes, or use an empty string.

sisyphus search * -f installed          # this is not valid!
sisyphus search \* -f alien             # OK
sisyphus search '*' -f available        # OK
sisyphus search "" -f upgradeable       # OK

Portage

The '--ebuild' search mode is wrapped form of :

root # emerge --search PACKAGE

Portage can also search descriptions :

root # emerge --searchdesc TEXT

For more information, please read https://wiki.gentoo.org/wiki/Portage

While the '--ebuild' search mode is wrapped from Portage, the default search mode (with the filtering and description search methods) is not. It is a Sisyphus specific implementation to search in its own database.

SPM database sync

Sync Sisyphus's package database with Portage's package database. When you install something with Portage directly (emerge), Sisyphus is not aware of that package, and it doesn't track it in it's database. Use this command to synchronize Sisyphus's package database with Portage's package database.

Usage

root # sisyphus spmsync [OPTIONS]

Options

--help: Show this message and exit.

Help

root # sisyphus spmsync --help

Examples

root # sisyphus smpsync

Portage

None, not required. Sisyphus creates its database by taking information from Portage's database (for local packages) and Redcore Linux's online servers (for remote packages). Portage is the heart of Redcore Linux, and since the binary packages Sisyphus installs are actually created with Portage on Redcore Linux's servers and installed in the background by Portage itself via wrapped methods, it already knows everything it needs to know.

System information

Display information about installed core packages and portage configuration.

Usage

root # sisyphus sysinfo [OPTIONS]

Options

--help: Show this message and exit.

Help

root # sisyphus sysinfo --help

Examples

root # sisyphus sysinfo

Portage

root # emerge --info --verbose

Uninstall packages

Update system

Update the Portage tree, the Redcore Overlay(s), Portage configuration files and Sisyphus's package database.

Usage

root # sisyphus update [OPTIONS]

Options

--help: Show this message and exit.

Help

root # sisyphus update --help

Examples

root # sisyphus update

Portage

root # emerge --sync

Upgrade system