smart-oxe /

Filename Size Date modified Message
375 B
10.8 KB
17.6 KB
313 B
2.7 KB
399 B
71 B
2.4 KB
5.2 KB



  • Modular.
  • Interface creation is simple.
  • Backend based, completely package-manager-agnostic.
  • Easily portable for any package manager.

Priority system:

  • Packages with higher priorities are considered a better option even when package versions state otherwise.
  • Using priorities one may avoid unwanted upgrades, force downgrades, select packages in given channels as preferential, and other kinds of interesting setups.
  • When a package has no explicit priority, the channel priority is used. The channel priority may be changed using the 'channel' command, and defaults to 0 when not set.

Mirror system:

  • Mirrors are URLs that supposedly provide the same contents as are available in other URLs, named origins.
  • There is no internal restriction on the kind of information which is mirrored. Once an origin URL is provided, and one or more mirror URLs are provided, these mirrors will be considered for any file which is going to be fetched from an URL starting with the origin URL.
  • Whether the mirror will be chosen or not will depend on the history of downloads from this mirror and from other mirrors for the same URL.
  • Mirrors are automatically balanced so that the faster mirrors and with less errors are chosen.
  • When errors occur, the next mirror is tried.

Cache system:

  • Recognizes multiple versions of the same package name.
  • Package names decoupled from the upgrade procedure. Only thing that matters is upgrades relations, which are introduced implicitly by the loader system, when necessary.

Dependency solving algorithm:

  • Very fast.
  • Works by computing weights for different alternatives.
  • Different notions of weight implemented by separate policies. Policies for upgrading, removing and installing are implemented.
  • Upgrades select the best option, not the latest available version.
  • Algorithm is smart enough to even reinstall a package if necessary, if it detects that different packages with same name-version have different relations, and the one not installed is a better option.
  • Works with broken packages in the system. Only packages which are related to the operations being made will be checked for correctness (may be instructed to fix everything if desired).

Downloading system:

  • Very fast

  • Easily extensible

  • Multi-threaded

  • Download resuming

  • Timestamp checking

  • Parallel threaded uncompression

  • Natively supported schemes:
    • file
    • ftp
    • http
    • https
    • scp
  • Additional schemes when pycurl is available:
    • ftps
    • telnet
    • dict
    • ldap

Supported channel/repository formats

  • RPM metadata
  • Plain RPM header lists
  • Local directory with RPM files
  • Red Carpet
  • Slackware Package Repository