Difference between revisions of "Sisyphus"
Line 104: | Line 104: | ||
Invalid branch - binhost pairing; Use 'sisyphus branch --help' for help; Quitting. | Invalid branch - binhost pairing; Use 'sisyphus branch --help' for help; Quitting. | ||
====Portage==== | ====Portage equivalent==== | ||
Portage has branches, but they work in a different way. See [https://wiki.gentoo.org/wiki/KEYWORDS https://wiki.gentoo.org/wiki/KEYWORDS] for details. | |||
====Warning==== | ====Warning==== |
Revision as of 03:29, 4 July 2021
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 equivalent
Portage has branches, but they work in a different way. See https://wiki.gentoo.org/wiki/KEYWORDS for details.
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