Skip to content
Zentoo Linux is a variant of Gentoo Linux with an emphasis on server deployment on x86_64 platforms
Shell Groff Mask C Awk Ruby Other
Find file
Latest commit ca98c35 Apr 30, 2016 @hollow hollow remove plist dep from chef
Failed to load latest commit information.
app-admin
app-arch
app-backup
app-benchmarks sync with gentoo Mar 4, 2016
app-crypt
app-doc
app-editors
app-emulation
app-eselect sync with gentoo Mar 4, 2016
app-misc
app-portage update base profile packages Mar 5, 2016
app-shells sync with gentoo Feb 19, 2016
app-text sync with gentoo Mar 4, 2016
app-vim
cache
dev-db
dev-go
dev-lang
dev-libs
dev-perl remove obsolete dependencies Mar 7, 2016
dev-python
dev-ruby
dev-scheme/guile
dev-util
dev-vcs
eclass
gnome-base
licenses
mail-client
mail-mta
media-fonts
media-gfx sync with gentoo Mar 4, 2016
media-libs
metadata
net-analyzer
net-dialup/mingetty sync with gentoo Feb 19, 2016
net-dns
net-firewall
net-fs sync with gentoo Feb 19, 2016
net-ftp
net-irc/irssi sync with gentoo Mar 4, 2016
net-libs
net-mail sync with gentoo Feb 19, 2016
net-misc
net-nds sync with gentoo Mar 4, 2016
perl-core
profiles
scripts @ 0e98fcb
sys-apps
sys-auth
sys-block
sys-boot
sys-cluster move java ebuilds to overlay Jul 4, 2015
sys-devel
sys-fs
sys-kernel
sys-libs
sys-power sync with gentoo Mar 4, 2016
sys-process
virtual
www-client
www-misc/fcgiwrap
www-servers
x11-libs
x11-misc/shared-mime-info
.eupdate.blacklist
.eupdate.expand.sh
.gitignore
.gitmodules
README.md virtualbox: do not depend on virtualbox modules Nov 3, 2013
docker.sh
header.txt
overlay.xml add overlay.xml Oct 14, 2014

README.md

Zentoo Linux

Zentoo Linux is a variant of Gentoo Linux with an emphasis on server deployment on x86_64 platforms.

Just like Gentoo Linux it is a source based Linux distribution with a live package tree. Zentoo Linux is at the same time more conservative and more bleeding-edge. Package updates tend to happen in batches that are known to work and are supported by ZenOps Chef. Still package versions tend to be more up-to-date and new server-related packages have been added to the tree.

Zentoo uses systemd exclusively. OpenRC is still installed for various helper scripts though. As soon as Gentoo has fixed Bug 373219 we will remove OpenRC support completely.

Zentoo also provides a binary kernel image (sys-kernel/zentoo-image) with VirtualBox modules, a Dracut initramfs and a pkg_config action that detects and installs a boot loader, fstab and everything else that is neccesary to boot.

Usage

Zentoo provides stages and images that can be used in the same way as Gentoo. You can simply follow the Gentoo Handbook or you can use tools like Quickstart to bootstrap your servers.

Download Zentoo stages and images from the ZenOps mirror. This mirror also contains the portage rsync module and distfiles:

  • SYNC="rsync://mirror.zenops.net/zentoo-portage"
  • GENTOO_MIRRORS="http://mirror.zenops.net/zentoo"

Contributing

To start contributing to Zentoo you need to clone the repository including submodules:

git clone --recursive https://github.com/zentoo/zentoo

The repository contains various helper scripts in the scripts folder which are described below.

Consult the Gentoo Development Guide on how to create and maintain ebuilds.

Keywording Policy

Zentoo does not have a distinction between stable and unstable packages. All packages in the tree are always installable (stable).

Dependency Tree

Zentoo tries very hard to stay lean and fast. After all, most packages in the Gentoo repository are not needed on servers. At the time of writing this the Zentoo repository contained only about 7% (1236) of Gentoos packages. As a result dependency calculation is very fast in Zentoo.

To prevent unnecessary dependencies in the tree we extensively use the following profile files:

  • profiles/releases/zentoo/package.use.mask to mask USE flags on a per-package basis
  • profiles/releases/zentoo/use.mask to mask USE flags globally

Testing

We use Jenkins Continuous Integration to verify every change that is made to the repository. A push will trigger the following tests:

  • ./scripts/scantree full
  • ./scripts/generate-cache
  • update all distfiles
  • a full build of Zentoo stages and images using metro and packer

Using Gentoo ebuilds

In case you want to copy ebuilds from Gentoo, you need to get a local copy of the Gentoo repository using sync-gentoo-cache:

./scripts/sync-gentoo-cache

The cache is now located at cache/gentoo-portage.

Copying ebuilds manually is a very tedious task but also not trivial to automate. Over the years we have developed a hybrid approach to keeping upstream ebuilds in sync. The main entry point is eupdate located in the scripts folder.

Using eupdate takes care of following issues automatically:

  • parsing package versions
  • blacklisting and version expansion
  • copying patches, init scripts, etc
  • copying used eclasses
  • CVS header cleanup
  • keywording
  • manifest generation

In it's simplest form you invoke eupdate with a basic package atom:

./scripts/eupdate app-editors/vim

Version Expansion

In case you want to stick to a specific package version you can specify an advanced atom to eupdate:

./scripts/eupdate =app-editors/vim-7.4.52

Expansions can be made permanent by adding them to profiles/releases/zentoo/eupdate.exand.sh. If you passed a specific version to eupdate it will print the entry you need to add to eupdate.expand.sh.

Blacklisting

In a few cases Zentoo does things differently than Gentoo and packages cannot be copied from the Gentoo repository. To prevent accidental clobbering all packages that should not be touched by eupdate are added to profiles/release/zentoo/eupdate.blacklist.

Something went wrong with that request. Please try again.