Sisyphus

From Redcore Linux Project Wiki
Revision as of 23:01, 3 July 2021 by Venerix (talk | contribs)
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 :
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...
sisyphus autoremove

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.
  • Portage equivalent :
root # emerge --depclean -va
sisyphus branch

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.
  • 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).

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

  • Examples :
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').

  • Examples :
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 :
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.


sisyphus install

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] PKGNAME
  • Options :
-e, --ebuild
--help: Show this message and exit
  • 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 even if you don't want to install any ebuild(source) packages; It will fall back to binary packages only.

  • Portage equivalent :
root # emerge -Gva pidgin (--getbinpkgonly : install pidgin binary, fail if not found)
root # emerge -gva pidgin (--getbinpkg : install pidgin binary if found, compile it from source if not)
root # emerge -va pidgin (compile pidgin from source, ignoring the binary)


sisyphus mirror
sisyphus rescue
sisyphus search
sisyphus spmsync
sisyphus sysinfo
sisyphus uninstall
sisyphus update
sisyphus upgrade