Portál AbcLinuxu, 10. května 2025 06:05
urpmi_rpm-find-leaves
.
Předpokládám, že jiné systémy pro řešení závisostí (yum, apt) mají něco podobného, ale nepoužívám...
for x in `rpm -qa`; do rpm --test -e $x 2>/dev/null && echo $x; doneLze z nich vybrat jen ty v sekci System/Libraries, System Environment/Libraries, nebo jak se to kde jmenuje. Ale kdyby měl člověk psát něco pořádného, měl by použít pythoní API, protože to je mnohem efektivnější než tisíc spouštění příkazu rpm...
import rpm def find_leaves(ts): req_lookup = {} for header in ts.dbMatch(): requirements = header[rpm.RPMTAG_REQUIRENAME] if requirements: for r in requirements: req_lookup[r] = None orphans = [] for header in ts.dbMatch(): pkg_required = False for pkg in header[rpm.RPMTAG_PROVIDES] + header[rpm.RPMTAG_FILENAMES]: if req_lookup.has_key(pkg): pkg_required = True; break if not pkg_required: orphans.append(header['name']) return orphans leaves = find_leaves(rpm.ts()) leaves.sort() for leaf in leaves: print leafAle skript najde míň balíčků než one-liner od Yetiho. Vidíte chybu?
rpm -q --whatrequires $( rpm -q --provides balík | sed 's/ .*//' ; rpm -ql balík ) | grep -v "no package requires "Pro všechny to bude ve smyčce, kde budete kontrolovat, zda je výsledek prázdný.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.