Portál AbcLinuxu, 26. října 2025 08:49
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...
. Je tedy velmi jednoduche dohledat knihovny, ktere nejsou vyuzivany. Ale funguje to jen za predpokladu, ze vyuzivate pouze debiani balickovaci system nebo si pamatujete, ktere knihovny nesmite odstranit.
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 leaf
Ale 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.