- Interface creation is extremely simple.
- Backend based, completely package-manager-agnostic.
- Easily portable for any package manager.
- Transaction based.
- Recognizes multiple versions of the same package name.
- Package names decoupled from the upgrade procedure. Only thing that matters is obsoletes 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.
- Works with broken packages in the system. Only packages which are related to the operations being made will be checked for correctness.
Parallel threaded uncompression
- Natively supported schemes:
- Additional schemes when pycurl is available:
Supported channel/repository formats
- RPM metadata
- Plain RPM header lists
- Red Carpet