Major EO - Project Oriented Package Management
068c77363c49 — Leonard Ritter default tip 10 hours ago
* added `majoreo-unstable` to packages
118945d57525 — Leonard Ritter 10 hours ago
* fixed bogus duplicate shortcut error message when updating recipes with shortcuts
5a56c0e806b7 — Leonard Ritter 4 months ago
* always use unzip, even on mingw




#Major EO

Major EO, or eo for short, is a lightweight agnostic package manager for use in personal and commercial projects, meant to aid developers with rolling out their codebase on polygenous development environments.


eo ships as a single binary or as a single script for Python 3.8 or higher.

Stable (Version 0.13):

Unstable (most recent):


  • Full control: no central repository, recipes and packages can be shipped with projects.
  • Pure functional scripting language based on SLN Syntax makes writing new package recipes easy.
  • Easy to use command-line interface comparable to apt-get.
  • Supports bootstrapping environment from downloadable recipe.
  • Can download and extract git and hg archives, export from subversion repositories, create directories and execute shell commands in order to build packages.
  • Downloads and packages are cached for fast repeated rebuilds, installations and removals.
  • Maintains package dependencies through non-incremental versioning of packages.


For popular extraction features to work, the tools tar, unzip, hg, git and svn should be in your PATH variable.

#Quickstart Guide

To prepare a new project for use with eo, execute eo init in the project directory or eo init --dest path/to/new/directory to create a new one. The following commands must then be executed within the projects directory structure.

To install new packages, you must first put recipes in the default recipe directory recipes. Have a look at testing/recipes/*.eo in the archive for examples. The testing folder is a valid eo project to try things out in.

Recipes can be directly imported from a URL to a trusted downloadable recipe, using eo import <URL>.eo. You can also install eo itself using the shortcut eo import majoreo.

List all packages with eo search or search for particular package names with eo search <pattern>, where pattern is a regular expression.

Install a package using eo install <package-name> ..., and remove it with eo remove <package-name> .... Installing a package will build it once, and then reuse the package archive.

eo status lists all presently installed packages.

Recipes with update support can be updated with eo update, downloading the latest version of the recipe from its specified update-url.

Synchronize all packages whose versions have changed using eo sync. This can be an upgrade or a downgrade, depending on what the recipe specifies.

To sync a package even though its version has not changed, which is often necessary for debugging, use eo build <package-name> --force to rebuild the package, followed by eo sync <package-name> --force to force removal of the old and installation of the new package.

If the configuration file .eo/eorc exists, it will be used to change default settings. Presently, only the recipe path is configurable.

#Help & Support

For help, questions, bug reports and feedback: