Portál AbcLinuxu, 30. října 2025 00:38
Hodí se, pokud potřebujete soubor XY, ale nevíte, který balík nainstalovat. Příklad:
$ yum-file bin/gnome-help yelp-2.10.0-1 $ yum-file freetype2.pc freetype-devel-2.1.9-2 $ yum-file /usr/bin/perlcc perl-5.8.6-15
Update: To samé umí i yum whatprovides, takže ani dál nečtěte.
$ cat ~/bin/yum-file
#!/bin/bash
if test "x$1" = "x-v"; then
shift
verbose="echo"
else
verbose=":"
fi
if test "$#" != 1; then
echo "Usage: $0 [-v] FILENAME" >&2
exit 1
fi
dir="`dirname "$1"`"
file="`basename "$1"`"
case "$dir" in
.) dir_query="";;
/*) dir_query="dirname=\"$dir\" AND ";;
*) dir_query="dirname LIKE \"%$dir\" AND";;
esac
for db in /var/cache/yum/*/filelists.xml.gz.sqlite; do
$verbose "Searching in $db"
primary="${db/filelists/primary}"
sqlite3 -separator - "$db" "
ATTACH \"$primary\" AS \"primary\";
SELECT name, version, release
FROM \"primary\".packages
WHERE pkgKey IN
(SELECT pkgKey
FROM filelist
WHERE $dir_query filenames LIKE \"%$file%\");"
done
PS: Vím, že to neošetřuje speciální znaky ve vstupu.
PPS: Nevíte, jak yum donutit, aby vygeneroval ty filelisty? Asi to dělá, jenom když je potřebuje.
Tiskni
Sdílej:
Typický případ: potřebuju zjistit přesné jméno nějakého balíčku, který chci nainstalovat (podle jména programu). Přes yum je to k uzoufání.
man yum
provides or whatprovides
Is used to find out which package provides some feature or file.
Just use a specific name or a file-glob-syntax wildcards to list
the packages available or installed that provide that feature or
file.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.