Libzypp NG
From openSUSE
Contents |
[edit]
Libzypp -- Next Generation
This page is intended as a discussion platform for developers interested in package management.
It explicitly does not make any promises to fix mentioned bugs, provide discussed requirements, or actually implement any of the proposed solutions.
[edit]
Known problems
- the order does not indicate importance -
- Speed
- Memory consumption
- Inconvenient APIs
- Refactoring needed
esp. implementation of sources - Mixed semantics
e.g. Source init and referesh, Target resolvables and commit - Solver intransparent
make existing information better visible - Atoms
to be replaced by conditional dependencies - Library too big
split into download, parse, consume, refresh
[edit]
Requirements
- the order does not indicate importance - - the numbers are purely for reference -
- Speed
- Handle lots of repositories with lots of packages
- Better user feedback
- Support GUI/CLI/CIM
- Tighten coupling of patches to Pkg/Msg/Script
- Small memory footprint
- Proper locks
- Security (signed sources, packages, etc.)
- Repository prioritization
- Conditional dependencies / more expressive dependencies
- Faster dependency solving
- Unix philosophy (set of small tools)
- Community involvement
- Role based access
- chroot environment / set up virtual images
[edit]
Proposed Solutions
- numbers in parantheses reference requirements above -
- Factor out repository handling
- Repository manager handles add/refresh/remove incl. downloading/parsing (1, 2, 12)
- Repository and package management are separate (12)
- Parse asynchronously to database, dependency solver operates on database (1, 2, 12)
- Asynchronous refresh
- Transaction based
- no more static ResStatus (1, 6)
- no more all resolvables in memory (1, 6)
- no more static pool (1, 6)
- stateless operation, state is in application instead of library (1, 6)
- Dependency expressions (10)
- no more freshens (5, 10)
- no more atoms (5, 10)
- support conditionals (if/then) (5, 10)
- support and/or (5, 10)
- Query based API
- Don't iterate over pool, but query for it (1, 4, 6)
- Cache query results (optional) (1)
- Policies
- Default policies -> sysconfig policies -> runtime policies (4)
- for repo refresh (e.g. when to refresh, how often)
- for solving (e.g. choosing the best package)
- for commit (e.g. alternate download/install or download all/install all)
- for caching (what to cache, how much to cache)
- for repo priorities
[edit]
Implementation
See here for details.
[edit]
Further links
Abort repo download too slow/big Need source prio Strange (too hard?) deps Pattern/Detail UI confusing Repository types

