Штука для тех, кто хочет видеть свою rpm-based-систему стройную, как серна ;-)
Т.е. – ни байта лишнего.
Есть наработки для Alt Linux? и FC5/6, но работают не идеально:
- показывают «верхними» (т.е. теми, от которых никто не зависит) пакеты, от которых таки кто-то зависит.
- не показывают никому не нужные пакеты.
Не очень много, но всё равно неприятно :-(
Если есть желание – приглашаю к обсуждению.
Functions
- show all rpms (faster then rpm -qa).
- show “tops” rpms – which no one other rpm depends on.
- [rpm tree for graphviz]
Roadmap
- make python app to explore rpms
- make python variant of Rpm Optimizer?
- make C++ variant of Rpm Optimizer?
- tuning (profiling)
Done
- try bash () – very, very slow
- Packages: rpm -qa
- Provides: rpm -ql <pkg> && rpm -q --provides
- Requires: rpm -q --requires
- man graphviz – OK but need optimize object qty
Tests
Test of list all pkgs and their provides/requires
Pkgs: 1061
python: 11.5"
bash: 5'27.5»
Output
dot -T<lang> -o <outfile> <file>
lang=ps,svg,fig
Ideas
Shortcuts
- rpm: package
- RS: Required Services – services, required by pkg (rpm -q --requires rpm | grep -v ^/ | gawk '{print $1}')
- RF: Required Files – files, required by pkg (rpm -q --requires rpm | grep ^/)
- PS: Provided Service – services, provided by pkg (rpm -q --provides rpm | gawk '{print $1}')
- PF: Provided Files – files, provided by pkg (rpm -q --provides rpm | gawk '{print $1}')
- 1, ?, +, *: multiplycity (1, 0 or 1, 1+, 0+) – qty of the service/file in 1 rpm or all rpms
?
- rpm: can B several rpms w/ the same name, but different versions.
- RS: 0|1(?)/rpm; can require own PS (loopback)
- RF: */rpm; loopback
- PS: 0|1(?)/rpm; */all (can be provided by several rpms)
- PF: 0|1(?)/rpm; */all
??
- result includes only need services and files
???
- Input: get all rpms, their RS, RF, PS, PF – in strings
- Resort:
- Output: