Sabayon: Converting to Hybrid Source/Binary Package Management System

Published: Oct. 1, 2015, 6 p.m.

Updated: None

After using Sabayon 14.08 for several months, I became increasingly frustrated with the lack of software in Sabayon's repositories which I had become accustomed to being available in other distributions' default repositories. There wasn't even a method for building binary packages from third party or upstream source using a simple tool like rpmbuild for RPM based distributions for installation and management by the system package manager. This article describes one way to mitigate the lack of adequate number of binary packages in Sabayon -- converting the system to use hybrid binary/source package management.


Introduction

When Sabayon 15.10 was released, I decided to try it again, but this time with a commitment to learn the Gentoo foundation because maybe the limitation that lead to my frustration with Sabayon was not its limitation but mine in not knowing it well. So I learned how to safely build a binary package using Portage for installation by Entropy. I also decided to convert the Sabayon installations to hybrid source/binary package management. However, I don't think I'll ever need to take advantage of this conversion as the method referred to in the previous link is adequate to get the software I need or even to customize packages for my use case.

In any case, the conversion process is described in this article. Note the following warnings from Sabayon:

  • Never use Portage to update Portage, i.e. never use emerge portage because the version of Portage included in Sabayon is different from that included by Gentoo.
  • Make backups of all files edited during this process, as Entropy may overwrite these files during updates.
  • Do not install system packages using the source package management. Install dependencies that would be installed by the source package management using Entropy tools first.

System-Wide Procedure

In a hybrid source/binary Sabayon system, where the primary package management is performed through the Entropy tools equo and rigo, with occasional source PM, there is a procedure for installing each package that needs to be performed as discussed in the next section. There is also a system-wide configuration change that also needs to be made first before installing packages through Portage in order to avoid a conflict between the two package management systems.

This is to modify a setting in the file
/etc/entropy/client.conf
In this file, the line

#ignore-spm-downgrades =
should be changed to
ignore-spm-downgrades = enable
.

In addition, it is important to consider that after installing packages using Portage tools and at some subsequent point upgrading the system with Entropy tools will revert changes made by Portage. To prevent that from happening chose to keep the old conf file when Entropy asks to run equo conf update. Or, compare the differences between the new and old conf files and if necessary, merge accordingly. This is actually a consideration that needs to be made even when Sabayon is strictly used as a binary package system.


Per-Package Procedure

The above system-wide change will prevent Entropy binary package management from downgrading installations performed through the Portage source package management operation. Now individual packages can be installed using Portage as follows:

  1. if customization of the package to be installed is desired, add the package to be installed to the file
    /etc/portage/package.use/oo-sabayon.package.use
    using the appropriate USE or -USE flags
    • adding packages to this file overrides the default system-wide USE or - USE
    • if /etc/portage/package.use/00-sabayon.package.use is a directory, edit /etc/portage/package.use/00-sabayon.package.use/00-sabayon.package or create another file in the folder to edit
  2. next, add the package to the file /etc/entropy/packages/package.mask
  3. search for dependencies to be installed using Entropy tools by looking at the Gentoo's Packages page and noting the dependencies in the listed USE flags.
    • looking at this page will also give available versions and other information
  4. install dependencies found in the above step using Entropy tools Equo or Rigo
  5. update the Portage Tree with
    emerge --sync
  6. now the actual installation command, i.e.
    emerge packagename
    or
    emerge package-category/packagename
  7. finally, add package installations and removals made with Portage to the Entropy database with
    equo rescue spmsync --ask


Conclusion

The strength of Sabayon is that it gives users the extremely flexible and configurable Gentoo as the foundation of the system but with the convenience of a simple initial installation from binary packages through a GUI installer. To get the most benefit from Sabayon and use it to its potential, it is best to learn and use some of the source based package management functions of Portage. With care, users can use the method described here to gain the benefits of Portage package management without committing to a completely source based system and losing the convenience of Sabayon's additions to the Gentoo base system.